diff --git a/AUTHORS b/AUTHORS
index 2a4eb26..580f2ff9 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -371,6 +371,7 @@
 Jay Oster <jay@kodewerx.org>
 Jay Soffian <jaysoffian@gmail.com>
 Jeado Ko <haibane84@gmail.com>
+Jeffrey C <jeffreyca16@gmail.com>
 Jeongeun Kim <je_julie.kim@samsung.com>
 Jeongmin Kim <kimwjdalsl@gmail.com>
 Jeongwoo Park <skeksk91@gmail.com>
diff --git a/DEPS b/DEPS
index 950ce06..e422228 100644
--- a/DEPS
+++ b/DEPS
@@ -105,11 +105,11 @@
   # 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': 'd7425b58df89b1cf67cf9a8b0a055c1d071a6d88',
+  'skia_revision': '94d57c477fe122c146a034c625cebb6c44ef21b0',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '7ce703efb495d2227b92777f8bb5e7b1c1823497',
+  'v8_revision': 'fe51067f43e7208d06977d5036726360a4539d7b',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -117,7 +117,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': '92da844eb7543d2ac39fe2ae9c62edd3a3b6891f',
+  'angle_revision': '2b06054dd41f3c26d656f4ed7043a90e1f934f07',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling build tools
   # and whatever else without interference from each other.
@@ -129,7 +129,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': '65f38c8fae09cf727a9ccc34587ae1ed9027b655',
+  'pdfium_revision': 'd77e0ed72f73fb63305d04953ef03e2edab82d34',
   # 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.
@@ -161,11 +161,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling HarfBuzz
   # and whatever else without interference from each other.
-  'harfbuzz_revision': '957e7756634a4fdf1654041e20e883cf964ecac9',
+  'harfbuzz_revision': '2cb075fe26201f3e370fccfff6c1bc242b5acc79',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': 'cbfa46069e2bfc4da5704f278b378b1fdf758521',
+  'catapult_revision': '9f46241c6c03d9ffb2422e85a362f0bab5d4215f',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -913,7 +913,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' +  'ce3f7b384d77f66d760bf07eeadeb4b66f239c98',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' +  '24b373394918979fdaabb1480fc65a3dd41113a0',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78',
@@ -1035,7 +1035,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'a5c263cc63ffc2cc189b5214074c8792067c1853',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '0ea751539e3a2e00d0449942b4c6993512e37b64',
+    Var('webrtc_git') + '/src.git' + '@' + '3bc977a420229a9dd45dd64159aba45e210fe3dc',
 
   'src/third_party/xdg-utils': {
       'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d',
diff --git a/android_webview/browser/aw_contents_client_bridge_unittest.cc b/android_webview/browser/aw_contents_client_bridge_unittest.cc
index c24d1a7..592d3107 100644
--- a/android_webview/browser/aw_contents_client_bridge_unittest.cc
+++ b/android_webview/browser/aw_contents_client_bridge_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/android/scoped_java_ref.h"
 #include "base/bind.h"
 #include "base/macros.h"
+#include "base/memory/ptr_util.h"
 #include "base/run_loop.h"
 #include "content/public/browser/client_certificate_delegate.h"
 #include "content/public/test/test_browser_thread_bundle.h"
diff --git a/android_webview/browser/aw_render_thread_context_provider.cc b/android_webview/browser/aw_render_thread_context_provider.cc
index e994ff4..b4a2e95 100644
--- a/android_webview/browser/aw_render_thread_context_provider.cc
+++ b/android_webview/browser/aw_render_thread_context_provider.cc
@@ -28,13 +28,13 @@
 scoped_refptr<AwRenderThreadContextProvider>
 AwRenderThreadContextProvider::Create(
     scoped_refptr<gl::GLSurface> surface,
-    scoped_refptr<gpu::InProcessCommandBuffer::Service> service) {
-  return new AwRenderThreadContextProvider(surface, service);
+    scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor) {
+  return new AwRenderThreadContextProvider(surface, std::move(task_executor));
 }
 
 AwRenderThreadContextProvider::AwRenderThreadContextProvider(
     scoped_refptr<gl::GLSurface> surface,
-    scoped_refptr<gpu::InProcessCommandBuffer::Service> service) {
+    scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor) {
   DCHECK(main_thread_checker_.CalledOnValidThread());
 
   // This is an onscreen context, wrapping the GLSurface given to us from
@@ -65,10 +65,10 @@
   limits.start_transfer_buffer_size = 64 * 1024;
   limits.min_transfer_buffer_size = 64 * 1024;
 
-  context_ = gpu::GLInProcessContext::CreateWithoutInit();
-  context_->Initialize(service, surface, surface->IsOffscreen(),
-                       gpu::kNullSurfaceHandle, attributes, limits, nullptr,
-                       nullptr, nullptr, nullptr);
+  context_ = std::make_unique<gpu::GLInProcessContext>();
+  context_->Initialize(std::move(task_executor), surface,
+                       surface->IsOffscreen(), gpu::kNullSurfaceHandle,
+                       attributes, limits, nullptr, nullptr, nullptr, nullptr);
 
   context_->GetImplementation()->SetLostContextCallback(base::BindOnce(
       &AwRenderThreadContextProvider::OnLostContext, base::Unretained(this)));
diff --git a/android_webview/browser/aw_render_thread_context_provider.h b/android_webview/browser/aw_render_thread_context_provider.h
index ac544255..1826dba 100644
--- a/android_webview/browser/aw_render_thread_context_provider.h
+++ b/android_webview/browser/aw_render_thread_context_provider.h
@@ -36,7 +36,7 @@
  public:
   static scoped_refptr<AwRenderThreadContextProvider> Create(
       scoped_refptr<gl::GLSurface> surface,
-      scoped_refptr<gpu::InProcessCommandBuffer::Service> service);
+      scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor);
 
   // Gives the GL internal format that should be used for calling CopyTexImage2D
   // on the default framebuffer.
@@ -61,7 +61,7 @@
 
   AwRenderThreadContextProvider(
       scoped_refptr<gl::GLSurface> surface,
-      scoped_refptr<gpu::InProcessCommandBuffer::Service> service);
+      scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor);
   ~AwRenderThreadContextProvider() override;
 
  private:
diff --git a/android_webview/browser/deferred_gpu_command_service.cc b/android_webview/browser/deferred_gpu_command_service.cc
index 299210c..77a8da02 100644
--- a/android_webview/browser/deferred_gpu_command_service.cc
+++ b/android_webview/browser/deferred_gpu_command_service.cc
@@ -82,11 +82,11 @@
     const gpu::GpuPreferences& gpu_preferences,
     const gpu::GPUInfo& gpu_info,
     const gpu::GpuFeatureInfo& gpu_feature_info)
-    : gpu::InProcessCommandBuffer::Service(gpu_preferences,
-                                           nullptr,
-                                           nullptr,
-                                           gpu_feature_info),
-      sync_point_manager_(new gpu::SyncPointManager()),
+    : gpu::CommandBufferTaskExecutor(gpu_preferences,
+                                     gpu_feature_info,
+                                     nullptr,
+                                     nullptr),
+      sync_point_manager_(std::make_unique<gpu::SyncPointManager>()),
       gpu_info_(gpu_info) {}
 
 DeferredGpuCommandService::~DeferredGpuCommandService() {
@@ -200,14 +200,6 @@
   }
 }
 
-void DeferredGpuCommandService::AddRef() const {
-  base::RefCountedThreadSafe<DeferredGpuCommandService>::AddRef();
-}
-
-void DeferredGpuCommandService::Release() const {
-  base::RefCountedThreadSafe<DeferredGpuCommandService>::Release();
-}
-
 bool DeferredGpuCommandService::BlockThreadOnWaitSyncToken() const {
   return true;
 }
diff --git a/android_webview/browser/deferred_gpu_command_service.h b/android_webview/browser/deferred_gpu_command_service.h
index 57bf896..6fb5c5f 100644
--- a/android_webview/browser/deferred_gpu_command_service.h
+++ b/android_webview/browser/deferred_gpu_command_service.h
@@ -13,10 +13,10 @@
 #include "base/containers/queue.h"
 #include "base/lazy_instance.h"
 #include "base/macros.h"
-#include "base/memory/ref_counted.h"
 #include "base/threading/thread_local.h"
 #include "base/time/time.h"
 #include "gpu/config/gpu_info.h"
+#include "gpu/ipc/command_buffer_task_executor.h"
 #include "gpu/ipc/in_process_command_buffer.h"
 
 namespace gpu {
@@ -41,9 +41,7 @@
   DISALLOW_COPY_AND_ASSIGN(ScopedAllowGL);
 };
 
-class DeferredGpuCommandService
-    : public gpu::InProcessCommandBuffer::Service,
-      public base::RefCountedThreadSafe<DeferredGpuCommandService> {
+class DeferredGpuCommandService : public gpu::CommandBufferTaskExecutor {
  public:
   static DeferredGpuCommandService* GetInstance();
 
@@ -60,8 +58,6 @@
   // idle tasks during the idle run.
   void PerformAllIdleWork();
 
-  void AddRef() const override;
-  void Release() const override;
   bool BlockThreadOnWaitSyncToken() const override;
 
   const gpu::GPUInfo& gpu_info() const { return gpu_info_; }
@@ -70,7 +66,6 @@
 
  protected:
   ~DeferredGpuCommandService() override;
-  friend class base::RefCountedThreadSafe<DeferredGpuCommandService>;
 
  private:
   friend class ScopedAllowGL;
diff --git a/ash/app_list/BUILD.gn b/ash/app_list/BUILD.gn
index e27571d..9aa22d3 100644
--- a/ash/app_list/BUILD.gn
+++ b/ash/app_list/BUILD.gn
@@ -193,6 +193,7 @@
     "pagination_model_unittest.cc",
     "test/run_all_unittests.cc",
     "views/app_list_main_view_unittest.cc",
+    "views/app_list_menu_model_adapter_unittest.cc",
     "views/app_list_view_unittest.cc",
     "views/apps_grid_view_unittest.cc",
     "views/folder_header_view_unittest.cc",
diff --git a/ash/app_list/views/app_list_menu_model_adapter.cc b/ash/app_list/views/app_list_menu_model_adapter.cc
index 57e7941..5c9080cb 100644
--- a/ash/app_list/views/app_list_menu_model_adapter.cc
+++ b/ash/app_list/views/app_list_menu_model_adapter.cc
@@ -6,6 +6,7 @@
 
 #include <utility>
 
+#include "ash/public/cpp/app_menu_constants.h"
 #include "ash/public/cpp/menu_utils.h"
 #include "base/metrics/histogram_macros.h"
 #include "ui/views/controls/menu/menu_runner.h"
@@ -92,6 +93,12 @@
 }
 
 bool AppListMenuModelAdapter::IsCommandEnabled(int id) const {
+  // NOTIFICATION_CONTAINER is always enabled. It is added to this model by
+  // NotificationMenuController, but it is not added to |menu_items_|, so check
+  // for it first.
+  if (id == ash::NOTIFICATION_CONTAINER)
+    return true;
+
   return ash::menu_utils::GetMenuItemByCommandId(menu_items_, id)->enabled;
 }
 
diff --git a/ash/app_list/views/app_list_menu_model_adapter_unittest.cc b/ash/app_list/views/app_list_menu_model_adapter_unittest.cc
new file mode 100644
index 0000000..347204a
--- /dev/null
+++ b/ash/app_list/views/app_list_menu_model_adapter_unittest.cc
@@ -0,0 +1,60 @@
+// 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 "ash/app_list/views/app_list_menu_model_adapter.h"
+
+#include "ash/public/cpp/app_menu_constants.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/views/test/views_test_base.h"
+
+namespace app_list {
+
+namespace {
+
+class MockAppListMenuModelAdapterDelegate
+    : public AppListMenuModelAdapter::Delegate {
+ public:
+  MockAppListMenuModelAdapterDelegate() = default;
+  virtual ~MockAppListMenuModelAdapterDelegate() = default;
+
+  void ExecuteCommand(int command_id, int event_flags) override {}
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockAppListMenuModelAdapterDelegate);
+};
+
+}  // namespace
+
+class AppListMenuModelAdapterTest : public views::ViewsTestBase {
+ public:
+  AppListMenuModelAdapterTest() {}
+  ~AppListMenuModelAdapterTest() override = default;
+
+  void SetUp() override {
+    views::ViewsTestBase::SetUp();
+    mock_app_list_menu_model_adapter_delegate_ =
+        std::make_unique<MockAppListMenuModelAdapterDelegate>();
+    app_list_menu_model_adapter_ = std::make_unique<AppListMenuModelAdapter>(
+        "test-app-id", nullptr, ui::MenuSourceType::MENU_SOURCE_TYPE_LAST,
+        mock_app_list_menu_model_adapter_delegate_.get(),
+        AppListMenuModelAdapter::FULLSCREEN_APP_GRID, base::OnceClosure());
+  }
+
+  std::unique_ptr<AppListMenuModelAdapter> app_list_menu_model_adapter_;
+
+ private:
+  std::unique_ptr<MockAppListMenuModelAdapterDelegate>
+      mock_app_list_menu_model_adapter_delegate_;
+
+  DISALLOW_COPY_AND_ASSIGN(AppListMenuModelAdapterTest);
+};
+
+// Tests that NOTIFICATION_CONTAINER is enabled. This ensures that the
+// container is able to handle gesture events.
+TEST_F(AppListMenuModelAdapterTest, NotificationContainerEnabled) {
+  EXPECT_TRUE(app_list_menu_model_adapter_->IsCommandEnabled(
+      ash::NOTIFICATION_CONTAINER));
+}
+
+}  // namespace app_list
diff --git a/ash/login/ui/animated_rounded_image_view.cc b/ash/login/ui/animated_rounded_image_view.cc
index 95bd580..9ff6f1d8 100644
--- a/ash/login/ui/animated_rounded_image_view.cc
+++ b/ash/login/ui/animated_rounded_image_view.cc
@@ -49,8 +49,9 @@
 void AnimatedRoundedImageView::SetAnimationDecoder(
     std::unique_ptr<AnimationDecoder> decoder) {
   decoder_ = std::move(decoder);
-  // Force a new decode.
+  // Force a new decode and repaint.
   frames_scale_ = NAN;
+  SchedulePaint();
 }
 
 void AnimatedRoundedImageView::SetImage(const gfx::ImageSkia& image) {
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc
index 7512142..65a2a1a6 100644
--- a/ash/login/ui/lock_contents_view.cc
+++ b/ash/login/ui/lock_contents_view.cc
@@ -233,8 +233,14 @@
   return view_->main_view_;
 }
 
-LockContentsView::UserState::UserState(AccountId account_id)
-    : account_id(account_id) {}
+LockContentsView::UserState::UserState(const mojom::LoginUserInfoPtr& user_info)
+    : account_id(user_info->basic_user_info->account_id) {
+  fingerprint_state = user_info->allow_fingerprint_unlock
+                          ? mojom::FingerprintUnlockState::AVAILABLE
+                          : mojom::FingerprintUnlockState::UNAVAILABLE;
+  if (user_info->auth_type == proximity_auth::mojom::AuthType::ONLINE_SIGN_IN)
+    force_online_sign_in = true;
+}
 
 LockContentsView::UserState::UserState(UserState&&) = default;
 
@@ -405,13 +411,8 @@
   }
 
   // Build user state list.
-  for (const mojom::LoginUserInfoPtr& user : users) {
-    UserState state(user->basic_user_info->account_id);
-    state.fingerprint_state = user->allow_fingerprint_unlock
-                                  ? mojom::FingerprintUnlockState::AVAILABLE
-                                  : mojom::FingerprintUnlockState::UNAVAILABLE;
-    users_.push_back(std::move(state));
-  }
+  for (const mojom::LoginUserInfoPtr& user : users)
+    users_.push_back(UserState(user));
 
   auto box_layout =
       std::make_unique<views::BoxLayout>(views::BoxLayout::kHorizontal);
diff --git a/ash/login/ui/lock_contents_view.h b/ash/login/ui/lock_contents_view.h
index 46939a0..c679213 100644
--- a/ash/login/ui/lock_contents_view.h
+++ b/ash/login/ui/lock_contents_view.h
@@ -189,7 +189,7 @@
  private:
   class UserState {
    public:
-    explicit UserState(AccountId account_id);
+    explicit UserState(const mojom::LoginUserInfoPtr& user_info);
     UserState(UserState&&);
     ~UserState();
 
diff --git a/ash/shelf/shelf_context_menu_model.cc b/ash/shelf/shelf_context_menu_model.cc
index 136f37eb..bb9e15b5 100644
--- a/ash/shelf/shelf_context_menu_model.cc
+++ b/ash/shelf/shelf_context_menu_model.cc
@@ -8,6 +8,7 @@
 #include <string>
 #include <utility>
 
+#include "ash/public/cpp/app_menu_constants.h"
 #include "ash/public/cpp/ash_pref_names.h"
 #include "ash/public/cpp/menu_utils.h"
 #include "ash/public/cpp/shelf_item_delegate.h"
@@ -143,6 +144,12 @@
 }
 
 bool ShelfContextMenuModel::IsCommandIdEnabled(int command_id) const {
+  // NOTIFICATION_CONTAINER is always enabled. It is added to this model by
+  // NotificationMenuController, but it is not added to |menu_items_|, so check
+  // for it first.
+  if (command_id == ash::NOTIFICATION_CONTAINER)
+    return true;
+
   return menu_utils::GetMenuItemByCommandId(menu_items_, command_id)->enabled;
 }
 
diff --git a/ash/shelf/shelf_context_menu_model_unittest.cc b/ash/shelf/shelf_context_menu_model_unittest.cc
index c8fbead8..16ddc589 100644
--- a/ash/shelf/shelf_context_menu_model_unittest.cc
+++ b/ash/shelf/shelf_context_menu_model_unittest.cc
@@ -4,6 +4,7 @@
 
 #include "ash/shelf/shelf_context_menu_model.h"
 
+#include "ash/public/cpp/app_menu_constants.h"
 #include "ash/public/cpp/config.h"
 #include "ash/public/cpp/shelf_item_delegate.h"
 #include "ash/session/test_session_controller_client.h"
@@ -318,5 +319,14 @@
   EXPECT_EQ(3, menu.GetItemCount());
 }
 
+TEST_F(ShelfContextMenuModelTest, NotificationContainerEnabled) {
+  // Tests that NOTIFICATION_CONTAINER is enabled. This ensures that the
+  // container is able to handle gesture events.
+  ShelfContextMenuModel menu(MenuItemList(), nullptr, GetPrimaryDisplay().id());
+  menu.AddItem(NOTIFICATION_CONTAINER, base::string16());
+
+  EXPECT_TRUE(menu.IsCommandIdEnabled(NOTIFICATION_CONTAINER));
+}
+
 }  // namespace
 }  // namespace ash
diff --git a/ash/strings/ash_strings_ca.xtb b/ash/strings/ash_strings_ca.xtb
index c5cd735..ecedbdd 100644
--- a/ash/strings/ash_strings_ca.xtb
+++ b/ash/strings/ash_strings_ca.xtb
@@ -171,7 +171,7 @@
 <translation id="397105322502079400">S’està calculant...</translation>
 <translation id="3995138139523574647">Dispositiu USB-C (port posterior dret)</translation>
 <translation id="4017989525502048489">Punter làser</translation>
-<translation id="4065525899979931964">{NUM_APPS,plural, =1{S'han desactivat en una aplicació}other{S'han desactivat en # aplicacions}}</translation>
+<translation id="4065525899979931964">{NUM_APPS,plural, =1{Desactivades en una aplicació}other{Desactivades en # aplicacions}}</translation>
 <translation id="4072264167173457037">Senyal mitjà</translation>
 <translation id="4200057768455216496">Has premut la drecera de la lupa acoblada. Vols activar-la?</translation>
 <translation id="4217571870635786043">Dictat</translation>
@@ -363,7 +363,7 @@
 <translation id="8054466585765276473">S'està calculant el temps de la bateria.</translation>
 <translation id="8061464966246066292">Contrast alt</translation>
 <translation id="8098591350844501178">Deixa d'emetre la pantalla a <ph name="RECEIVER_NAME" /></translation>
-<translation id="8113423164597455979">S'han activat en totes les aplicacions</translation>
+<translation id="8113423164597455979">Activades en totes les aplicacions</translation>
 <translation id="8132793192354020517">Connectat a <ph name="NAME" /></translation>
 <translation id="813913629614996137">S'està inicialitzant…</translation>
 <translation id="8142699993796781067">Xarxa privada</translation>
@@ -385,7 +385,7 @@
 <translation id="847056008324733326">Configuració de l'escala de visualització</translation>
 <translation id="8477270416194247200">Prem Alt+Cerca o Maj per cancel·lar.</translation>
 <translation id="8484916590211895857"><ph name="NAME" />: s'està tornant a connectar…</translation>
-<translation id="8513108775083588393">Gira automàticament</translation>
+<translation id="8513108775083588393">Rotació automàtica</translation>
 <translation id="8517041960877371778">És possible que el dispositiu <ph name="DEVICE_TYPE" /> no es carregui mentre està encès.</translation>
 <translation id="8639760480004882931">Queda un <ph name="PERCENTAGE" /></translation>
 <translation id="8649101189709089199">Escolta la selecció</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index cdc4cc5f..a12e154 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -64,7 +64,7 @@
 <translation id="2081529251031312395">$1 kan fortfarande logga in senare.</translation>
 <translation id="2122028596993374965">Sluta casta <ph name="TAB_NAME" /> till <ph name="RECEIVER_NAME" /></translation>
 <translation id="2127372758936585790">Laddning med låg effekt</translation>
-<translation id="2135456203358955318">Dockad skärmförstorare</translation>
+<translation id="2135456203358955318">Dockad skärmförstoring</translation>
 <translation id="2144487987174258011">Starta om för att uppdatera Adobe Flash Player</translation>
 <translation id="2208323208084708176">Enhetligt skrivbordsläge</translation>
 <translation id="2220572644011485463">Pinkod eller lösenord</translation>
diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc
index 36cf967..a686b21 100644
--- a/base/test/launcher/test_launcher.cc
+++ b/base/test/launcher/test_launcher.cc
@@ -321,7 +321,8 @@
   DCHECK(!new_options.job_handle);
 
   zx::job job_handle;
-  zx_status_t result = zx::job::create(GetDefaultJob(), 0, &job_handle);
+  zx_status_t result =
+      zx::job::create(*zx::unowned<zx::job>(GetDefaultJob()), 0, &job_handle);
   ZX_CHECK(ZX_OK == result, result) << "zx_job_create";
   new_options.job_handle = job_handle.get();
 #endif  // defined(OS_FUCHSIA)
diff --git a/build/android/gyp/aidl.py b/build/android/gyp/aidl.py
index d1d7515..1591f245 100755
--- a/build/android/gyp/aidl.py
+++ b/build/android/gyp/aidl.py
@@ -44,13 +44,15 @@
       ]
       build_utils.CheckOutput(aidl_cmd)
 
-    with zipfile.ZipFile(options.srcjar, 'w') as srcjar:
-      for path in build_utils.FindInDirectory(temp_dir, '*.java'):
-        with open(path) as fileobj:
-          data = fileobj.read()
-        pkg_name = re.search(r'^\s*package\s+(.*?)\s*;', data, re.M).group(1)
-        arcname = '%s/%s' % (pkg_name.replace('.', '/'), os.path.basename(path))
-        build_utils.AddToZipHermetic(srcjar, arcname, data=data)
+    with build_utils.AtomicOutput(options.srcjar) as f:
+      with zipfile.ZipFile(f, 'w') as srcjar:
+        for path in build_utils.FindInDirectory(temp_dir, '*.java'):
+          with open(path) as fileobj:
+            data = fileobj.read()
+          pkg_name = re.search(r'^\s*package\s+(.*?)\s*;', data, re.M).group(1)
+          arcname = '%s/%s' % (
+              pkg_name.replace('.', '/'), os.path.basename(path))
+          build_utils.AddToZipHermetic(srcjar, arcname, data=data)
 
   if options.depfile:
     build_utils.WriteDepfile(options.depfile, options.srcjar)
diff --git a/build/android/gyp/bundletool.py b/build/android/gyp/bundletool.py
index 1bd5c36..7622016 100755
--- a/build/android/gyp/bundletool.py
+++ b/build/android/gyp/bundletool.py
@@ -14,7 +14,7 @@
 
 # Assume this is stored under build/android/gyp/
 BUNDLETOOL_DIR = os.path.abspath(os.path.join(
-    sys.argv[0], '..', '..', '..', '..', 'third_party', 'android_build_tools',
+    __file__, '..', '..', '..', '..', 'third_party', 'android_build_tools',
     'bundletool'))
 
 BUNDLETOOL_VERSION = '0.4.2'
@@ -22,5 +22,9 @@
 BUNDLETOOL_JAR_PATH = os.path.join(
     BUNDLETOOL_DIR, 'bundletool-all-%s.jar' % BUNDLETOOL_VERSION)
 
-args = ['java', '-jar', BUNDLETOOL_JAR_PATH] + sys.argv[1:]
-subprocess.check_call(args)
+def RunBundleTool(args):
+  args = ['java', '-jar', BUNDLETOOL_JAR_PATH] + args
+  subprocess.check_call(args)
+
+if __name__ == '__main__':
+  RunBundleTool(sys.argv[1:])
diff --git a/build/android/gyp/compile_resources.py b/build/android/gyp/compile_resources.py
index 8915a8bf..439bed2 100755
--- a/build/android/gyp/compile_resources.py
+++ b/build/android/gyp/compile_resources.py
@@ -656,6 +656,7 @@
 
   possible_input_paths = [
     options.aapt_path,
+    options.aapt2_path,
     options.android_manifest,
     options.shared_resources_whitelist,
   ]
diff --git a/build/android/gyp/java_cpp_enum.py b/build/android/gyp/java_cpp_enum.py
index b9269d1..afb4843 100755
--- a/build/android/gyp/java_cpp_enum.py
+++ b/build/android/gyp/java_cpp_enum.py
@@ -441,9 +441,10 @@
     parser.error('Need to specify at least one input file')
   input_paths = args
 
-  with zipfile.ZipFile(options.srcjar, 'w', zipfile.ZIP_STORED) as srcjar:
-    for output_path, data in DoGenerate(input_paths):
-      build_utils.AddToZipHermetic(srcjar, output_path, data=data)
+  with build_utils.AtomicOutput(options.srcjar) as f:
+    with zipfile.ZipFile(f, 'w', zipfile.ZIP_STORED) as srcjar:
+      for output_path, data in DoGenerate(input_paths):
+        build_utils.AddToZipHermetic(srcjar, output_path, data=data)
 
   if options.depfile:
     build_utils.WriteDepfile(options.depfile, options.srcjar)
diff --git a/build/android/gyp/util/build_utils.py b/build/android/gyp/util/build_utils.py
index 91651e53..c8b242b 100644
--- a/build/android/gyp/util/build_utils.py
+++ b/build/android/gyp/util/build_utils.py
@@ -344,7 +344,9 @@
   for root, _, files in os.walk(base_dir):
     for f in files:
       inputs.append(os.path.join(root, f))
-  DoZip(inputs, output, base_dir, compress_fn=compress_fn)
+
+  with AtomicOutput(output) as f:
+    DoZip(inputs, f, base_dir, compress_fn=compress_fn)
 
 
 def MatchesGlob(path, filters):
@@ -591,4 +593,3 @@
       output_paths=output_paths,
       force=force,
       pass_changes=True)
-
diff --git a/build/android/gyp/util/resource_utils.py b/build/android/gyp/util/resource_utils.py
index 8b8b1866..68e98a8 100644
--- a/build/android/gyp/util/resource_utils.py
+++ b/build/android/gyp/util/resource_utils.py
@@ -455,7 +455,8 @@
                          help='Path to the Android aapt tool')
 
   input_opts.add_argument('--aapt2-path',
-                          help='Path to the Android aapt2 tool')
+                          help='Path to the Android aapt2 tool. If in different'
+                          ' directory from --aapt-path.')
 
   input_opts.add_argument('--dependencies-res-zips', required=True,
                     help='Resources zip archives from dependents. Required to '
@@ -504,3 +505,6 @@
         build_utils.ParseGnList(options.extra_r_text_files))
   else:
     options.extra_r_text_files = []
+
+  if not options.aapt2_path:
+    options.aapt2_path = options.aapt_path + '2'
diff --git a/build/android/gyp/write_build_config.py b/build/android/gyp/write_build_config.py
index cae379d..531ee9b 100755
--- a/build/android/gyp/write_build_config.py
+++ b/build/android/gyp/write_build_config.py
@@ -342,6 +342,10 @@
 For `android_apk` and `dist_jar` targets, a list of all interface jar files
 that will be merged into the final `.jar` file for distribution.
 
+* `deps_info['final_dex']['path']:
+Path to the final classes.dex file (or classes.zip in case of multi-dex)
+for this APK.
+
 * `deps_info['final_dex']['dependency_dex_files']`:
 The list of paths to all `deps_info['dex_path']` entries for all library
 dependencies for this APK.
@@ -860,6 +864,9 @@
   parser.add_option('--fail',
       help='GN-list of error message lines to fail with.')
 
+  parser.add_option('--final-dex-path',
+                    help='Path to final input classes.dex (or classes.zip) to '
+                    'use in final apk.')
   parser.add_option('--apk-proto-resources',
                     help='Path to resources compiled in protocol buffer format '
                          ' for this apk.')
@@ -884,7 +891,8 @@
 
   jar_path_options = ['jar_path', 'unprocessed_jar_path', 'interface_jar_path']
   required_options_map = {
-      'android_apk': ['build_config','dex_path'] + jar_path_options,
+      'android_apk': ['build_config', 'dex_path', 'final_dex_path'] + \
+          jar_path_options,
       'android_assets': ['build_config'],
       'android_resources': ['build_config', 'resources_zip'],
       'dist_aar': ['build_config'],
@@ -1266,6 +1274,7 @@
     config['final_dex'] = {}
     dex_config = config['final_dex']
     dex_config['dependency_dex_files'] = deps_dex_files
+    dex_config['path'] = options.final_dex_path
 
   system_jars = [c['jar_path'] for c in system_library_deps]
   system_interface_jars = [c['interface_jar_path'] for c in system_library_deps]
diff --git a/build/config/android/config.gni b/build/config/android/config.gni
index 600fd73..411215da 100644
--- a/build/config/android/config.gni
+++ b/build/config/android/config.gni
@@ -355,18 +355,15 @@
 
   # Dynamic app bundles -------------------------------------------------------
 
-  # TODO(digit): Remove this once we roll a version of the Android SDK that
-  # has the proper build-tools binaries to both public and internal.
   declare_args() {
-    # To enable generation of application bundles, define
-    # android_sdk_app_bundle_build_tools to point to an Android SDK build-tools
-    # directory that has the relevant aapt2 and bundletool binaries.
-    #
-    android_sdk_app_bundle_build_tools = ""
-  }
+    # Location of aapt2 binary used for app bundles. For now, a more recent version
+    # than the one distributed with the Android SDK is required.
+    android_sdk_tools_bundle_aapt2 =
+        "//third_party/android_build_tools/aapt2/aapt2"
 
-  # Whether building application bundles is supported.
-  android_enable_app_bundles = android_sdk_app_bundle_build_tools != ""
+    # Set this variable to true to enable building app bundles.
+    android_enable_app_bundles = false
+  }
 }
 
 declare_args() {
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index fa092412..3b158188 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -187,6 +187,12 @@
         rebase_path(invoker.dex_path, root_build_dir),
       ]
     }
+    if (defined(invoker.final_dex_path)) {
+      args += [
+        "--final-dex-path",
+        rebase_path(invoker.final_dex_path, root_build_dir),
+      ]
+    }
     if (defined(invoker.supports_android) && invoker.supports_android) {
       args += [ "--supports-android" ]
     }
@@ -1776,6 +1782,19 @@
       _srcjar_path = "${_srcjar_path}.intermediate.srcjar"
     }
 
+    _proto_format = defined(invoker.proto_format) && invoker.proto_format
+
+    # NOTE: Regarding the names of the depfiles used by this template:
+    #       They all have the same prefix, related to invoker.target_name,
+    #       instead of $target_name, so it is important they have different
+    #       file paths. Otherwise, extra-rebuilds or even incorrect builds
+    #       may happen due to incorrect dependency information. The suffixes
+    #       used are:
+    #
+    #       _1.d for the unprocessed compiled resources.
+    #       _2.d for the optional processed compiled resources.
+    #       _3.d for the proto-compiled resources.
+
     action(_compile_resources_target_name) {
       set_sources_assignment_filter([])
       forward_variables_from(invoker,
@@ -1790,15 +1809,14 @@
       outputs = []
 
       _android_aapt_path = android_default_aapt_path
-      if (defined(invoker.proto_format) && invoker.proto_format) {
-        _android_aapt_path = "$android_sdk_app_bundle_build_tools/aapt"
+      if (_proto_format) {
+        _android_aapt2_path = android_sdk_tools_bundle_aapt2
+        depfile = "$target_gen_dir/${invoker.target_name}_3.d"
       }
-      _android_aapt2_path = android_default_aapt2_path
 
       inputs = [
         invoker.build_config,
         _android_aapt_path,
-        _android_aapt2_path,
       ]
       if (compute_inputs_for_analyze) {
         inputs += _compile_resources_py
@@ -1812,13 +1830,19 @@
         "--android-sdk-jars=@FileArg($_rebased_build_config:android:sdk_jars)",
         "--aapt-path",
         rebase_path(_android_aapt_path, root_build_dir),
-        "--aapt2-path",
-        rebase_path(_android_aapt2_path, root_build_dir),
         "--dependencies-res-zips=@FileArg($_rebased_build_config:resources:dependency_zips)",
         "--extra-res-packages=@FileArg($_rebased_build_config:resources:extra_package_names)",
         "--extra-r-text-files=@FileArg($_rebased_build_config:resources:extra_r_text_files)",
       ]
 
+      if (_proto_format) {
+        inputs += [ _android_aapt2_path ]
+        args += [
+          "--aapt2-path",
+          rebase_path(_android_aapt2_path, root_build_dir),
+        ]
+      }
+
       inputs += [ invoker.android_manifest ]
       args += [
         "--android-manifest",
@@ -1884,7 +1908,6 @@
         ]
       }
 
-      _proto_format = defined(invoker.proto_format) && invoker.proto_format
       if (_proto_format) {
         args += [ "--proto-format" ]
       }
@@ -2993,6 +3016,7 @@
               "apk_path",
               "apk_under_test",
               "extra_shared_libraries",
+              "final_dex_path",
               "incremental_allowed",
               "incremental_apk_path",
               "incremental_install_json_path",
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index 5ef06a43..16a3020 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -2377,6 +2377,7 @@
       srcjar_deps = _srcjar_deps
       final_jar_path = _jar_path
       dex_path = _lib_dex_path
+      final_dex_path = _final_dex_path
       apk_path = _final_apk_path
 
       if (android_enable_app_bundles) {
diff --git a/build/fuchsia/sdk.sha1 b/build/fuchsia/sdk.sha1
index 0991b0f..a4673d44 100644
--- a/build/fuchsia/sdk.sha1
+++ b/build/fuchsia/sdk.sha1
@@ -1 +1 @@
-959c11146fd1d6e3eb747ba9b6bd87927364fa74
\ No newline at end of file
+3a07104afeb72fd5454fca8e0d48d5d7ee68e0c7
\ No newline at end of file
diff --git a/cc/input/snap_fling_controller.h b/cc/input/snap_fling_controller.h
index 5199b23f..20f3056 100644
--- a/cc/input/snap_fling_controller.h
+++ b/cc/input/snap_fling_controller.h
@@ -24,8 +24,8 @@
 class SnapFlingClient {
  public:
   virtual bool GetSnapFlingInfo(const gfx::Vector2dF& natural_displacement,
-                                gfx::Vector2dF* initial_offset,
-                                gfx::Vector2dF* target_offset) const = 0;
+                                gfx::Vector2dF* out_initial_offset,
+                                gfx::Vector2dF* out_target_offset) const = 0;
   virtual gfx::Vector2dF ScrollByForSnapFling(const gfx::Vector2dF& delta) = 0;
   virtual void ScrollEndForSnapFling() = 0;
   virtual void RequestAnimationForSnapFling() = 0;
diff --git a/cc/test/pixel_test.cc b/cc/test/pixel_test.cc
index 3213530..434e417 100644
--- a/cc/test/pixel_test.cc
+++ b/cc/test/pixel_test.cc
@@ -255,7 +255,7 @@
   gpu_service_->InitializeWithHost(
       std::move(gpu_host_proxy), gpu::GpuProcessActivityFlags(),
       nullptr /* sync_point_manager */, nullptr /* shutdown_event */);
-  gpu_command_service_ = base::MakeRefCounted<gpu::GpuInProcessThreadService>(
+  task_executor_ = base::MakeRefCounted<gpu::GpuInProcessThreadService>(
       gpu_thread_->task_runner(), gpu_service_->sync_point_manager(),
       gpu_service_->mailbox_manager(), gpu_service_->share_group(),
       gpu_service_->gpu_feature_info(),
@@ -304,7 +304,7 @@
   auto* gpu_channel_manager_delegate = gpu_channel_manager->delegate();
   child_context_provider_ =
       base::MakeRefCounted<viz::VizProcessContextProvider>(
-          gpu_command_service_, gpu::kNullSurfaceHandle,
+          task_executor_, gpu::kNullSurfaceHandle,
           gpu_memory_buffer_manager_.get(), image_factory,
           gpu_channel_manager_delegate, gpu::SharedMemoryLimits());
   child_context_provider_->BindToCurrentThread();
@@ -313,7 +313,7 @@
 }
 
 void PixelTest::TearDownGpuServiceOnGpuThread(base::WaitableEvent* event) {
-  gpu_command_service_ = nullptr;
+  task_executor_ = nullptr;
   gpu_service_ = nullptr;
   event->Signal();
 }
@@ -330,7 +330,7 @@
   resource_provider_ = nullptr;
   output_surface_ = nullptr;
 
-  if (gpu_command_service_) {
+  if (task_executor_) {
     // Tear down the GPU service.
     base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC,
                               base::WaitableEvent::InitialState::NOT_SIGNALED);
diff --git a/cc/test/pixel_test.h b/cc/test/pixel_test.h
index e7ba16fc..ea00f41c 100644
--- a/cc/test/pixel_test.h
+++ b/cc/test/pixel_test.h
@@ -83,7 +83,7 @@
   std::unique_ptr<base::Thread> io_thread_;
   std::unique_ptr<viz::GpuServiceImpl> gpu_service_;
   std::unique_ptr<gpu::GpuMemoryBufferManager> gpu_memory_buffer_manager_;
-  scoped_refptr<gpu::InProcessCommandBuffer::Service> gpu_command_service_;
+  scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor_;
 
   viz::RendererSettings renderer_settings_;
   gfx::Size device_viewport_size_;
diff --git a/cc/test/test_in_process_context_provider.cc b/cc/test/test_in_process_context_provider.cc
index 8c1010fe..7bd8de5f 100644
--- a/cc/test/test_in_process_context_provider.cc
+++ b/cc/test/test_in_process_context_provider.cc
@@ -47,7 +47,7 @@
   attribs.bind_generates_resource = false;
   attribs.enable_oop_rasterization = oop_raster;
 
-  auto context = gpu::GLInProcessContext::CreateWithoutInit();
+  auto context = std::make_unique<gpu::GLInProcessContext>();
   auto result = context->Initialize(
       nullptr, nullptr, is_offscreen, gpu::kNullSurfaceHandle, attribs,
       gpu::SharedMemoryLimits(), gpu_memory_buffer_manager, image_factory,
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index efd246e..d5e12239 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -2794,18 +2794,14 @@
 
 void LayerTreeHostImpl::OnMemoryPressure(
     base::MemoryPressureListener::MemoryPressureLevel level) {
-  // Only work for low-end devices for now.
-  if (!base::SysInfo::IsLowEndDevice())
-    return;
-
   switch (level) {
     case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
     case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE:
       break;
     case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL:
-      ReleaseTileResources();
-      ReleaseTreeResources();
       ClearUIResources();
+      ReleaseTreeResources();
+      ReleaseTileResources();
       if (image_decode_cache_) {
         image_decode_cache_->SetShouldAggressivelyFreeResources(true);
         image_decode_cache_->SetShouldAggressivelyFreeResources(false);
@@ -4358,8 +4354,8 @@
 
 bool LayerTreeHostImpl::GetSnapFlingInfo(
     const gfx::Vector2dF& natural_displacement_in_viewport,
-    gfx::Vector2dF* initial_offset,
-    gfx::Vector2dF* target_offset) const {
+    gfx::Vector2dF* out_initial_offset,
+    gfx::Vector2dF* out_target_offset) const {
   const ScrollNode* scroll_node = CurrentlyScrollingNode();
   if (!scroll_node || !scroll_node->snap_container_data.has_value())
     return false;
@@ -4369,7 +4365,7 @@
   gfx::Vector2dF natural_displacement_in_content =
       gfx::ScaleVector2d(natural_displacement_in_viewport, 1.f / scale_factor);
 
-  *initial_offset =
+  *out_initial_offset =
       ScrollOffsetToVector2dF(GetVisualScrollOffset(*scroll_node));
 
   bool did_scroll_x = did_scroll_x_for_scroll_gesture_ ||
@@ -4378,15 +4374,15 @@
                       natural_displacement_in_content.y() != 0;
 
   gfx::ScrollOffset snap_offset;
-  if (!data.FindSnapPosition(
-          gfx::ScrollOffset(*initial_offset + natural_displacement_in_content),
-          did_scroll_x, did_scroll_y, &snap_offset)) {
+  if (!data.FindSnapPosition(gfx::ScrollOffset(*out_initial_offset +
+                                               natural_displacement_in_content),
+                             did_scroll_x, did_scroll_y, &snap_offset)) {
     return false;
   }
 
-  *target_offset = ScrollOffsetToVector2dF(snap_offset);
-  target_offset->Scale(scale_factor);
-  initial_offset->Scale(scale_factor);
+  *out_target_offset = ScrollOffsetToVector2dF(snap_offset);
+  out_target_offset->Scale(scale_factor);
+  out_initial_offset->Scale(scale_factor);
   return true;
 }
 
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h
index dcdfa51..bc80fc9 100644
--- a/cc/trees/layer_tree_host_impl.h
+++ b/cc/trees/layer_tree_host_impl.h
@@ -615,8 +615,8 @@
   gfx::ScrollOffset GetVisualScrollOffset(const ScrollNode& scroll_node) const;
 
   bool GetSnapFlingInfo(const gfx::Vector2dF& natural_displacement_in_viewport,
-                        gfx::Vector2dF* initial_offset,
-                        gfx::Vector2dF* target_offset) const override;
+                        gfx::Vector2dF* out_initial_offset,
+                        gfx::Vector2dF* out_target_offset) const override;
 
   // Returns the amount of delta that can be applied to scroll_node, taking
   // page scale into account.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/components/LayoutTab.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/components/LayoutTab.java
index 35eb04e..49fa59d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/components/LayoutTab.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/components/LayoutTab.java
@@ -93,6 +93,7 @@
     private boolean mShowToolbar;
     private boolean mAnonymizeToolbar;
     private float mToolbarAlpha;
+    private boolean mInsetBorderVertical;
     private float mToolbarYOffset;
     private float mSideBorderScale;
     private boolean mCloseButtonIsOnRight;
@@ -190,6 +191,7 @@
         mShowToolbar = false;
         mAnonymizeToolbar = false;
         mToolbarAlpha = 1.f;
+        mInsetBorderVertical = false;
         mToolbarYOffset = 0.f;
         mSideBorderScale = 1.f;
         mOriginalContentWidth = maxContentTextureWidth * sPxToDp;
@@ -862,6 +864,20 @@
         return mToolbarAlpha;
     }
 
+    /**
+     * @param inset Whether or not to inset the top vertical component of the tab border or not.
+     */
+    public void setInsetBorderVertical(boolean inset) {
+        mInsetBorderVertical = inset;
+    }
+
+    /**
+     * @return Whether or not to inset the top vertical component of the tab border or not.
+     */
+    public boolean insetBorderVertical() {
+        return mInsetBorderVertical;
+    }
+
     public void setCloseButtonIsOnRight(boolean closeButtonIsOnRight) {
         mCloseButtonIsOnRight = closeButtonIsOnRight;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
index f7429412..b7fe58b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
@@ -1644,6 +1644,7 @@
 
                 LayoutTab layoutTab = mLayout.createLayoutTab(tabId, isIncognito,
                         Layout.SHOW_CLOSE_BUTTON, needTitle, maxContentWidth, maxContentHeight);
+                layoutTab.setInsetBorderVertical(true);
                 layoutTab.setShowToolbar(true);
                 layoutTab.setToolbarAlpha(0.f);
                 layoutTab.setAnonymizeToolbar(!mIsStackForCurrentTabList || mTabList.index() != i);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java
index 3ce50db..7dbee91c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java
@@ -114,7 +114,8 @@
                     defaultThemeColor, t.getToolbarBackgroundColor(), closeButtonColor,
                     t.anonymizeToolbar(), t.isTitleNeeded(), urlBarBackgroundId,
                     t.getTextBoxBackgroundColor(), textBoxAlpha, t.getToolbarAlpha(),
-                    t.getToolbarYOffset() * dpToPx, t.getSideBorderScale());
+                    t.getToolbarYOffset() * dpToPx, t.getSideBorderScale(),
+                    t.insetBorderVertical());
         }
         nativeFinishBuildingFrame(mNativePtr);
     }
@@ -177,16 +178,17 @@
     private native void nativePutTabLayer(long nativeTabListSceneLayer, int id,
             int toolbarResourceId, int closeButtonResourceId, int shadowResourceId,
             int contourResourceId, int backLogoResourceId, int borderResourceId,
-            int borderInnerShadowResourceId, boolean canUseLiveLayer, boolean modernDesignEnabled,
-            int tabBackgroundColor, int backLogoColor, boolean incognito, boolean isPortrait,
-            float x, float y, float width, float height, float contentWidth, float contentHeight,
-            float visibleContentHeight, float shadowX, float shadowY, float shadowWidth,
-            float shadowHeight, float pivotX, float pivotY, float rotationX, float rotationY,
-            float alpha, float borderAlpha, float borderInnerShadowAlpha, float contourAlpha,
-            float shadowAlpha, float closeAlpha, float closeBtnWidth, float staticToViewBlend,
-            float borderScale, float saturation, float brightness, boolean showToolbar,
-            int defaultThemeColor, int toolbarBackgroundColor, int closeButtonColor,
-            boolean anonymizeToolbar, boolean showTabTitle, int toolbarTextBoxResource,
-            int toolbarTextBoxBackgroundColor, float toolbarTextBoxAlpha, float toolbarAlpha,
-            float toolbarYOffset, float sideBorderScale);
+            int borderInnerShadowResourceId, boolean canUseLiveLayer,
+            boolean modernDesignEnabled, int tabBackgroundColor,
+            int backLogoColor, boolean incognito, boolean isPortrait, float x, float y, float width,
+            float height, float contentWidth, float contentHeight, float visibleContentHeight,
+            float shadowX, float shadowY, float shadowWidth, float shadowHeight, float pivotX,
+            float pivotY, float rotationX, float rotationY, float alpha, float borderAlpha,
+            float borderInnerShadowAlpha, float contourAlpha, float shadowAlpha, float closeAlpha,
+            float closeBtnWidth, float staticToViewBlend, float borderScale, float saturation,
+            float brightness, boolean showToolbar, int defaultThemeColor,
+            int toolbarBackgroundColor, int closeButtonColor, boolean anonymizeToolbar,
+            boolean showTabTitle, int toolbarTextBoxResource, int toolbarTextBoxBackgroundColor,
+            float toolbarTextBoxAlpha, float toolbarAlpha, float toolbarYOffset,
+            float sideBorderScale, boolean insetVerticalBorder);
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsMediator.java
index 23b010f8..aca068a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/contextual_suggestions/ContextualSuggestionsMediator.java
@@ -73,6 +73,7 @@
 
     private boolean mDidSuggestionsShowForTab;
     private boolean mHasRecordedPeekEventForTab;
+    private boolean mHasRecordedButtonShownForTab;
 
     private boolean mHasReachedTargetScrollPercentage;
     private boolean mHasPeekDelayPassed;
@@ -140,24 +141,28 @@
                     }
                 }
             };
-
-            fullscreenManager.addListener(new FullscreenListener() {
-                @Override
-                public void onContentOffsetChanged(float offset) {}
-
-                @Override
-                public void onControlsOffsetChanged(
-                        float topOffset, float bottomOffset, boolean needsAnimate) {
-                    maybeShowContentInSheet();
-                }
-
-                @Override
-                public void onToggleOverlayVideoMode(boolean enabled) {}
-
-                @Override
-                public void onBottomControlsHeightChanged(int bottomControlsHeight) {}
-            });
         }
+
+        fullscreenManager.addListener(new FullscreenListener() {
+            @Override
+            public void onContentOffsetChanged(float offset) {}
+
+            @Override
+            public void onControlsOffsetChanged(
+                    float topOffset, float bottomOffset, boolean needsAnimate) {
+                if (!mToolbarButtonEnabled) {
+                    maybeShowContentInSheet();
+                } else {
+                    reportToolbarButtonShown();
+                }
+            }
+
+            @Override
+            public void onToggleOverlayVideoMode(boolean enabled) {}
+
+            @Override
+            public void onBottomControlsHeightChanged(int bottomControlsHeight) {}
+        });
     }
 
     /** Destroys the mediator. */
@@ -261,6 +266,7 @@
                     mCoordinator.showSuggestions(mSuggestionsSource);
                     mCoordinator.expandBottomSheet();
                 }, R.drawable.btn_star_filled, R.string.contextual_suggestions_button_description);
+                reportToolbarButtonShown();
             } else {
                 setPeekConditions(suggestionsResult);
                 // If the controls are already off-screen, show the suggestions immediately so they
@@ -301,6 +307,20 @@
         }
     }
 
+    private void reportToolbarButtonShown() {
+        assert mToolbarButtonEnabled;
+
+        if (mHasRecordedButtonShownForTab || areBrowserControlsHidden()
+                || mSuggestionsSource == null || !mModel.hasSuggestions()) {
+            return;
+        }
+
+        mHasRecordedButtonShownForTab = true;
+        reportEvent(ContextualSuggestionsEvent.UI_BUTTON_SHOWN);
+        TrackerFactory.getTrackerForProfile(mProfile).notifyEvent(
+                EventConstants.CONTEXTUAL_SUGGESTIONS_BUTTON_SHOWN);
+    }
+
     @Override
     public void clearState() {
         clearSuggestions();
@@ -318,9 +338,14 @@
     @Override
     public ListMenuButton.Item[] getItems() {
         final Context context = ContextUtils.getApplicationContext();
-        return new ListMenuButton.Item[] {
-                new ListMenuButton.Item(context, R.string.menu_preferences, true),
-                new ListMenuButton.Item(context, R.string.menu_send_feedback, true)};
+        if (ChromeFeatureList.isEnabled(ChromeFeatureList.CONTEXTUAL_SUGGESTIONS_OPT_OUT)) {
+            return new ListMenuButton.Item[] {
+                    new ListMenuButton.Item(context, R.string.menu_preferences, true),
+                    new ListMenuButton.Item(context, R.string.menu_send_feedback, true)};
+        } else {
+            return new ListMenuButton.Item[] {
+                    new ListMenuButton.Item(context, R.string.menu_send_feedback, true)};
+        }
     }
 
     @Override
@@ -356,6 +381,7 @@
 
         mDidSuggestionsShowForTab = false;
         mHasRecordedPeekEventForTab = false;
+        mHasRecordedButtonShownForTab = false;
         mHasSheetBeenOpened = false;
         mHandler.removeCallbacksAndMessages(null);
         mHasReachedTargetScrollPercentage = false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index 618e2c15..ae92b47 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -350,24 +350,28 @@
      * is not loaded yet.
      */
     private void maybeLoadModule() {
-        // TODO(https://crbug.com/853728): Load the module in the background.
+        String packageName = mIntentDataProvider.getModulePackageName();
+        String className = mIntentDataProvider.getModuleClassName();
+        // Return early if these were not provided. It's important to do this before checking the
+        // feature experiment group, to avoid entering users into the experiment that do not even
+        // receive the intent extras for using the feature.
+        if (packageName == null || className == null) return;
+
         if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CCT_MODULE)) {
             Log.w(TAG, "The %s feature is disabled.", ChromeFeatureList.CCT_MODULE);
             return;
         }
 
-        String packageName = mIntentDataProvider.getModulePackageName();
         if (!ExternalAuthUtils.getInstance().isGoogleSigned(packageName)) {
             Log.w(TAG, "The %s package is not Google-signed.", packageName);
             return;
         }
 
-        ModuleEntryPoint entryPoint =
-                mConnection.loadModule(packageName, mIntentDataProvider.getModuleClassName());
+        // TODO(https://crbug.com/853728): Load the module in the background.
+        ModuleEntryPoint entryPoint = mConnection.loadModule(packageName, className);
         if (entryPoint == null) return;
 
-        mActivityDelegate = entryPoint.createActivityDelegate(
-                new ActivityHostImpl(this), getIntent().getExtras());
+        mActivityDelegate = entryPoint.createActivityDelegate(new ActivityHostImpl(this));
         mActivityDelegate.onCreate(getSavedInstanceState());
     }
 
@@ -803,14 +807,14 @@
         if (mWebappTimeSpentLogger != null) {
             mWebappTimeSpentLogger.onPause();
         }
-        if (mActivityDelegate != null) mActivityDelegate.onPause(isChangingConfigurations());
+        if (mActivityDelegate != null) mActivityDelegate.onPause();
     }
 
     @Override
     public void onStopWithNative() {
         super.onStopWithNative();
         BrowserSessionContentUtils.setActiveContentHandler(null);
-        if (mActivityDelegate != null) mActivityDelegate.onStop(isChangingConfigurations());
+        if (mActivityDelegate != null) mActivityDelegate.onStop();
         if (mIsClosing) {
             getTabModelSelector().closeAllTabs(true);
             mTabPersistencePolicy.deleteMetadataStateFileAsync();
@@ -822,7 +826,7 @@
     @Override
     protected void onDestroyInternal() {
         super.onDestroyInternal();
-        if (mActivityDelegate != null) mActivityDelegate.onDestroy(isChangingConfigurations());
+        if (mActivityDelegate != null) mActivityDelegate.onDestroy();
         mConnection.maybeUnloadModule(mIntentDataProvider.getModulePackageName(),
                 mIntentDataProvider.getModuleClassName());
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java
index f38b41b..de1a26bd87 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ActivityDelegate.java
@@ -43,9 +43,9 @@
         }
     }
 
-    public void onStop(boolean isChangingConfigurations) {
+    public void onStop() {
         try {
-            mActivityDelegate.onStop(isChangingConfigurations);
+            mActivityDelegate.onStop();
         } catch (RemoteException e) {
             assert false;
         }
@@ -83,17 +83,17 @@
         }
     }
 
-    public void onPause(boolean isChangingConfigurations) {
+    public void onPause() {
         try {
-            mActivityDelegate.onPause(isChangingConfigurations);
+            mActivityDelegate.onPause();
         } catch (RemoteException e) {
             assert false;
         }
     }
 
-    public void onDestroy(boolean isChangingConfigurations) {
+    public void onDestroy() {
         try {
-            mActivityDelegate.onDestroy(isChangingConfigurations);
+            mActivityDelegate.onDestroy();
         } catch (RemoteException e) {
             assert false;
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IActivityDelegate.aidl b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IActivityDelegate.aidl
index 4cabe32..693d5f6c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IActivityDelegate.aidl
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IActivityDelegate.aidl
@@ -11,7 +11,7 @@
 
   void onStart() = 2;
 
-  void onStop(boolean isChangingConfigurations) = 3;
+  void onStop() = 3;
 
   void onWindowFocusChanged(boolean hasFocus) = 4;
 
@@ -21,9 +21,9 @@
 
   void onResume() = 7;
 
-  void onPause(boolean isChangingConfigurations) = 8;
+  void onPause() = 8;
 
-  void onDestroy(boolean isChangingConfigurations) = 9;
+  void onDestroy() = 9;
 
   boolean onBackPressed() = 10;
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IModuleEntryPoint.aidl b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IModuleEntryPoint.aidl
index 765acc4..61b0fb4 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IModuleEntryPoint.aidl
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/IModuleEntryPoint.aidl
@@ -12,6 +12,6 @@
   void init(in IModuleHost moduleHost) = 0;
   int getModuleVersion() = 1;
   int getMinimumHostVersion() = 2;
-  IActivityDelegate createActivityDelegate(in IActivityHost activityHost, in Bundle data) = 3;
+  IActivityDelegate createActivityDelegate(in IActivityHost activityHost) = 3;
   void onDestroy() = 4;
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java
index a028f20..2c6ed15 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/ModuleEntryPoint.java
@@ -4,7 +4,6 @@
 
 package org.chromium.chrome.browser.customtabs.dynamicmodule;
 
-import android.os.Bundle;
 import android.os.RemoteException;
 
 /**
@@ -45,9 +44,9 @@
         return -1;
     }
 
-    public ActivityDelegate createActivityDelegate(ActivityHostImpl activityHost, Bundle data) {
+    public ActivityDelegate createActivityDelegate(ActivityHostImpl activityHost) {
         try {
-            return new ActivityDelegate(mEntryPoint.createActivityDelegate(activityHost, data));
+            return new ActivityDelegate(mEntryPoint.createActivityDelegate(activityHost));
         } catch (RemoteException e) {
             assert false;
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
index 13de113..063301d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarLayout.java
@@ -23,7 +23,6 @@
 import android.view.InputDevice;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
@@ -42,7 +41,6 @@
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
-import org.chromium.chrome.browser.util.FeatureUtilities;
 import org.chromium.chrome.browser.util.ViewUtils;
 import org.chromium.chrome.browser.widget.PulseDrawable;
 import org.chromium.chrome.browser.widget.ScrimView;
@@ -157,12 +155,6 @@
         mMenuButton = (TintedImageButton) findViewById(R.id.menu_button);
         mMenuBadge = (ImageView) findViewById(R.id.menu_badge);
         mMenuButtonWrapper = findViewById(R.id.menu_button_wrapper);
-        if (FeatureUtilities.isBottomToolbarEnabled()) {
-            if (mMenuButtonWrapper != null) UiUtils.removeViewFromParent(mMenuButtonWrapper);
-            mMenuButtonWrapper = null;
-            mMenuButton = null;
-            mMenuBadge = null;
-        }
 
         // Initialize the provider to an empty version to avoid null checking everywhere.
         mToolbarDataProvider = new ToolbarDataProvider() {
@@ -279,10 +271,8 @@
 
         mAppMenuButtonHelper = appMenuButtonHelper;
 
-        if (mMenuButton != null) {
-            mMenuButton.setOnTouchListener(mAppMenuButtonHelper);
-            mMenuButton.setAccessibilityDelegate(mAppMenuButtonHelper);
-        }
+        mMenuButton.setOnTouchListener(mAppMenuButtonHelper);
+        mMenuButton.setAccessibilityDelegate(mAppMenuButtonHelper);
     }
 
     /** Notified that the menu was shown. */
@@ -828,7 +818,6 @@
 
     @Override
     public void removeAppMenuUpdateBadge(boolean animate) {
-        if (mMenuBadge == null) return;
         boolean wasShowingMenuBadge = mShowMenuBadge;
         mShowMenuBadge = false;
         setMenuButtonContentDescription(false);
@@ -887,7 +876,6 @@
      * bitmap.
      */
     protected void setAppMenuUpdateBadgeToVisible(boolean animate) {
-        if (mMenuBadge == null || mMenuButton == null) return;
         setMenuButtonContentDescription(true);
         if (!animate || mIsMenuBadgeAnimationRunning) {
             mMenuBadge.setVisibility(View.VISIBLE);
@@ -932,7 +920,6 @@
      * @param useLightDrawable Whether the light drawable should be used.
      */
     protected void setAppMenuUpdateBadgeDrawable(boolean useLightDrawable) {
-        if (mMenuBadge == null) return;
         mMenuBadge.setImageResource(useLightDrawable ? R.drawable.badge_update_light
                 : R.drawable.badge_update_dark);
     }
@@ -944,7 +931,7 @@
      */
     protected void setMenuButtonHighlightDrawable(boolean highlighting) {
         // Return if onFinishInflate didn't finish
-        if (mMenuButtonWrapper == null || mMenuButton == null) return;
+        if (mMenuButtonWrapper == null) return;
 
         if (highlighting) {
             if (mHighlightDrawable == null) {
@@ -966,7 +953,6 @@
      * @param isUpdateBadgeVisible Whether the update menu badge is visible.
      */
     protected void setMenuButtonContentDescription(boolean isUpdateBadgeVisible) {
-        if (mMenuButton == null) return;
         if (isUpdateBadgeVisible) {
             mMenuButton.setContentDescription(getResources().getString(
                     R.string.accessibility_toolbar_btn_menu_update));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
index 1a397eb..83b739d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java
@@ -1261,9 +1261,7 @@
         updateReloadState(tabCrashed);
         updateBookmarkButtonStatus();
 
-        if (mToolbar.getMenuButtonWrapper() != null) {
-            mToolbar.getMenuButtonWrapper().setVisibility(View.VISIBLE);
-        }
+        mToolbar.getMenuButtonWrapper().setVisibility(View.VISIBLE);
     }
 
     private void updateBookmarkButtonStatus() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
index cb51740..14d0fff 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarPhone.java
@@ -83,7 +83,6 @@
 import org.chromium.chrome.browser.widget.newtab.NewTabButton;
 import org.chromium.chrome.browser.widget.textbubble.TextBubble;
 import org.chromium.components.feature_engagement.EventConstants;
-import org.chromium.ui.UiUtils;
 import org.chromium.ui.base.LocalizationUtils;
 import org.chromium.ui.interpolators.BakedBezierInterpolator;
 
@@ -376,10 +375,6 @@
             mToolbarButtonsContainer = (ViewGroup) findViewById(R.id.toolbar_buttons);
 
             mHomeButton = (TintedImageButton) findViewById(R.id.home_button);
-            if (FeatureUtilities.isBottomToolbarEnabled() && mHomeButton != null) {
-                UiUtils.removeViewFromParent(mHomeButton);
-                mHomeButton = null;
-            }
 
             mUrlBar = (TextView) findViewById(R.id.url_bar);
 
@@ -394,7 +389,7 @@
 
             setLayoutTransition(null);
 
-            if (getMenuButtonWrapper() != null) getMenuButtonWrapper().setVisibility(View.VISIBLE);
+            getMenuButtonWrapper().setVisibility(View.VISIBLE);
             inflateTabSwitchingResources();
 
             setWillNotDraw(false);
@@ -469,19 +464,14 @@
 
     private void inflateTabSwitchingResources() {
         mToggleTabStackButton = (ImageView) findViewById(R.id.tab_switcher_button);
-        if (FeatureUtilities.isBottomToolbarEnabled()) {
-            UiUtils.removeViewFromParent(mToggleTabStackButton);
-            mToggleTabStackButton = null;
-        } else {
-            mToggleTabStackButton.setClickable(false);
-            mTabSwitcherButtonDrawable =
-                    TabSwitcherDrawable.createTabSwitcherDrawable(getContext(), false);
-            mTabSwitcherButtonDrawableLight =
-                    TabSwitcherDrawable.createTabSwitcherDrawable(getContext(), true);
-            mToggleTabStackButton.setImageDrawable(mTabSwitcherButtonDrawable);
-        }
-
         mNewTabButton = (NewTabButton) findViewById(R.id.new_tab_button);
+
+        mToggleTabStackButton.setClickable(false);
+        mTabSwitcherButtonDrawable =
+                TabSwitcherDrawable.createTabSwitcherDrawable(getContext(), false);
+        mTabSwitcherButtonDrawableLight =
+                TabSwitcherDrawable.createTabSwitcherDrawable(getContext(), true);
+        mToggleTabStackButton.setImageDrawable(mTabSwitcherButtonDrawable);
         mTabSwitcherModeViews.add(mNewTabButton);
 
         // Ensure that the new tab button will not draw over the toolbar buttons if the
@@ -501,26 +491,24 @@
     }
 
     private void enableTabSwitchingResources() {
-        if (mToggleTabStackButton != null) {
-            mToggleTabStackButton.setOnClickListener(this);
-            mToggleTabStackButton.setOnLongClickListener(this);
-            mToggleTabStackButton.setOnKeyListener(new KeyboardNavigationListener() {
-                @Override
-                public View getNextFocusForward() {
-                    final TintedImageButton menuButton = getMenuButton();
-                    if (menuButton != null && menuButton.isShown()) {
-                        return menuButton;
-                    } else {
-                        return getCurrentTabView();
-                    }
+        mToggleTabStackButton.setOnClickListener(this);
+        mToggleTabStackButton.setOnLongClickListener(this);
+        mToggleTabStackButton.setOnKeyListener(new KeyboardNavigationListener() {
+            @Override
+            public View getNextFocusForward() {
+                final TintedImageButton menuButton = getMenuButton();
+                if (menuButton != null && menuButton.isShown()) {
+                    return menuButton;
+                } else {
+                    return getCurrentTabView();
                 }
+            }
 
-                @Override
-                public View getNextFocusBackward() {
-                    return findViewById(R.id.url_bar);
-                }
-            });
-        }
+            @Override
+            public View getNextFocusBackward() {
+                return findViewById(R.id.url_bar);
+            }
+        });
         mNewTabButton.setOnClickListener(this);
         mNewTabButton.setOnLongClickListener(this);
     }
@@ -547,23 +535,22 @@
             if (FeatureUtilities.isNewTabPageButtonEnabled()) changeIconToNTPIcon(mHomeButton);
         }
 
-        if (getMenuButton() != null)
-            getMenuButton().setOnKeyListener(new KeyboardNavigationListener() {
-                @Override
-                public View getNextFocusForward() {
-                    return getCurrentTabView();
-                }
+        getMenuButton().setOnKeyListener(new KeyboardNavigationListener() {
+            @Override
+            public View getNextFocusForward() {
+                return getCurrentTabView();
+            }
 
-                @Override
-                public View getNextFocusBackward() {
-                    return mToggleTabStackButton;
-                }
+            @Override
+            public View getNextFocusBackward() {
+                return mToggleTabStackButton;
+            }
 
-                @Override
-                protected boolean handleEnterKeyPress() {
-                    return getMenuButtonHelper().onEnterKeyPress(getMenuButton());
-                }
-            });
+            @Override
+            protected boolean handleEnterKeyPress() {
+                return getMenuButtonHelper().onEnterKeyPress(getMenuButton());
+            }
+        });
         onHomeButtonUpdate(HomepageManager.isHomepageEnabled());
 
         if (mLocationBar.useModernDesign()) mNewTabButton.setIsModern();
@@ -1412,9 +1399,9 @@
         }
 
         // Draw the menu button if necessary.
-        final TintedImageButton menuButton = getMenuButton();
-        if (menuButton != null && !mShowMenuBadge && mTabSwitcherAnimationMenuDrawable != null
+        if (!mShowMenuBadge && mTabSwitcherAnimationMenuDrawable != null
                 && mUrlExpansionPercent != 1f) {
+            final TintedImageButton menuButton = getMenuButton();
             mTabSwitcherAnimationMenuDrawable.setBounds(menuButton.getPaddingLeft(),
                     menuButton.getPaddingTop(),
                     menuButton.getWidth() - menuButton.getPaddingRight(),
@@ -1432,10 +1419,8 @@
         Drawable badgeDrawable = mUseLightDrawablesForTextureCapture
                 ? mTabSwitcherAnimationMenuBadgeLightDrawable
                         : mTabSwitcherAnimationMenuBadgeDarkDrawable;
-
-        final View menuBadge = getMenuBadge();
-        if (menuBadge != null && mShowMenuBadge && badgeDrawable != null
-                && mUrlExpansionPercent != 1f) {
+        if (mShowMenuBadge && badgeDrawable != null && mUrlExpansionPercent != 1f) {
+            final View menuBadge = getMenuBadge();
             badgeDrawable.setBounds(menuBadge.getPaddingLeft(), menuBadge.getPaddingTop(),
                     menuBadge.getWidth() - menuBadge.getPaddingRight(),
                     menuBadge.getHeight() - menuBadge.getPaddingBottom());
@@ -1806,9 +1791,7 @@
                 // This is to deal with the view going invisible when resuming the activity and
                 // running this animation.  The view is still there and clickable but does not
                 // render and only a layout triggers a refresh.  See crbug.com/306890.
-                if (mToggleTabStackButton != null && !mToggleTabStackButton.isEnabled()) {
-                    requestLayout();
-                }
+                if (!mToggleTabStackButton.isEnabled()) requestLayout();
             }
         });
 
@@ -1992,7 +1975,6 @@
      * switcher mode.
      */
     private void updateTabSwitcherButtonRipple() {
-        if (mToggleTabStackButton == null) return;
         if (mTabSwitcherState == ENTERING_TAB_SWITCHER) {
             mToggleTabStackButton.setBackgroundColor(
                     ApiCompatibilityUtils.getColor(getResources(), android.R.color.transparent));
@@ -2119,19 +2101,16 @@
         float toolbarButtonTranslationX = MathUtils.flipSignIf(
                 URL_FOCUS_TOOLBAR_BUTTONS_TRANSLATION_X_DP, isRtl) * density;
 
-        final View menuButtonWrapper = getMenuButtonWrapper();
-        if (menuButtonWrapper != null) {
-            animator = ObjectAnimator.ofFloat(
-                    menuButtonWrapper, TRANSLATION_X, toolbarButtonTranslationX);
-            animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
-            animator.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
-            animators.add(animator);
+        animator = ObjectAnimator.ofFloat(
+                getMenuButtonWrapper(), TRANSLATION_X, toolbarButtonTranslationX);
+        animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
+        animator.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
+        animators.add(animator);
 
-            animator = ObjectAnimator.ofFloat(menuButtonWrapper, ALPHA, 0);
-            animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
-            animator.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
-            animators.add(animator);
-        }
+        animator = ObjectAnimator.ofFloat(getMenuButtonWrapper(), ALPHA, 0);
+        animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
+        animator.setInterpolator(BakedBezierInterpolator.FADE_OUT_CURVE);
+        animators.add(animator);
 
         if (mToggleTabStackButton != null) {
             animator = ObjectAnimator.ofFloat(
@@ -2160,20 +2139,17 @@
         animator.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
         animators.add(animator);
 
-        final View menuButtonWrapper = getMenuButtonWrapper();
-        if (menuButtonWrapper != null) {
-            animator = ObjectAnimator.ofFloat(menuButtonWrapper, TRANSLATION_X, 0);
-            animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
-            animator.setStartDelay(URL_CLEAR_FOCUS_MENU_DELAY_MS);
-            animator.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
-            animators.add(animator);
+        animator = ObjectAnimator.ofFloat(getMenuButtonWrapper(), TRANSLATION_X, 0);
+        animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
+        animator.setStartDelay(URL_CLEAR_FOCUS_MENU_DELAY_MS);
+        animator.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
+        animators.add(animator);
 
-            animator = ObjectAnimator.ofFloat(menuButtonWrapper, ALPHA, 1);
-            animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
-            animator.setStartDelay(URL_CLEAR_FOCUS_MENU_DELAY_MS);
-            animator.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
-            animators.add(animator);
-        }
+        animator = ObjectAnimator.ofFloat(getMenuButtonWrapper(), ALPHA, 1);
+        animator.setDuration(URL_FOCUS_TOOLBAR_BUTTONS_DURATION_MS);
+        animator.setStartDelay(URL_CLEAR_FOCUS_MENU_DELAY_MS);
+        animator.setInterpolator(BakedBezierInterpolator.TRANSFORM_CURVE);
+        animators.add(animator);
 
         if (mToggleTabStackButton != null) {
             animator = ObjectAnimator.ofFloat(mToggleTabStackButton, TRANSLATION_X, 0);
@@ -2668,10 +2644,7 @@
             }
         }
 
-        if (getMenuButton() != null) {
-            getMenuButton().setTint(mUseLightToolbarDrawables ? mLightModeTint : mDarkModeTint);
-        }
-
+        getMenuButton().setTint(mUseLightToolbarDrawables ? mLightModeTint : mDarkModeTint);
         if (mLocationBar.useModernDesign()) {
             updateModernLocationBarColor(getLocationBarColorForToolbarColor(currentPrimaryColor));
         }
@@ -2714,9 +2687,7 @@
             mNewTabButton.setContentDescription(newTabContentDescription);
         }
 
-        if (getMenuButtonWrapper() != null) {
-            getMenuButtonWrapper().setVisibility(View.VISIBLE);
-        }
+        getMenuButtonWrapper().setVisibility(View.VISIBLE);
 
         if (mLocationBar.useModernDesign()) {
             DrawableCompat.setTint(mLocationBarBackground,
@@ -2752,7 +2723,6 @@
 
     @Override
     public void showAppMenuUpdateBadge() {
-        if (getMenuBadge() == null) return;
         super.showAppMenuUpdateBadge();
 
         // Set up variables.
@@ -2775,7 +2745,6 @@
 
     @Override
     public void removeAppMenuUpdateBadge(boolean animate) {
-        if (getMenuBadge() == null) return;
         super.removeAppMenuUpdateBadge(animate);
 
         if (mBrowsingModeViews.contains(getMenuBadge())) {
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java
index 02ef7ea..8da9b68 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/indicator/OfflineIndicatorControllerTest.java
@@ -15,6 +15,7 @@
 
 import org.chromium.base.ThreadUtils;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.DisableIf;
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
@@ -92,6 +93,7 @@
     }
 
     @Test
+    @DisableIf.Build(sdk_is_greater_than = 22, message = "https://crbug.com/859849")
     @MediumTest
     public void testHideOfflineIndicatorWhenBackToOnline() throws Exception {
         EmbeddedTestServer testServer =
@@ -116,6 +118,7 @@
     }
 
     @Test
+    @DisableIf.Build(sdk_is_greater_than = 22, message = "https://crbug.com/859849")
     @MediumTest
     public void testDoNotShowOfflineIndicatorOnErrorPageWhenOffline() throws Exception {
         EmbeddedTestServer testServer =
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/OAuth2TokenServiceIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/OAuth2TokenServiceIntegrationTest.java
index f538904..b4c593d 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/OAuth2TokenServiceIntegrationTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/OAuth2TokenServiceIntegrationTest.java
@@ -156,6 +156,14 @@
             // Adding an observer should not lead to a callback.
             Assert.assertEquals(0, mObserver.getRevokedCallCount());
 
+            // First seed the account state (some native classes make the assumption that
+            // a notification that a token was revoked for a given account was preceded by a
+            // notifictation that that account was available).
+            mOAuth2TokenService.fireRefreshTokenAvailable(TEST_ACCOUNT1);
+            mOAuth2TokenService.fireRefreshTokenAvailable(TEST_ACCOUNT2);
+
+            Assert.assertEquals(2, mObserver.getAvailableCallCount());
+
             // An observer should be called with the correct account.
             mOAuth2TokenService.fireRefreshTokenRevoked(TEST_ACCOUNT1);
             Assert.assertEquals(1, mObserver.getRevokedCallCount());
@@ -166,8 +174,9 @@
             mOAuth2TokenService.fireRefreshTokenRevoked(TEST_ACCOUNT2);
             Assert.assertEquals(1, mObserver.getRevokedCallCount());
 
-            // No other observer interface method should ever have been called.
-            Assert.assertEquals(0, mObserver.getAvailableCallCount());
+            // No other observer interface method should have been called after the initial seeding
+            // of the accounts.
+            Assert.assertEquals(2, mObserver.getAvailableCallCount());
             Assert.assertEquals(0, mObserver.getLoadedCallCount());
         });
     }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellDialogTest.java
index c721a043..b7aca21 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellDialogTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellDialogTest.java
@@ -23,7 +23,6 @@
 import org.junit.runner.RunWith;
 
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.Manual;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.base.test.util.UrlUtils;
 import org.chromium.chrome.browser.ChromeSwitches;
@@ -157,7 +156,6 @@
      * Test navigate to 2D page and launch the Microphone dialog.
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testMicrophonePermissionPrompt() throws InterruptedException, TimeoutException {
@@ -175,7 +173,6 @@
      * Test navigate to 2D page and launch the Camera dialog.
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testCameraPermissionPrompt() throws InterruptedException, TimeoutException {
@@ -191,7 +188,6 @@
      * Test navigate to 2D page and launch the Location dialog.
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testLocationPermissionPrompt() throws InterruptedException, TimeoutException {
@@ -207,7 +203,6 @@
      * Test navigate to 2D page and launch the Notifications dialog.
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testNotificationPermissionPrompt() throws InterruptedException, TimeoutException {
@@ -223,7 +218,6 @@
      * Test navigate to 2D page and launch the MIDI dialog.
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testMidiPermisionPrompt() throws InterruptedException, TimeoutException {
@@ -239,7 +233,6 @@
      * Test navigate to 2D page and display a JavaScript alert().
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testJavaScriptAlert() throws InterruptedException, TimeoutException {
@@ -255,7 +248,6 @@
      * Test navigate to 2D page and display a JavaScript confirm();
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testJavaScriptConfirm() throws InterruptedException, TimeoutException {
@@ -282,7 +274,6 @@
      * it would outside of VR.
      */
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testJavaScriptPrompt() throws InterruptedException, TimeoutException {
@@ -307,7 +298,6 @@
     }
 
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testKeyboardAppearsOnUrlBarClick() throws InterruptedException, TimeoutException {
@@ -316,7 +306,6 @@
     }
 
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testOverflowMenuAppears() throws InterruptedException, TimeoutException {
@@ -325,7 +314,6 @@
     }
 
     @Test
-    @Manual
     @LargeTest
     @HeadTrackingMode(HeadTrackingMode.SupportedMode.FROZEN)
     public void testPageInfoAppearsOnSecurityTokenClick()
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellWebInputEditingTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellWebInputEditingTest.java
index bd96a25..70e58fe 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellWebInputEditingTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellWebInputEditingTest.java
@@ -10,6 +10,7 @@
 import static org.chromium.chrome.test.util.ChromeRestriction.RESTRICTION_TYPE_DEVICE_DAYDREAM;
 import static org.chromium.chrome.test.util.ChromeRestriction.RESTRICTION_TYPE_VIEWER_DAYDREAM;
 
+import android.graphics.PointF;
 import android.support.test.filters.MediumTest;
 
 import org.junit.Before;
@@ -23,6 +24,7 @@
 import org.chromium.chrome.browser.vr_shell.keyboard.TextEditAction;
 import org.chromium.chrome.browser.vr_shell.mock.MockBrowserKeyboardInterface;
 import org.chromium.chrome.browser.vr_shell.rules.ChromeTabbedActivityVrTestRule;
+import org.chromium.chrome.browser.vr_shell.util.NativeUiUtils;
 import org.chromium.chrome.browser.vr_shell.util.VrTransitionUtils;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
 import org.chromium.content.browser.test.util.Criteria;
@@ -46,7 +48,6 @@
     @Before
     public void setUp() throws Exception {
         mVrTestFramework = new VrTestFramework(mVrTestRule);
-        mController = new EmulatedVrController(mVrTestRule.getActivity());
     }
 
     /**
@@ -63,7 +64,6 @@
                 PAGE_LOAD_TIMEOUT_S);
         VrTransitionUtils.forceEnterVr();
         VrTransitionUtils.waitForVrEntry(POLL_TIMEOUT_LONG_MS);
-        mController.recenterView();
 
         VrShellImpl vrShellImpl = (VrShellImpl) TestVrShellDelegate.getVrShellForTesting();
         MockBrowserKeyboardInterface keyboard = new MockBrowserKeyboardInterface();
@@ -71,8 +71,9 @@
                 keyboard);
 
         // The webpage reacts to the first controller click by focusing its input field. Verify that
-        // focus gain spawns the keyboard.
-        mController.performControllerClick();
+        // focus gain spawns the keyboard by clicking in the center of the page.
+        NativeUiUtils.clickElementAndWaitForUiQuiescence(
+                UserFriendlyElementName.CONTENT_QUAD, new PointF());
         CriteriaHelper.pollInstrumentationThread(new Criteria() {
             @Override
             public boolean isSatisfied() {
@@ -93,12 +94,13 @@
             @Override
             public boolean isSatisfied() {
                 MockBrowserKeyboardInterface.Indices indices = keyboard.getLastIndices();
-                return indices.equals(expectedIndices);
+                return indices == null ? false : indices.equals(expectedIndices);
             }
         }, POLL_TIMEOUT_LONG_MS, POLL_CHECK_INTERVAL_SHORT_MS);
 
         // The second click should result in a focus loss and should hide the keyboard.
-        mController.performControllerClick();
+        NativeUiUtils.clickElementAndWaitForUiQuiescence(
+                UserFriendlyElementName.CONTENT_QUAD, new PointF());
         CriteriaHelper.pollInstrumentationThread(new Criteria() {
             @Override
             public boolean isSatisfied() {
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 89b4b29..af776c1 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -4930,7 +4930,7 @@
 <translation id="8814687660896548945">অনুগ্রহ করে অপেক্ষা করুন, আর্কাইভ স্ক্যান করা হচ্ছে...</translation>
 <translation id="881799181680267069">অন্যদের লুকান</translation>
 <translation id="8818152010000655963">ওয়ালপেপার</translation>
-<translation id="8820817407110198400">বুকমার্ক</translation>
+<translation id="8820817407110198400">বুকমার্কস</translation>
 <translation id="8821045908425223359">IP ঠিকানা স্বয়ংক্রিয়ভাবে কনফিগার করুন</translation>
 <translation id="882204272221080310">নিরাপত্তা আরও সুরক্ষার জন্য ফার্মওয়্যার আপডেট করুন।</translation>
 <translation id="8823514049557262177">লিঙ্ক টেক্সট কপি করুন</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 535429e..4966ff2 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1406,7 +1406,7 @@
 <translation id="3129140854689651517">Cerca el text</translation>
 <translation id="3129173833825111527">Marge esquerre</translation>
 <translation id="3130528281680948470">El dispositiu es restablirà i tots els comptes d'usuari i les dades del dispositiu s'eliminaran. Aquesta acció no es pot desfer.</translation>
-<translation id="313205617302240621">Heu oblidat la contrasenya?</translation>
+<translation id="313205617302240621">Has oblidat la contrasenya?</translation>
 <translation id="3132996321662585180">Actualitza diàriament</translation>
 <translation id="3135204511829026971">Gira la pantalla</translation>
 <translation id="313963229645891001">S'està baixant, <ph name="STATUS" /></translation>
@@ -1821,7 +1821,7 @@
 <translation id="3778152852029592020">La baixada s'ha cancel·lat.</translation>
 <translation id="3778740492972734840">Eines per a &amp;desenvolupadors</translation>
 <translation id="3778868487658107119">Fes-li preguntes o demana-li que faci coses. És el teu Google personal, sempre a punt per ajudar-te.</translation>
-<translation id="3780536599611287598">No tens permís per moure fitxers a "<ph name="FOLDER_NAME" />".</translation>
+<translation id="3780536599611287598">No tens permís per moure fitxers a <ph name="FOLDER_NAME" />.</translation>
 <translation id="378312418865624974">Llegeix un identificador únic per a aquest ordinador</translation>
 <translation id="3783640748446814672">alt</translation>
 <translation id="3785308913036335955">Mostra la drecera d'aplicacions</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index f904172..9e16f38 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -4078,7 +4078,7 @@
 <translation id="7328867076235380839">Ogiltig kombination</translation>
 <translation id="7329154610228416156">Inloggningen misslyckades eftersom den har konfigurerats att använda en webbadress som inte är säker (<ph name="BLOCKED_URL" />). Kontakta administratören.</translation>
 <translation id="7334190995941642545">Smart Lock är för närvarande inte tillgängligt. Försök igen senare.</translation>
-<translation id="7334274148831027933">Aktivera dockad skärmförstorare</translation>
+<translation id="7334274148831027933">Aktivera dockad skärmförstoring</translation>
 <translation id="7339763383339757376">PKCS #7, enstaka certifikat</translation>
 <translation id="7339785458027436441">Kontrollera stavning medan jag skriver</translation>
 <translation id="7339898014177206373">Nytt fönster</translation>
@@ -4462,7 +4462,7 @@
 <translation id="7912080627461681647">Lösenordet har ändrats på servern. Logga ut och logga sedan in igen.</translation>
 <translation id="7915471803647590281">Berätta för oss vad som händer innan du skickar feedback.</translation>
 <translation id="7916556741383518510">Vid klick</translation>
-<translation id="792514962475806987">Zoomnivå för dockad skärmförstorare</translation>
+<translation id="792514962475806987">Zoomnivå för dockad skärmförstoring</translation>
 <translation id="7925247922861151263">Kontroll med AAA misslyckades</translation>
 <translation id="7925285046818567682">Väntar på <ph name="HOST_NAME" />...</translation>
 <translation id="7925686952655276919">Använd inte mobildata för synkronisering</translation>
diff --git a/chrome/browser/android/compositor/layer/tab_layer.cc b/chrome/browser/android/compositor/layer/tab_layer.cc
index e5d694f..580102c 100644
--- a/chrome/browser/android/compositor/layer/tab_layer.cc
+++ b/chrome/browser/android/compositor/layer/tab_layer.cc
@@ -142,7 +142,8 @@
                              float toolbar_textbox_alpha,
                              float toolbar_alpha,
                              float toolbar_y_offset,
-                             float side_border_scale) {
+                             float side_border_scale,
+                             bool inset_border) {
   if (alpha <= 0) {
     layer_->SetHideLayerAndSubtree(true);
     return;
@@ -341,35 +342,39 @@
   //----------------------------------------------------------------------------
   // Handle Insetting the Top Border Component
   //----------------------------------------------------------------------------
-  descaled_local_content_area.set_height(descaled_local_content_area.height() -
-                                         border_padding.y());
-  scaled_local_content_area.set_height(scaled_local_content_area.height() -
-                                       border_padding.y() * content_scale);
-  shadow_size.set_height(shadow_size.height() - border_padding.y());
-  border_size.set_height(border_size.height() - border_padding.y());
-  border_inner_shadow_size.set_height(border_inner_shadow_size.height() -
-                                      border_padding.y());
-  contour_size.set_height(contour_size.height() - border_padding.y());
-  shadow_position.set_y(shadow_position.y() + border_padding.y());
-  border_position.set_y(border_position.y() + border_padding.y());
-  border_inner_shadow_position.set_y(border_inner_shadow_position.y() +
-                                     border_padding.y());
-  contour_position.set_y(contour_position.y() + border_padding.y());
-  close_button_position.set_y(close_button_position.y() + border_padding.y());
-  title_position.set_y(title_position.y() + border_padding.y());
+  if (inset_border) {
+    float inset_diff = inset_border ? border_padding.y() : 0.f;
+    descaled_local_content_area.set_height(
+        descaled_local_content_area.height() - inset_diff);
+    scaled_local_content_area.set_height(scaled_local_content_area.height() -
+                                         inset_diff * content_scale);
+    shadow_size.set_height(shadow_size.height() - inset_diff);
+    border_size.set_height(border_size.height() - inset_diff);
+    border_inner_shadow_size.set_height(
+        border_inner_shadow_size.height() - inset_diff);
+    contour_size.set_height(contour_size.height() - inset_diff);
+    shadow_position.set_y(shadow_position.y() + inset_diff);
+    border_position.set_y(border_position.y() + inset_diff);
+    border_inner_shadow_position.set_y(
+        border_inner_shadow_position.y() + inset_diff);
+    contour_position.set_y(contour_position.y() + inset_diff);
+    close_button_position.set_y(close_button_position.y() + inset_diff);
+    title_position.set_y(title_position.y() + inset_diff);
 
-  // Scaled eventually, so have to descale the size difference first.
-  toolbar_position.set_y(toolbar_position.y() +
-                         border_padding.y() / content_scale);
-  content_position.set_y(content_position.y() +
-                         border_padding.y() / content_scale);
-  desired_content_size_pt.set_y(desired_content_size_pt.y() -
-                                border_padding.y() / content_scale);
+    // Scaled eventually, so have to descale the size difference first.
+    toolbar_position.set_y(toolbar_position.y() + inset_diff / content_scale);
+    content_position.set_y(content_position.y() + inset_diff / content_scale);
+    desired_content_size_pt.set_y(desired_content_size_pt.y() -
+                                  inset_diff / content_scale);
+  }
 
-  toolbar_position.set_y(toolbar_position.y() - toolbar_impact_height);
-  content_position.set_y(content_position.y() - toolbar_impact_height);
-  desired_content_size_pt.set_y(desired_content_size_pt.y() +
-                                toolbar_impact_height);
+  const bool inset_toolbar = !inset_border;
+  if (!inset_toolbar) {
+    float inset_diff = toolbar_impact_height;
+    toolbar_position.set_y(toolbar_position.y() - inset_diff);
+    content_position.set_y(content_position.y() - inset_diff);
+    desired_content_size_pt.set_y(desired_content_size_pt.y() + inset_diff);
+  }
 
   // Finally build the sizes that might have calculations that go negative.
   gfx::Size desired_content_size(desired_content_size_pt.x(),
diff --git a/chrome/browser/android/compositor/layer/tab_layer.h b/chrome/browser/android/compositor/layer/tab_layer.h
index 4b11e21..cf63508 100644
--- a/chrome/browser/android/compositor/layer/tab_layer.h
+++ b/chrome/browser/android/compositor/layer/tab_layer.h
@@ -93,7 +93,8 @@
                      float toolbar_textbox_alpha,
                      float toolbar_alpha,
                      float toolbar_y_offset,
-                     float side_border_scale);
+                     float side_border_scale,
+                     bool inset_border);
 
   bool is_incognito() const { return incognito_; }
 
diff --git a/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.cc
index 6b56049..bd7f536d 100644
--- a/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.cc
+++ b/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.cc
@@ -139,7 +139,8 @@
                                     jfloat toolbar_textbox_alpha,
                                     jfloat toolbar_alpha,
                                     jfloat toolbar_y_offset,
-                                    jfloat side_border_scale) {
+                                    jfloat side_border_scale,
+                                    jboolean inset_border) {
   scoped_refptr<TabLayer> layer;
   auto iter = tab_map_.find(id);
   if (iter != tab_map_.end()) {
@@ -177,7 +178,7 @@
         default_theme_color, toolbar_background_color, close_button_color,
         anonymize_toolbar, show_tab_title, toolbar_textbox_resource_id,
         toolbar_textbox_background_color, toolbar_textbox_alpha, toolbar_alpha,
-        toolbar_y_offset, side_border_scale);
+        toolbar_y_offset, side_border_scale, inset_border);
   }
 
   gfx::RectF self(own_tree_->position(), gfx::SizeF(own_tree_->bounds()));
diff --git a/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.h b/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.h
index 318ce2a..562b387 100644
--- a/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.h
+++ b/chrome/browser/android/compositor/scene_layer/tab_list_scene_layer.h
@@ -100,7 +100,8 @@
                    jfloat toolbar_textbox_alpha,
                    jfloat toolbar_alpha,
                    jfloat toolbar_y_offset,
-                   jfloat side_border_scale);
+                   jfloat side_border_scale,
+                   jboolean inset_border);
 
   void OnDetach() override;
   bool ShouldShowBackground() override;
diff --git a/chrome/browser/android/vr/vr_shell.cc b/chrome/browser/android/vr/vr_shell.cc
index e7d3870c..694849cc 100644
--- a/chrome/browser/android/vr/vr_shell.cc
+++ b/chrome/browser/android/vr/vr_shell.cc
@@ -662,6 +662,10 @@
     float height) {
   if (ui_surface_texture_)
     ui_surface_texture_->SetDefaultBufferSize(width, height);
+  PostToGlThread(
+      FROM_HERE,
+      base::BindOnce(&VrShellGl::DialogBufferBoundsChanged,
+                     gl_thread_->GetVrShellGl(), gfx::Size(width, height)));
 }
 
 void VrShell::SetAlertDialogSize(
diff --git a/chrome/browser/android/vr/vr_shell_gl.cc b/chrome/browser/android/vr/vr_shell_gl.cc
index 138287d4..50d717d 100644
--- a/chrome/browser/android/vr/vr_shell_gl.cc
+++ b/chrome/browser/android/vr/vr_shell_gl.cc
@@ -441,8 +441,8 @@
       content_tex_buffer_size_.width(), content_tex_buffer_size_.height());
   content_overlay_surface_texture_->SetDefaultBufferSize(
       content_tex_buffer_size_.width(), content_tex_buffer_size_.height());
-  ui_surface_texture_->SetDefaultBufferSize(content_tex_buffer_size_.width(),
-                                            content_tex_buffer_size_.height());
+  ui_surface_texture_->SetDefaultBufferSize(dialog_tex_buffer_size_.width(),
+                                            dialog_tex_buffer_size_.height());
 
   webvr_vsync_align_ = base::FeatureList::IsEnabled(features::kWebVrVsyncAlign);
 
@@ -887,8 +887,8 @@
   vr_dialog_input_delegate_.reset(new PlatformUiInputDelegate(input_handler));
   vr_dialog_input_delegate_->SetSize(width, height);
   ui_->SetAlertDialogEnabled(true, vr_dialog_input_delegate_.get(),
-                             width / content_tex_buffer_size_.width(),
-                             height / content_tex_buffer_size_.width());
+                             width / dialog_tex_buffer_size_.width(),
+                             height / dialog_tex_buffer_size_.width());
   ScheduleOrCancelWebVrFrameTimeout();
 }
 
@@ -902,8 +902,8 @@
 void VrShellGl::SetAlertDialogSize(float width, float height) {
   if (vr_dialog_input_delegate_)
     vr_dialog_input_delegate_->SetSize(width, height);
-  ui_->SetAlertDialogSize(width / content_tex_buffer_size_.width(),
-                          height / content_tex_buffer_size_.width());
+  ui_->SetAlertDialogSize(width / dialog_tex_buffer_size_.width(),
+                          height / dialog_tex_buffer_size_.width());
 }
 
 void VrShellGl::SetDialogLocation(float x, float y) {
@@ -1286,6 +1286,14 @@
     test_controller_model_queue_.pop();
   }
   if (using_test_controller_model_) {
+    // We need to copy the timestamps, otherwise we hit a DCHECK when submitting
+    // motion events due to invalid timestamps.
+    cached_test_controller_model_.last_orientation_timestamp =
+        controller_model.last_orientation_timestamp;
+    cached_test_controller_model_.last_touch_timestamp =
+        controller_model.last_touch_timestamp;
+    cached_test_controller_model_.last_button_timestamp =
+        controller_model.last_button_timestamp;
     controller_model = cached_test_controller_model_;
   }
   controller_model_ = controller_model;
@@ -2143,6 +2151,10 @@
   content_tex_buffer_size_ = content_buffer_size;
 }
 
+void VrShellGl::DialogBufferBoundsChanged(const gfx::Size& size) {
+  dialog_tex_buffer_size_ = size;
+}
+
 base::WeakPtr<VrShellGl> VrShellGl::GetWeakPtr() {
   return weak_ptr_factory_.GetWeakPtr();
 }
diff --git a/chrome/browser/android/vr/vr_shell_gl.h b/chrome/browser/android/vr/vr_shell_gl.h
index 3d93bc2..e41015d 100644
--- a/chrome/browser/android/vr/vr_shell_gl.h
+++ b/chrome/browser/android/vr/vr_shell_gl.h
@@ -300,6 +300,7 @@
   void ContentBoundsChanged(int width, int height);
   void BufferBoundsChanged(const gfx::Size& content_buffer_size,
                            const gfx::Size& overlay_buffer_size);
+  void DialogBufferBoundsChanged(const gfx::Size& size);
   void UIBoundsChanged(int width, int height);
   void ResumeContentRendering();
 
@@ -519,8 +520,9 @@
   bool cardboard_ = false;
   gfx::Quaternion controller_quat_;
 
-  gfx::Size content_tex_buffer_size_ = {0, 0};
-  gfx::Size webvr_surface_size_ = {0, 0};
+  gfx::Size content_tex_buffer_size_;
+  gfx::Size webvr_surface_size_;
+  gfx::Size dialog_tex_buffer_size_;
 
   std::unique_ptr<WebXrPresentationState> webxr_ = nullptr;
 
diff --git a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc
index 84c6a4b23..cf72cd3 100644
--- a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc
+++ b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.cc
@@ -1142,7 +1142,6 @@
     SetPrimaryUserBluetoothPowerSetting(true);
 
   std::move(callback).Run(mojom::BluetoothAdapterState::ON);
-  SendCachedPairedDevices();
 }
 
 void ArcBluetoothBridge::OnPoweredOff(
@@ -2744,27 +2743,6 @@
     SendDevice(device, /* include_cached_device = */ true);
 }
 
-void ArcBluetoothBridge::SendCachedPairedDevices() const {
-  DCHECK(bluetooth_adapter_);
-
-  BluetoothAdapter::DeviceList devices = bluetooth_adapter_->GetDevices();
-  for (auto* device : devices) {
-    if (!device->IsPaired())
-      continue;
-
-    SendDevice(device, /* include_cached_device = */ true);
-
-    // OnBondStateChanged must be called with mojom::BluetoothBondState::BONDING
-    // to make sure the bond state machine on Android is ready to take the
-    // pair-done event. Otherwise the pair-done event will be dropped as an
-    // invalid change of paired status.
-    mojom::BluetoothAddressPtr addr =
-        mojom::BluetoothAddress::From(device->GetAddress());
-    OnPairing(addr->Clone());
-    OnPairedDone(std::move(addr));
-  }
-}
-
 void ArcBluetoothBridge::OnGetServiceRecordsDone(
     mojom::BluetoothAddressPtr remote_addr,
     const BluetoothUUID& target_uuid,
diff --git a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h
index 869c0803..d389ebc 100644
--- a/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h
+++ b/chrome/browser/chromeos/arc/bluetooth/arc_bluetooth_bridge.h
@@ -432,9 +432,6 @@
   // Send the power status change to Android via an intent.
   void SendBluetoothPoweredStateBroadcast(AdapterPowerState powered) const;
 
-  // Propagates the list of paired device to Android.
-  void SendCachedPairedDevices() const;
-
   bool IsGattServerAttributeHandleAvailable(int need);
   int32_t GetNextGattServerAttributeHandle();
   template <class LocalGattAttribute>
diff --git a/chrome/browser/chromeos/login/screens/user_selection_screen.cc b/chrome/browser/chromeos/login/screens/user_selection_screen.cc
index adbf64a..123991b 100644
--- a/chrome/browser/chromeos/login/screens/user_selection_screen.cc
+++ b/chrome/browser/chromeos/login/screens/user_selection_screen.cc
@@ -99,7 +99,7 @@
 // Get locales information of public account user.
 // Returns a list of available locales.
 // |public_session_recommended_locales|: This can be nullptr if we don't have
-// recommanded locales.
+// recommended locales.
 // |out_selected_locale|: Output value of the initially selected locale.
 // |out_multiple_locales|: Output value indicates whether we have multiple
 // recommended locales.
@@ -362,7 +362,7 @@
 
 // static
 void UserSelectionScreen::FillUserDictionary(
-    user_manager::User* user,
+    const user_manager::User* user,
     bool is_owner,
     bool is_signin_to_add,
     proximity_auth::mojom::AuthType auth_type,
@@ -397,7 +397,7 @@
 
 // static
 void UserSelectionScreen::FillMultiProfileUserPrefs(
-    user_manager::User* user,
+    const user_manager::User* user,
     base::DictionaryValue* user_dict,
     bool is_signin_to_add) {
   if (!is_signin_to_add) {
@@ -487,56 +487,6 @@
   return avatar;
 }
 
-// static
-void UserSelectionScreen::FillUserMojoStruct(
-    const user_manager::User* user,
-    bool is_owner,
-    bool is_signin_to_add,
-    proximity_auth::mojom::AuthType auth_type,
-    const std::vector<std::string>* public_session_recommended_locales,
-    ash::mojom::LoginUserInfo* user_info) {
-  user_info->basic_user_info = ash::mojom::UserInfo::New();
-  user_info->basic_user_info->type = user->GetType();
-  user_info->basic_user_info->account_id = user->GetAccountId();
-  user_info->basic_user_info->display_name =
-      base::UTF16ToUTF8(user->GetDisplayName());
-  user_info->basic_user_info->display_email = user->display_email();
-  user_info->basic_user_info->avatar = BuildMojoUserAvatarForUser(user);
-  user_info->auth_type = auth_type;
-  user_info->is_signed_in = user->is_logged_in();
-  user_info->is_device_owner = is_owner;
-  user_info->can_remove = CanRemoveUser(user);
-  user_info->allow_fingerprint_unlock = AllowFingerprintForUser(user);
-
-  // Fill multi-profile data.
-  if (!is_signin_to_add) {
-    user_info->is_multiprofile_allowed = true;
-  } else {
-    GetMultiProfilePolicy(user, &user_info->is_multiprofile_allowed,
-                          &user_info->multiprofile_policy);
-  }
-
-  // Fill public session data.
-  if (user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT) {
-    user_info->public_account_info = ash::mojom::PublicAccountInfo::New();
-    std::string domain;
-    if (GetEnterpriseDomain(&domain))
-      user_info->public_account_info->enterprise_domain = domain;
-
-    std::string selected_locale;
-    bool has_multiple_locales;
-    std::unique_ptr<base::ListValue> available_locales =
-        GetPublicSessionLocales(public_session_recommended_locales,
-                                &selected_locale, &has_multiple_locales);
-    DCHECK(available_locales);
-    user_info->public_account_info->available_locales =
-        lock_screen_utils::FromListValueToLocaleItem(
-            std::move(available_locales));
-    user_info->public_account_info->default_locale = selected_locale;
-    user_info->public_account_info->show_advanced_view = has_multiple_locales;
-  }
-}
-
 void UserSelectionScreen::SetHandler(LoginDisplayWebUIHandler* handler) {
   handler_ = handler;
 
@@ -561,8 +511,7 @@
 }
 
 void UserSelectionScreen::OnBeforeUserRemoved(const AccountId& account_id) {
-  for (user_manager::UserList::iterator it = users_.begin(); it != users_.end();
-       ++it) {
+  for (auto it = users_.cbegin(); it != users_.cend(); ++it) {
     if ((*it)->GetAccountId() == account_id) {
       users_.erase(it);
       break;
@@ -607,11 +556,10 @@
   size_t max_non_owner_users = has_owner ? kMaxUsers - 1 : kMaxUsers;
   size_t non_owner_count = 0;
 
-  for (user_manager::UserList::const_iterator it = users.begin();
-       it != users.end(); ++it) {
-    bool is_owner = ((*it)->GetAccountId() == owner);
+  for (user_manager::User* user : users) {
+    bool is_owner = user->GetAccountId() == owner;
     bool is_public_account =
-        ((*it)->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT);
+        user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT;
 
     if ((is_public_account && !is_signin_to_add) || is_owner ||
         (!is_public_account && non_owner_count < max_non_owner_users)) {
@@ -619,11 +567,11 @@
         ++non_owner_count;
       if (is_owner && users_to_send.size() > kMaxUsers) {
         // Owner is always in the list.
-        users_to_send.insert(users_to_send.begin() + (kMaxUsers - 1), *it);
+        users_to_send.insert(users_to_send.begin() + (kMaxUsers - 1), user);
         while (users_to_send.size() > kMaxUsers)
           users_to_send.erase(users_to_send.begin() + kMaxUsers);
       } else if (users_to_send.size() < kMaxUsers) {
-        users_to_send.push_back(*it);
+        users_to_send.push_back(user);
       }
     }
   }
@@ -803,16 +751,15 @@
 
   user_auth_type_map_.clear();
 
-  for (user_manager::UserList::const_iterator it = users_to_send_.begin();
-       it != users_to_send_.end(); ++it) {
-    const AccountId& account_id = (*it)->GetAccountId();
+  for (const user_manager::User* user : users_to_send_) {
+    const AccountId& account_id = user->GetAccountId();
     bool is_owner = (account_id == owner);
     const bool is_public_account =
-        ((*it)->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT);
+        user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT;
     const proximity_auth::mojom::AuthType initial_auth_type =
         is_public_account
             ? proximity_auth::mojom::AuthType::EXPAND_THEN_USER_CLICK
-            : (ShouldForceOnlineSignIn(*it)
+            : (ShouldForceOnlineSignIn(user)
                    ? proximity_auth::mojom::AuthType::ONLINE_SIGN_IN
                    : proximity_auth::mojom::AuthType::OFFLINE_PASSWORD);
     user_auth_type_map_[account_id] = initial_auth_type;
@@ -823,9 +770,9 @@
                 public_session_recommended_locales_.end()
             ? nullptr
             : &public_session_recommended_locales_[account_id];
-    FillUserDictionary(*it, is_owner, is_signin_to_add, initial_auth_type,
+    FillUserDictionary(user, is_owner, is_signin_to_add, initial_auth_type,
                        public_session_recommended_locales, user_dict.get());
-    user_dict->SetBoolean(kKeyCanRemove, CanRemoveUser(*it));
+    user_dict->SetBoolean(kKeyCanRemove, CanRemoveUser(user));
     users_list->Append(std::move(user_dict));
   }
 
@@ -842,39 +789,75 @@
 
   user_auth_type_map_.clear();
 
-  for (user_manager::UserList::const_iterator it = users_to_send_.begin();
-       it != users_to_send_.end(); ++it) {
-    const AccountId& account_id = (*it)->GetAccountId();
+  for (const user_manager::User* user : users_to_send_) {
+    const AccountId& account_id = user->GetAccountId();
     bool is_owner = owner == account_id;
     const bool is_public_account =
-        ((*it)->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT);
+        user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT;
     const proximity_auth::mojom::AuthType initial_auth_type =
         is_public_account
             ? proximity_auth::mojom::AuthType::EXPAND_THEN_USER_CLICK
-            : (ShouldForceOnlineSignIn(*it)
+            : (ShouldForceOnlineSignIn(user)
                    ? proximity_auth::mojom::AuthType::ONLINE_SIGN_IN
                    : proximity_auth::mojom::AuthType::OFFLINE_PASSWORD);
     user_auth_type_map_[account_id] = initial_auth_type;
 
-    ash::mojom::LoginUserInfoPtr login_user_info =
-        ash::mojom::LoginUserInfo::New();
-    const std::vector<std::string>* public_session_recommended_locales =
-        public_session_recommended_locales_.find(account_id) ==
-                public_session_recommended_locales_.end()
-            ? nullptr
-            : &public_session_recommended_locales_[account_id];
-    FillUserMojoStruct(*it, is_owner, is_signin_to_add, initial_auth_type,
-                       public_session_recommended_locales,
-                       login_user_info.get());
-    login_user_info->can_remove = CanRemoveUser(*it);
+    ash::mojom::LoginUserInfoPtr user_info = ash::mojom::LoginUserInfo::New();
+    user_info->basic_user_info = ash::mojom::UserInfo::New();
+    user_info->basic_user_info->type = user->GetType();
+    user_info->basic_user_info->account_id = user->GetAccountId();
+    user_info->basic_user_info->display_name =
+        base::UTF16ToUTF8(user->GetDisplayName());
+    user_info->basic_user_info->display_email = user->display_email();
+    user_info->basic_user_info->avatar = BuildMojoUserAvatarForUser(user);
+    user_info->auth_type = initial_auth_type;
+    user_info->is_signed_in = user->is_logged_in();
+    user_info->is_device_owner = is_owner;
+    user_info->can_remove = CanRemoveUser(user);
+    user_info->allow_fingerprint_unlock = AllowFingerprintForUser(user);
+
+    // Fill multi-profile data.
+    if (!is_signin_to_add) {
+      user_info->is_multiprofile_allowed = true;
+    } else {
+      GetMultiProfilePolicy(user, &user_info->is_multiprofile_allowed,
+                            &user_info->multiprofile_policy);
+    }
+
+    // Fill public session data.
+    if (user->GetType() == user_manager::USER_TYPE_PUBLIC_ACCOUNT) {
+      user_info->public_account_info = ash::mojom::PublicAccountInfo::New();
+      std::string domain;
+      if (GetEnterpriseDomain(&domain))
+        user_info->public_account_info->enterprise_domain = domain;
+
+      const std::vector<std::string>* public_session_recommended_locales =
+          public_session_recommended_locales_.find(account_id) ==
+                  public_session_recommended_locales_.end()
+              ? nullptr
+              : &public_session_recommended_locales_[account_id];
+      std::string selected_locale;
+      bool has_multiple_locales;
+      std::unique_ptr<base::ListValue> available_locales =
+          GetPublicSessionLocales(public_session_recommended_locales,
+                                  &selected_locale, &has_multiple_locales);
+      DCHECK(available_locales);
+      user_info->public_account_info->available_locales =
+          lock_screen_utils::FromListValueToLocaleItem(
+              std::move(available_locales));
+      user_info->public_account_info->default_locale = selected_locale;
+      user_info->public_account_info->show_advanced_view = has_multiple_locales;
+    }
+
+    user_info->can_remove = CanRemoveUser(user);
 
     // Send a request to get keyboard layouts for default locale.
     if (is_public_account && LoginScreenClient::HasInstance()) {
       LoginScreenClient::Get()->RequestPublicSessionKeyboardLayouts(
-          account_id, login_user_info->public_account_info->default_locale);
+          account_id, user_info->public_account_info->default_locale);
     }
 
-    user_info_list.push_back(std::move(login_user_info));
+    user_info_list.push_back(std::move(user_info));
   }
 
   return user_info_list;
diff --git a/chrome/browser/chromeos/login/screens/user_selection_screen.h b/chrome/browser/chromeos/login/screens/user_selection_screen.h
index 8ddccf9..44685ab 100644
--- a/chrome/browser/chromeos/login/screens/user_selection_screen.h
+++ b/chrome/browser/chromeos/login/screens/user_selection_screen.h
@@ -98,7 +98,7 @@
 
   // Fills |user_dict| with information about |user|.
   static void FillUserDictionary(
-      user_manager::User* user,
+      const user_manager::User* user,
       bool is_owner,
       bool is_signin_to_add,
       proximity_auth::mojom::AuthType auth_type,
@@ -106,7 +106,7 @@
       base::DictionaryValue* user_dict);
 
   // Fills |user_dict| with |user| multi-profile related preferences.
-  static void FillMultiProfileUserPrefs(user_manager::User* user,
+  static void FillMultiProfileUserPrefs(const user_manager::User* user,
                                         base::DictionaryValue* user_dict,
                                         bool is_signin_to_add);
 
@@ -118,15 +118,6 @@
   static ash::mojom::UserAvatarPtr BuildMojoUserAvatarForUser(
       const user_manager::User* user);
 
-  // Fills |user_info| with information about |user|.
-  static void FillUserMojoStruct(
-      const user_manager::User* user,
-      bool is_owner,
-      bool is_signin_to_add,
-      proximity_auth::mojom::AuthType auth_type,
-      const std::vector<std::string>* public_session_recommended_locales,
-      ash::mojom::LoginUserInfo* user_info);
-
   std::unique_ptr<base::ListValue> UpdateAndReturnUserListForWebUI();
   std::vector<ash::mojom::LoginUserInfoPtr> UpdateAndReturnUserListForMojo();
   void SetUsersLoaded(bool loaded);
@@ -158,7 +149,7 @@
   // Set of Users that are visible.
   user_manager::UserList users_;
 
-  // Map of accounnt ids to their current authentication type. If a user is not
+  // Map of account ids to their current authentication type. If a user is not
   // contained in the map, it is using the default authentication type.
   std::map<AccountId, proximity_auth::mojom::AuthType> user_auth_type_map_;
 
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
index 8784e0d5..fc13ca52 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
@@ -39,7 +39,6 @@
 #include "chrome/browser/chromeos/login/login_wizard.h"
 #include "chrome/browser/chromeos/login/screens/core_oobe_view.h"
 #include "chrome/browser/chromeos/login/screens/gaia_view.h"
-#include "chrome/browser/chromeos/login/signin/token_handle_util.h"
 #include "chrome/browser/chromeos/login/startup_utils.h"
 #include "chrome/browser/chromeos/login/ui/input_events_blocker.h"
 #include "chrome/browser/chromeos/login/ui/login_display_host_mojo.h"
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_util.cc b/chrome/browser/chromeos/login/users/chrome_user_manager_util.cc
index 86d2233..dfbd69e 100644
--- a/chrome/browser/chromeos/login/users/chrome_user_manager_util.cc
+++ b/chrome/browser/chromeos/login/users/chrome_user_manager_util.cc
@@ -113,10 +113,15 @@
 bool IsGuestSessionAllowed(const CrosSettings* cros_settings) {
   const AccountId& owner_account_id =
       user_manager::UserManager::Get()->GetOwnerAccountId();
-  if (owner_account_id.is_valid() &&
-      user_manager::UserManager::Get()->FindUser(owner_account_id)->GetType() ==
-          user_manager::UserType::USER_TYPE_CHILD) {
-    return false;
+  if (owner_account_id.is_valid()) {
+    // Some Autotest policy tests appear to wipe the user list in Local State
+    // but preserve a policy file referencing an owner: https://crbug.com/850139
+    const user_manager::User* owner_user =
+        user_manager::UserManager::Get()->FindUser(owner_account_id);
+    if (owner_user &&
+        owner_user->GetType() == user_manager::UserType::USER_TYPE_CHILD) {
+      return false;
+    }
   }
 
   // In tests CrosSettings might not be initialized.
diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc
index 49cb95f..3d23f6f6 100644
--- a/chrome/browser/extensions/api/tabs/tabs_api.cc
+++ b/chrome/browser/extensions/api/tabs/tabs_api.cc
@@ -645,20 +645,21 @@
   }
   chrome::SelectNumberedTab(new_window, 0);
 
+  if (focused)
+    new_window->window()->Show();
+  else
+    new_window->window()->ShowInactive();
+
 #if defined(OS_CHROMEOS)
   // Lock the window fullscreen only after the new tab has been created
-  // (otherwise the tabstrip is empty).
+  // (otherwise the tabstrip is empty), and window()->show() has been called
+  // (otherwise that resets the locked mode for devices in tablet mode).
   if (create_data &&
       create_data->state == windows::WINDOW_STATE_LOCKED_FULLSCREEN) {
     SetLockedFullscreenState(new_window, true);
   }
 #endif
 
-  if (focused)
-    new_window->window()->Show();
-  else
-    new_window->window()->ShowInactive();
-
   std::unique_ptr<base::Value> result;
   if (new_window->profile()->IsOffTheRecord() &&
       !browser_context()->IsOffTheRecord() &&
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index f64f8b2..3eeead6a 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -1400,10 +1400,6 @@
       pending_extension_manager()->GetById(id);
   if (pending_extension_info) {
     if (!pending_extension_info->ShouldAllowInstall(extension)) {
-      // Hack for crbug.com/558299, see comment on DeleteThemeDoNotUse.
-      if (extension->is_theme() && pending_extension_info->is_from_sync())
-        ExtensionSyncService::Get(profile_)->DeleteThemeDoNotUse(*extension);
-
       pending_extension_manager()->Remove(id);
 
       LOG(WARNING) << "ShouldAllowInstall() returned false for " << id
diff --git a/chrome/browser/extensions/extension_sync_service.cc b/chrome/browser/extensions/extension_sync_service.cc
index c5f150e..ffb601e 100644
--- a/chrome/browser/extensions/extension_sync_service.cc
+++ b/chrome/browser/extensions/extension_sync_service.cc
@@ -57,11 +57,11 @@
 }
 
 // Predicate for PendingExtensionManager.
-// TODO(treib,devlin): The !is_theme check shouldn't be necessary anymore after
-// all the bad data from crbug.com/558299 has been cleaned up, after M52 or so.
 bool ShouldAllowInstall(const Extension* extension) {
-  return !extension->is_theme() &&
-         extensions::sync_helper::IsSyncable(extension);
+  // Note: In the past, there was a bug where some themes incorrectly ended up
+  // here, see https://crbug.com/558299. Make sure that doesn't happen anymore.
+  CHECK(!extension->is_theme());
+  return extensions::sync_helper::IsSyncable(extension);
 }
 
 syncer::SyncDataList ToSyncerSyncDataList(
@@ -493,11 +493,8 @@
     check_for_updates = true;
   } else if (state == NOT_INSTALLED) {
     if (!extension_service()->pending_extension_manager()->AddFromSync(
-            id,
-            extension_sync_data.update_url(),
-            extension_sync_data.version(),
-            ShouldAllowInstall,
-            extension_sync_data.remote_install())) {
+            id, extension_sync_data.update_url(), extension_sync_data.version(),
+            ShouldAllowInstall, extension_sync_data.remote_install())) {
       LOG(WARNING) << "Could not add pending extension for " << id;
       // This means that the extension is already pending installation, with a
       // non-INTERNAL location.  Add to pending_sync_data, even though it will
@@ -563,12 +560,6 @@
   flare_ = flare;
 }
 
-void ExtensionSyncService::DeleteThemeDoNotUse(const Extension& theme) {
-  DCHECK(theme.is_theme());
-  GetSyncBundle(syncer::EXTENSIONS)->PushSyncDeletion(
-      theme.id(), CreateSyncData(theme).GetSyncData());
-}
-
 extensions::ExtensionService* ExtensionSyncService::extension_service() const {
   return ExtensionSystem::Get(profile_)->extension_service();
 }
diff --git a/chrome/browser/extensions/extension_sync_service.h b/chrome/browser/extensions/extension_sync_service.h
index 878b5ba..3a86afd 100644
--- a/chrome/browser/extensions/extension_sync_service.h
+++ b/chrome/browser/extensions/extension_sync_service.h
@@ -67,12 +67,6 @@
   void SetSyncStartFlareForTesting(
       const syncer::SyncableService::StartSyncFlare& flare);
 
-  // Special hack: There was a bug where themes incorrectly ended up in the
-  // syncer::EXTENSIONS type. This is for cleaning up the data. crbug.com/558299
-  // DO NOT USE FOR ANYTHING ELSE!
-  // TODO(treib,devlin): Remove this after M52 or so.
-  void DeleteThemeDoNotUse(const extensions::Extension& theme);
-
  private:
   FRIEND_TEST_ALL_PREFIXES(TwoClientAppsSyncTest, UnexpectedLaunchType);
   FRIEND_TEST_ALL_PREFIXES(ExtensionDisabledGlobalErrorTest,
diff --git a/chrome/browser/media/webrtc/webrtc_audio_quality_browsertest.cc b/chrome/browser/media/webrtc/webrtc_audio_quality_browsertest.cc
index f4c50de..5d06a0d 100644
--- a/chrome/browser/media/webrtc/webrtc_audio_quality_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_audio_quality_browsertest.cc
@@ -66,6 +66,14 @@
   200;
 #endif
 
+// Temporarily disabled on Win (https://crbug.com/850936).
+#if defined(OS_LINUX) || defined(OS_MACOSX)
+#define MAYBE_WebRtcAudioQualityBrowserTest WebRtcAudioQualityBrowserTest
+#else
+// Not implemented on Android, ChromeOS etc.
+#define MAYBE_WebRtcAudioQualityBrowserTest DISABLED_WebRtcAudioQualityBrowserTest
+#endif
+
 }  // namespace
 
 // Test we can set up a WebRTC call and play audio through it.
@@ -127,9 +135,9 @@
 //    50 / 100 in level. Also go into the playback tab, right-click Speakers,
 //    and set that level to 50 / 100. Otherwise you will get distortion in
 //    the recording.
-class WebRtcAudioQualityBrowserTest : public WebRtcTestBase {
+class MAYBE_WebRtcAudioQualityBrowserTest : public WebRtcTestBase {
  public:
-  WebRtcAudioQualityBrowserTest() {}
+  MAYBE_WebRtcAudioQualityBrowserTest() {}
   void SetUpInProcessBrowserTestFixture() override {
     DetectErrorsInJavaScript();  // Look for errors in our rather complex js.
   }
@@ -650,7 +658,7 @@
 // plenty of time. Similarly, the recording time should be enough to catch the
 // whole reference file. If you then silence-trim the reference file and actual
 // file, you should end up with two time-synchronized files.
-void WebRtcAudioQualityBrowserTest::SetupAndRecordAudioCall(
+void MAYBE_WebRtcAudioQualityBrowserTest::SetupAndRecordAudioCall(
     const base::FilePath& recording,
     const std::string& constraints,
     const base::TimeDelta recording_time) {
@@ -681,7 +689,7 @@
   HangUp(left_tab);
 }
 
-void WebRtcAudioQualityBrowserTest::TestWithFakeDeviceGetUserMedia(
+void MAYBE_WebRtcAudioQualityBrowserTest::TestWithFakeDeviceGetUserMedia(
     const std::string& constraints,
     const std::string& perf_modifier) {
   if (OnWin8OrHigher()) {
@@ -699,13 +707,13 @@
   DeleteFileUnlessTestFailed(recording, false);
 }
 
-IN_PROC_BROWSER_TEST_F(WebRtcAudioQualityBrowserTest,
+IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest,
                        MANUAL_TestCallQualityWithAudioFromFakeDevice) {
   base::ScopedAllowBlockingForTesting allow_blocking;
   TestWithFakeDeviceGetUserMedia(kAudioOnlyCallConstraints, "_getusermedia");
 }
 
-IN_PROC_BROWSER_TEST_F(WebRtcAudioQualityBrowserTest,
+IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest,
                        MANUAL_TestCallQualityWithAudioFromWebAudio) {
   base::ScopedAllowBlockingForTesting allow_blocking;
   if (OnWin8OrHigher()) {
@@ -779,7 +787,7 @@
  * device currently supports, and we want to be able to compare directly. See
  * http://crbug.com/421054.
  */
-void WebRtcAudioQualityBrowserTest::TestAutoGainControl(
+void MAYBE_WebRtcAudioQualityBrowserTest::TestAutoGainControl(
     const std::string& constraints,
     const std::string& perf_modifier) {
   if (OnWin8OrHigher()) {
@@ -817,7 +825,7 @@
 }
 
 // The AGC should apply non-zero gain here.
-IN_PROC_BROWSER_TEST_F(WebRtcAudioQualityBrowserTest,
+IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest,
                        MANUAL_TestAutoGainControlOnLowAudio) {
   base::ScopedAllowBlockingForTesting allow_blocking;
   // Disables AEC, but leaves AGC on.
@@ -828,7 +836,7 @@
 }
 
 // Since the AGC is off here there should be no gain at all.
-IN_PROC_BROWSER_TEST_F(WebRtcAudioQualityBrowserTest,
+IN_PROC_BROWSER_TEST_F(MAYBE_WebRtcAudioQualityBrowserTest,
                        MANUAL_TestAutoGainIsOffWithAudioProcessingOff) {
   base::ScopedAllowBlockingForTesting allow_blocking;
   const char* kAudioCallWithoutAudioProcessing =
diff --git a/chrome/browser/offline_pages/offline_page_request_handler.h b/chrome/browser/offline_pages/offline_page_request_handler.h
index 02e2f52..c1b70ac 100644
--- a/chrome/browser/offline_pages/offline_page_request_handler.h
+++ b/chrome/browser/offline_pages/offline_page_request_handler.h
@@ -19,6 +19,7 @@
 
 namespace base {
 class FilePath;
+class TaskRunner;
 }
 
 namespace net {
diff --git a/chrome/browser/password_manager/OWNERS b/chrome/browser/password_manager/OWNERS
index d54a53a..ef0b364 100644
--- a/chrome/browser/password_manager/OWNERS
+++ b/chrome/browser/password_manager/OWNERS
@@ -1,8 +1,9 @@
 dvadym@chromium.org
+jdoerrie@chromium.org
 kolos@chromium.org
 vabr@chromium.org
 vasilii@chromium.org
 
 per-file generated_password_saved_infobar_delegate_android.*=rouslan@chromium.org
 
-# COMPONENT: UI>Browser>Passwords 
+# COMPONENT: UI>Browser>Passwords
diff --git a/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc b/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc
index dae13a2..dcc1868 100644
--- a/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc
+++ b/chrome/browser/renderer_host/render_process_host_chrome_browsertest.cc
@@ -527,21 +527,21 @@
 class WindowDestroyer : public content::WebContentsObserver {
  public:
   WindowDestroyer(content::WebContents* web_contents, TabStripModel* model)
-      : content::WebContentsObserver(web_contents), tab_strip_model_(model) {}
+      : content::WebContentsObserver(web_contents),
+        tab_strip_model_(model),
+        browser_closed_observer_(chrome::NOTIFICATION_BROWSER_CLOSED,
+                                 content::NotificationService::AllSources()) {}
+
+  // Wait for the browser window to be destroyed.
+  void Wait() { browser_closed_observer_.Wait(); }
 
   void RenderProcessGone(base::TerminationStatus status) override {
-    // Wait for the window to be destroyed, which will ensure all other
-    // RenderViewHost objects are deleted before we return and proceed with
-    // the next iteration of notifications.
-    content::WindowedNotificationObserver observer(
-        chrome::NOTIFICATION_BROWSER_CLOSED,
-        content::NotificationService::AllSources());
     tab_strip_model_->CloseAllTabs();
-    observer.Wait();
   }
 
  private:
   TabStripModel* tab_strip_model_;
+  content::WindowedNotificationObserver browser_closed_observer_;
 
   DISALLOW_COPY_AND_ASSIGN(WindowDestroyer);
 };
@@ -575,16 +575,12 @@
   // Create an object that will close the window on a process crash.
   WindowDestroyer destroyer(wc1, browser()->tab_strip_model());
 
-  content::WindowedNotificationObserver observer(
-      chrome::NOTIFICATION_BROWSER_CLOSED,
-      content::NotificationService::AllSources());
-
   // Kill the renderer process, simulating a crash. This should the ProcessDied
   // method to be called. Alternatively, RenderProcessHost::OnChannelError can
   // be called to directly force a call to ProcessDied.
   wc1->GetMainFrame()->GetProcess()->Shutdown(-1);
 
-  observer.Wait();
+  destroyer.Wait();
 }
 
 // Sets up the browser in order to start the tests with two tabs open: one
diff --git a/chrome/browser/resource_coordinator/performance_measurement_manager.cc b/chrome/browser/resource_coordinator/performance_measurement_manager.cc
index d44af81f..9fc80c1 100644
--- a/chrome/browser/resource_coordinator/performance_measurement_manager.cc
+++ b/chrome/browser/resource_coordinator/performance_measurement_manager.cc
@@ -12,27 +12,23 @@
 using LoadingState = TabLoadTracker::LoadingState;
 
 PerformanceMeasurementManager::PerformanceMeasurementManager(
-    TabLoadTracker* tab_load_tracker,
+    PageSignalReceiver* page_signal_receiver,
     RenderProcessProbe* render_process_probe)
-    : scoped_observer_(this), render_process_probe_(render_process_probe) {
-  scoped_observer_.Add(tab_load_tracker);
+    : scoped_observer_(this),
+      page_signal_receiver_(page_signal_receiver),
+      render_process_probe_(render_process_probe) {
+  scoped_observer_.Add(page_signal_receiver);
 }
 
 PerformanceMeasurementManager::~PerformanceMeasurementManager() = default;
 
-void PerformanceMeasurementManager::OnStartTracking(
+void PerformanceMeasurementManager::OnPageAlmostIdle(
     content::WebContents* web_contents,
-    LoadingState loading_state) {
-  if (loading_state == LoadingState::LOADED)
+    const PageNavigationIdentity& page_navigation_id) {
+  if (page_signal_receiver_->GetNavigationIDForWebContents(web_contents) ==
+      page_navigation_id.navigation_id) {
     render_process_probe_->StartSingleGather();
-}
-
-void PerformanceMeasurementManager::OnLoadingStateChange(
-    content::WebContents* web_contents,
-    LoadingState old_loading_state,
-    LoadingState new_loading_state) {
-  if (new_loading_state == LoadingState::LOADED)
-    render_process_probe_->StartSingleGather();
+  }
 }
 
 }  // namespace resource_coordinator
diff --git a/chrome/browser/resource_coordinator/performance_measurement_manager.h b/chrome/browser/resource_coordinator/performance_measurement_manager.h
index 813d784..0028ed0 100644
--- a/chrome/browser/resource_coordinator/performance_measurement_manager.h
+++ b/chrome/browser/resource_coordinator/performance_measurement_manager.h
@@ -8,34 +8,30 @@
 #include "base/macros.h"
 #include "base/scoped_observer.h"
 #include "base/sequence_checker.h"
-#include "chrome/browser/resource_coordinator/tab_load_tracker.h"
+#include "chrome/browser/resource_coordinator/page_signal_receiver.h"
 
 namespace resource_coordinator {
 
 class RenderProcessProbe;
-class TabLoadTracker;
 
-// This class observes tab state change notifications issued by the
-// TabLoadTracker and uses them to drive performance measurement requests
-// to the RenderProcessProbe. Results then funnel through the resource
-// coordinator service, back to this class, which stores them in the feature
-// database.
-class PerformanceMeasurementManager : public TabLoadTracker::Observer {
+// This class observes the PageAlmostIdle signal from the PageSignalGenerator
+// and uses it to fire off performance measurements for tabs that have reached
+// idle state.
+class PerformanceMeasurementManager : public PageSignalObserver {
  public:
-  PerformanceMeasurementManager(TabLoadTracker* tab_load_tracker,
+  PerformanceMeasurementManager(PageSignalReceiver* receiver,
                                 RenderProcessProbe* render_process_probe);
   ~PerformanceMeasurementManager() override;
 
-  // TabLoadTracker::Observer implementation.
-  void OnStartTracking(content::WebContents* web_contents,
-                       LoadingState loading_state) override;
-  void OnLoadingStateChange(content::WebContents* web_contents,
-                            LoadingState old_loading_state,
-                            LoadingState new_loading_state) override;
+  // PageSignalObserver overrides.
+  void OnPageAlmostIdle(
+      content::WebContents* web_contents,
+      const PageNavigationIdentity& page_navigation_id) override;
 
  private:
-  ScopedObserver<TabLoadTracker, PerformanceMeasurementManager>
+  ScopedObserver<PageSignalReceiver, PerformanceMeasurementManager>
       scoped_observer_;
+  PageSignalReceiver* page_signal_receiver_;
   RenderProcessProbe* render_process_probe_;
 
   DISALLOW_COPY_AND_ASSIGN(PerformanceMeasurementManager);
diff --git a/chrome/browser/resource_coordinator/performance_measurement_manager_unittest.cc b/chrome/browser/resource_coordinator/performance_measurement_manager_unittest.cc
index 863c2459..10872c6 100644
--- a/chrome/browser/resource_coordinator/performance_measurement_manager_unittest.cc
+++ b/chrome/browser/resource_coordinator/performance_measurement_manager_unittest.cc
@@ -3,10 +3,14 @@
 // found in the LICENSE file.
 
 #include "chrome/browser/resource_coordinator/performance_measurement_manager.h"
+
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/resource_coordinator/page_signal_receiver.h"
 #include "chrome/browser/resource_coordinator/render_process_probe.h"
 #include "chrome/browser/resource_coordinator/tab_helper.h"
-#include "chrome/browser/resource_coordinator/tab_load_tracker.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "services/resource_coordinator/public/cpp/coordination_unit_id.h"
+#include "services/resource_coordinator/public/cpp/resource_coordinator_features.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -37,22 +41,32 @@
   MockRenderProcessProbe mock_render_process_probe_;
 };
 
-TEST_F(PerformanceMeasurementManagerTest, NoMeasurementOnCreation) {
+TEST_F(PerformanceMeasurementManagerTest, StartMeasurementOnPageAlmostIdle) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(features::kPageAlmostIdle);
+  ASSERT_TRUE(resource_coordinator::IsPageAlmostIdleSignalEnabled());
+
+  PageSignalReceiver psr;
   PerformanceMeasurementManager performance_measurement_manager(
-      TabLoadTracker::Get(), &mock_render_process_probe());
+      &psr, &mock_render_process_probe());
 
   auto contents = CreateWebContents();
-}
+  const CoordinationUnitID contents_id(CoordinationUnitType::kPage,
+                                       CoordinationUnitID::RANDOM_ID);
+  psr.AssociateCoordinationUnitIDWithWebContents(contents_id, contents.get());
+  psr.SetNavigationID(contents.get(), 100);
 
-TEST_F(PerformanceMeasurementManagerTest, StartMeasurementOnLoaded) {
-  PerformanceMeasurementManager performance_measurement_manager(
-      TabLoadTracker::Get(), &mock_render_process_probe());
+  const CoordinationUnitID dummy_id(CoordinationUnitType::kPage,
+                                    CoordinationUnitID::RANDOM_ID);
+  // There should be no measurement when signaling an unknown CU ID.
+  psr.NotifyPageAlmostIdle(PageNavigationIdentity{dummy_id, 100, ""});
 
-  auto contents = CreateWebContents();
+  // There should be no measurement when signaling the "wrong" navigation ID.
+  psr.NotifyPageAlmostIdle(PageNavigationIdentity{contents_id, 99, ""});
 
+  // A measurement should happen on signaling the right navigation ID.
   EXPECT_CALL(mock_render_process_probe(), StartSingleGather());
-  TabLoadTracker::Get()->TransitionStateForTesting(
-      contents.get(), TabLoadTracker::LoadingState::LOADED);
+  psr.NotifyPageAlmostIdle(PageNavigationIdentity{contents_id, 100, ""});
 }
 
 }  // namespace resource_coordinator
diff --git a/chrome/browser/resources/eoc_internals/eoc_internals.html b/chrome/browser/resources/eoc_internals/eoc_internals.html
index d36590b..a57a39f 100644
--- a/chrome/browser/resources/eoc_internals/eoc_internals.html
+++ b/chrome/browser/resources/eoc_internals/eoc_internals.html
@@ -56,6 +56,10 @@
             <td id="sheet-peeked"></td>
           </tr>
           <tr>
+            <td>Was button shown</td>
+            <td id="button-shown"></td>
+          </tr>
+          <tr>
             <td>Was sheet opened</td>
             <td id="sheet-opened"></td>
           </tr>
diff --git a/chrome/browser/resources/eoc_internals/eoc_internals.js b/chrome/browser/resources/eoc_internals/eoc_internals.js
index a855e2e..33cf1846 100644
--- a/chrome/browser/resources/eoc_internals/eoc_internals.js
+++ b/chrome/browser/resources/eoc_internals/eoc_internals.js
@@ -49,6 +49,8 @@
     metricEventClone.querySelector('#url').textContent = metricEvent.url;
     metricEventClone.querySelector('#sheet-peeked').textContent =
         metricEvent.sheetPeeked;
+    metricEventClone.querySelector('#button-shown').textContent =
+        metricEvent.buttonShown;
     metricEventClone.querySelector('#sheet-opened').textContent =
         metricEvent.sheetOpened;
     metricEventClone.querySelector('#sheet-closed').textContent =
diff --git a/chrome/browser/resources/local_ntp/local_ntp.css b/chrome/browser/resources/local_ntp/local_ntp.css
index 80eb9b9e..0f46e25 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.css
+++ b/chrome/browser/resources/local_ntp/local_ntp.css
@@ -406,7 +406,6 @@
 }
 
 .md #fakebox-microphone {
-  background-size: 16px 16px;
   margin-right: 12px;
   width: 28px;
 }
diff --git a/chrome/browser/resources/md_downloads/browser_proxy.js b/chrome/browser/resources/md_downloads/browser_proxy.js
index e85d85dc7..c65dbaa1 100644
--- a/chrome/browser/resources/md_downloads/browser_proxy.js
+++ b/chrome/browser/resources/md_downloads/browser_proxy.js
@@ -14,12 +14,9 @@
       chrome.send('discardDangerous', [id]);
     }
 
-    /** @param {string} url URL of a file to download. */
-    download(url) {
-      const a = document.createElement('a');
-      a.href = url;
-      a.setAttribute('download', '');
-      a.click();
+    /** @param {string} id ID of the download to retry. */
+    retryDownload(id) {
+      chrome.send('retryDownload', [id]);
     }
 
     /** @param {string} id ID of the download that the user started dragging. */
diff --git a/chrome/browser/resources/md_downloads/item.js b/chrome/browser/resources/md_downloads/item.js
index 35f331b7..20f4197 100644
--- a/chrome/browser/resources/md_downloads/item.js
+++ b/chrome/browser/resources/md_downloads/item.js
@@ -325,7 +325,7 @@
 
     /** @private */
     onRetryTap_: function() {
-      this.browserProxy_.download(this.data.url);
+      this.browserProxy_.retryDownload(this.data.id);
     },
 
     /** @private */
diff --git a/chrome/browser/search/ntp_icon_source.cc b/chrome/browser/search/ntp_icon_source.cc
index 96e6b56..94841bb 100644
--- a/chrome/browser/search/ntp_icon_source.cc
+++ b/chrome/browser/search/ntp_icon_source.cc
@@ -15,11 +15,21 @@
 #include "chrome/browser/favicon/favicon_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/search/instant_io_context.h"
+#include "chrome/browser/search/suggestions/image_decoder_impl.h"
+#include "chrome/browser/search/suggestions/suggestions_service_factory.h"
 #include "chrome/common/url_constants.h"
 #include "chrome/grit/platform_locale_settings.h"
+#include "components/data_use_measurement/core/data_use_user_data.h"
 #include "components/favicon/core/fallback_url_util.h"
 #include "components/favicon/core/favicon_service.h"
 #include "components/favicon_base/favicon_types.h"
+#include "components/image_fetcher/core/image_fetcher_impl.h"
+#include "components/suggestions/proto/suggestions.pb.h"
+#include "components/suggestions/suggestions_service.h"
+#include "content/public/browser/storage_partition.h"
+#include "net/base/escape.h"
+#include "skia/ext/image_operations.h"
+#include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkColor.h"
 #include "third_party/skia/include/core/SkPaint.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -29,6 +39,7 @@
 #include "ui/gfx/favicon_size.h"
 #include "ui/gfx/font_list.h"
 #include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/image/image.h"
 #include "url/gurl.h"
 
 namespace {
@@ -39,9 +50,14 @@
 // Size of the fallback icon (letter + circle), in dp.
 const int kFallbackIconSizeDip = 40;
 
+// URL to the server favicon service. "alt=404" means the service will return a
+// 404 if an icon can't be found.
+const char kServerFaviconURL[] =
+    "https://s2.googleusercontent.com/s2/favicons?domain_url=%s&alt=404&sz=32";
+
 // Used to parse the specification from the path.
 struct ParsedNtpIconPath {
-  // The URL from which the icon is being requested.
+  // The URL for which the icon is being requested.
   GURL url;
 
   // The size of the requested icon in dip.
@@ -149,17 +165,17 @@
 // For the given |icon_url|, will render a fallback icon with an appropriate
 // letter in a circle.
 std::vector<unsigned char> RenderIconBitmap(const GURL& icon_url,
-                                            const SkBitmap& local_favicon,
+                                            const SkBitmap& favicon,
                                             int size) {
   SkBitmap bitmap;
   bitmap.allocN32Pixels(size, size, false);
   cc::SkiaPaintCanvas paint_canvas(bitmap);
   gfx::Canvas canvas(&paint_canvas, 1.f);
   canvas.DrawColor(SK_ColorTRANSPARENT, SkBlendMode::kSrc);
-  if (!local_favicon.empty()) {
+  if (!favicon.empty()) {
     constexpr SkColor kFaviconBackground = SkColorSetRGB(0xF1, 0xF3, 0xF4);
     DrawCircleInCanvas(&canvas, size, /*background_color=*/kFaviconBackground);
-    DrawFavicon(local_favicon, &canvas, size);
+    DrawFavicon(favicon, &canvas, size);
   } else {
     // TODO(crbug.com/853780): Set the appropriate fallback background color.
     DrawCircleInCanvas(&canvas, size, /*background_color=*/SK_ColorGRAY);
@@ -176,23 +192,31 @@
 struct NtpIconSource::NtpIconRequest {
   NtpIconRequest(const content::URLDataSource::GotDataCallback& cb,
                  const GURL& path,
-                 int size,
+                 int icon_size_in_pixels,
                  float scale)
       : callback(cb),
         path(path),
-        size_in_dip(size),
+        icon_size_in_pixels(icon_size_in_pixels),
         device_scale_factor(scale) {}
   NtpIconRequest(const NtpIconRequest& other) = default;
   ~NtpIconRequest() {}
 
   content::URLDataSource::GotDataCallback callback;
   GURL path;
-  int size_in_dip;
+  int icon_size_in_pixels;
   float device_scale_factor;
 };
 
 NtpIconSource::NtpIconSource(Profile* profile)
-    : profile_(profile), weak_ptr_factory_(this) {}
+    : profile_(profile),
+      image_fetcher_(std::make_unique<image_fetcher::ImageFetcherImpl>(
+          std::make_unique<suggestions::ImageDecoderImpl>(),
+          content::BrowserContext::GetDefaultStoragePartition(profile)
+              ->GetURLLoaderFactoryForBrowserProcess())),
+      weak_ptr_factory_(this) {
+  image_fetcher_->SetDataUseServiceName(
+      data_use_measurement::DataUseUserData::NTP_TILES);
+}
 
 NtpIconSource::~NtpIconSource() = default;
 
@@ -212,16 +236,16 @@
 
   if (parsed.url.is_valid()) {
     // This will query for a local favicon. If not found, will take alternative
-    // action in OnFaviconDataAvailable.
+    // action in OnLocalFaviconAvailable.
     const bool fallback_to_host = true;
-    int desired_size_in_pixel =
+    int icon_size_in_pixels =
         std::ceil(parsed.size_in_dip * parsed.device_scale_factor);
     favicon_service->GetRawFaviconForPageURL(
-        parsed.url, {favicon_base::IconType::kFavicon}, desired_size_in_pixel,
+        parsed.url, {favicon_base::IconType::kFavicon}, icon_size_in_pixels,
         fallback_to_host,
-        base::Bind(&NtpIconSource::OnFaviconDataAvailable,
+        base::Bind(&NtpIconSource::OnLocalFaviconAvailable,
                    weak_ptr_factory_.GetWeakPtr(),
-                   NtpIconRequest(callback, parsed.url, parsed.size_in_dip,
+                   NtpIconRequest(callback, parsed.url, icon_size_in_pixels,
                                   parsed.device_scale_factor)),
         &cancelable_task_tracker_);
   } else {
@@ -229,26 +253,6 @@
   }
 }
 
-void NtpIconSource::OnFaviconDataAvailable(
-    const NtpIconRequest& request,
-    const favicon_base::FaviconRawBitmapResult& bitmap_result) {
-  SkBitmap bitmap;
-  if (bitmap_result.is_valid()) {
-    // A local favicon was found. Decode it to an SkBitmap so it can be passed
-    // as valid image data to RenderIconBitmap.
-    bool result =
-        gfx::PNGCodec::Decode(bitmap_result.bitmap_data.get()->front(),
-                              bitmap_result.bitmap_data.get()->size(), &bitmap);
-    DCHECK(result);
-  }
-
-  int desired_size_in_pixel =
-      std::ceil(kFallbackIconSizeDip * request.device_scale_factor);
-  std::vector<unsigned char> bitmap_data =
-      RenderIconBitmap(request.path, bitmap, desired_size_in_pixel);
-  request.callback.Run(base::RefCountedBytes::TakeVector(&bitmap_data));
-}
-
 std::string NtpIconSource::GetMimeType(const std::string&) const {
   // NOTE: this may not always be correct for all possible types that this
   // source will serve. Seems to work fine, however.
@@ -270,3 +274,109 @@
   return URLDataSource::ShouldServiceRequest(url, resource_context,
                                              render_process_id);
 }
+
+void NtpIconSource::OnLocalFaviconAvailable(
+    const NtpIconRequest& request,
+    const favicon_base::FaviconRawBitmapResult& bitmap_result) {
+  if (bitmap_result.is_valid()) {
+    // A local favicon was found. Decode it to an SkBitmap so it can eventually
+    // be passed as valid image data to RenderIconBitmap.
+    SkBitmap bitmap;
+    bool result =
+        gfx::PNGCodec::Decode(bitmap_result.bitmap_data.get()->front(),
+                              bitmap_result.bitmap_data.get()->size(), &bitmap);
+    DCHECK(result);
+    ReturnRenderedIconForRequest(request, bitmap);
+  } else {
+    // Since a local favicon was not found, attempt to fetch a server icon if
+    // the url is known to the server (this last check is important to avoid
+    // leaking private history to the server).
+    RequestServerFavicon(request);
+  }
+}
+
+bool NtpIconSource::IsRequestedUrlInServerSuggestions(const GURL& url) {
+  suggestions::SuggestionsService* suggestions_service =
+      suggestions::SuggestionsServiceFactory::GetForProfile(profile_);
+  if (!suggestions_service)
+    return false;
+
+  suggestions::SuggestionsProfile profile =
+      suggestions_service->GetSuggestionsDataFromCache().value_or(
+          suggestions::SuggestionsProfile());
+  auto position =
+      std::find_if(profile.suggestions().begin(), profile.suggestions().end(),
+                   [url](const suggestions::ChromeSuggestion& suggestion) {
+                     return suggestion.url() == url.spec();
+                   });
+  return position != profile.suggestions().end();
+}
+
+void NtpIconSource::RequestServerFavicon(const NtpIconRequest& request) {
+  // Only fetch a server icon if the page url is known to the server. This check
+  // is important to avoid leaking private history to the server.
+  const GURL server_favicon_url =
+      GURL(base::StringPrintf(kServerFaviconURL, request.path.spec().c_str()));
+  if (!server_favicon_url.is_valid() ||
+      !IsRequestedUrlInServerSuggestions(request.path)) {
+    ReturnRenderedIconForRequest(request, SkBitmap());
+    return;
+  }
+
+  net::NetworkTrafficAnnotationTag traffic_annotation =
+      net::DefineNetworkTrafficAnnotation("ntp_icon_source", R"(
+      semantics {
+        sender: "NTP Icon Source"
+        description:
+          "Retrieves icons for site suggestions based on the user's browsing "
+          "history, for use e.g. on the New Tab page."
+        trigger:
+          "Triggered when an icon for a suggestion is required (e.g. on "
+          "the New Tab page), no local icon is available and the URL is known "
+          "to the server (hence no private information is revealed)."
+        data: "The URL for which to retrieve an icon."
+        destination: GOOGLE_OWNED_SERVICE
+      }
+      policy {
+        cookies_allowed: NO
+        setting:
+          "Users cannot disable this feature. The feature is enabled by "
+          "default."
+        policy_exception_justification: "Not implemented."
+      })");
+  image_fetcher_->SetDesiredImageFrameSize(
+      gfx::Size(request.icon_size_in_pixels, request.icon_size_in_pixels));
+  image_fetcher_->FetchImage(
+      /*id=*/std::string(), server_favicon_url,
+      base::Bind(&NtpIconSource::OnServerFaviconAvailable,
+                 weak_ptr_factory_.GetWeakPtr(), request),
+      traffic_annotation);
+}
+
+void NtpIconSource::OnServerFaviconAvailable(
+    const NtpIconRequest& request,
+    const std::string& id,
+    const gfx::Image& fetched_image,
+    const image_fetcher::RequestMetadata& metadata) {
+  // If a server icon was not found, |fetched_bitmap| will be empty and a
+  // fallback icon will be eventually drawn.
+  SkBitmap fetched_bitmap = fetched_image.AsBitmap();
+  if (!fetched_bitmap.empty()) {
+    // The received server icon bitmap may still be bigger than our desired
+    // size, so resize it.
+    fetched_bitmap = skia::ImageOperations::Resize(
+        fetched_bitmap, skia::ImageOperations::RESIZE_LANCZOS3,
+        request.icon_size_in_pixels, request.icon_size_in_pixels);
+  }
+
+  ReturnRenderedIconForRequest(request, fetched_bitmap);
+}
+
+void NtpIconSource::ReturnRenderedIconForRequest(const NtpIconRequest& request,
+                                                 const SkBitmap& bitmap) {
+  int desired_overall_size_in_pixel =
+      std::ceil(kFallbackIconSizeDip * request.device_scale_factor);
+  std::vector<unsigned char> bitmap_data =
+      RenderIconBitmap(request.path, bitmap, desired_overall_size_in_pixel);
+  request.callback.Run(base::RefCountedBytes::TakeVector(&bitmap_data));
+}
diff --git a/chrome/browser/search/ntp_icon_source.h b/chrome/browser/search/ntp_icon_source.h
index f75f39b..33bb89e 100644
--- a/chrome/browser/search/ntp_icon_source.h
+++ b/chrome/browser/search/ntp_icon_source.h
@@ -5,20 +5,28 @@
 #ifndef CHROME_BROWSER_SEARCH_NTP_ICON_SOURCE_H_
 #define CHROME_BROWSER_SEARCH_NTP_ICON_SOURCE_H_
 
+#include <memory>
 #include <string>
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/task/cancelable_task_tracker.h"
+#include "components/image_fetcher/core/image_fetcher.h"
+#include "components/image_fetcher/core/image_fetcher_types.h"
 #include "content/public/browser/url_data_source.h"
 
 class GURL;
 class Profile;
+class SkBitmap;
 
 namespace favicon_base {
 struct FaviconRawBitmapResult;
 }
 
+namespace gfx {
+class Image;
+}
+
 // NTP Icon Source is the gateway between network-level chrome: requests for
 // NTP icons and the various backends that may serve them.
 class NtpIconSource : public content::URLDataSource {
@@ -40,12 +48,26 @@
 
  private:
   struct NtpIconRequest;
-  void OnFaviconDataAvailable(
+  void OnLocalFaviconAvailable(
       const NtpIconRequest& request,
       const favicon_base::FaviconRawBitmapResult& bitmap_result);
+  // Returns whether |url| is in the set of server suggestions.
+  bool IsRequestedUrlInServerSuggestions(const GURL& url);
+  void RequestServerFavicon(const NtpIconRequest& request);
+  void OnServerFaviconAvailable(const NtpIconRequest& request,
+                                const std::string& id,
+                                const gfx::Image& fetched_image,
+                                const image_fetcher::RequestMetadata& metadata);
+
+  // Will call |request.callback| with the rendered icon. |bitmap| can be empty,
+  // in which case the returned icon is a fallback circle with a letter drawn
+  // into it.
+  void ReturnRenderedIconForRequest(const NtpIconRequest& request,
+                                    const SkBitmap& bitmap);
 
   base::CancelableTaskTracker cancelable_task_tracker_;
   Profile* profile_;
+  std::unique_ptr<image_fetcher::ImageFetcher> const image_fetcher_;
 
   base::WeakPtrFactory<NtpIconSource> weak_ptr_factory_;
 
diff --git a/chrome/browser/ui/cocoa/browser_window_command_handler.mm b/chrome/browser/ui/cocoa/browser_window_command_handler.mm
index 3148257d..e078ea79 100644
--- a/chrome/browser/ui/cocoa/browser_window_command_handler.mm
+++ b/chrome/browser/ui/cocoa/browser_window_command_handler.mm
@@ -19,6 +19,7 @@
 #include "chrome/common/chrome_features.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/grit/generated_resources.h"
+#include "components/bookmarks/common/bookmark_pref_names.h"
 #include "content/public/browser/web_contents.h"
 #import "ui/base/cocoa/cocoa_base_utils.h"
 #include "ui/base/l10n/l10n_util.h"
@@ -49,7 +50,8 @@
   // On Windows this logic happens in bookmark_bar_view.cc. This simply updates
   // the menu item; it does not display the bookmark bar itself.
   if (tag == IDC_SHOW_BOOKMARK_BAR) {
-    SetToggleState(browser->window()->IsBookmarkBarVisible(), item);
+    PrefService* prefs = browser->profile()->GetPrefs();
+    SetToggleState(prefs->GetBoolean(bookmarks::prefs::kShowBookmarkBar), item);
     return;
   }
 
diff --git a/chrome/browser/ui/search/local_ntp_browsertest.cc b/chrome/browser/ui/search/local_ntp_browsertest.cc
index 598fcfa..9f09839b 100644
--- a/chrome/browser/ui/search/local_ntp_browsertest.cc
+++ b/chrome/browser/ui/search/local_ntp_browsertest.cc
@@ -34,6 +34,7 @@
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/ntp_tiles/constants.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/interstitial_page.h"
@@ -103,13 +104,14 @@
 
 class LocalNTPTest : public InProcessBrowserTest {
  public:
-  LocalNTPTest() {
-    feature_list_.InitAndEnableFeature(features::kUseGoogleLocalNtp);
+  LocalNTPTest(const std::vector<base::Feature>& enabled_features,
+               const std::vector<base::Feature>& disabled_features) {
+    feature_list_.InitWithFeatures(enabled_features, disabled_features);
   }
 
-  explicit LocalNTPTest(const std::vector<base::Feature>& enabled_features) {
-    feature_list_.InitWithFeatures(enabled_features, {});
-  }
+  LocalNTPTest()
+      : LocalNTPTest(/*enabled_features=*/{features::kUseGoogleLocalNtp},
+                     /*disabled_features=*/{}) {}
 
  private:
   void SetUpOnMainThread() override {
@@ -419,7 +421,9 @@
   histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression", 1);
   histograms.ExpectBucketCount("NewTabPage.SuggestionsImpression", 0, 1);
   histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression.client", 1);
-  histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression.Thumbnail", 1);
+  // The material design NTP shouldn't have any thumbnails.
+  histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression.Thumbnail",
+                              features::IsMDIconsEnabled() ? 0 : 1);
   histograms.ExpectTotalCount("NewTabPage.TileTitle", 1);
   histograms.ExpectTotalCount("NewTabPage.TileTitle.client", 1);
   histograms.ExpectTotalCount("NewTabPage.TileType", 1);
@@ -470,7 +474,9 @@
   histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression", 1);
   histograms.ExpectBucketCount("NewTabPage.SuggestionsImpression", 0, 1);
   histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression.client", 1);
-  histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression.Thumbnail", 1);
+  // The material design NTP shouldn't have any thumbnails.
+  histograms.ExpectTotalCount("NewTabPage.SuggestionsImpression.Thumbnail",
+                              features::IsMDIconsEnabled() ? 0 : 1);
   histograms.ExpectTotalCount("NewTabPage.TileTitle", 1);
   histograms.ExpectTotalCount("NewTabPage.TileTitle.client", 1);
   histograms.ExpectTotalCount("NewTabPage.TileType", 1);
@@ -534,46 +540,10 @@
   return nullptr;
 }
 
-IN_PROC_BROWSER_TEST_F(LocalNTPTest, LoadsIframe) {
-  content::WebContents* active_tab =
-      local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank"));
-  local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser());
-
-  // Get the iframe and check that the tiles loaded correctly.
-  content::RenderFrameHost* iframe = GetMostVisitedIframe(active_tab);
-
-  // Get the total number of (non-empty) tiles from the iframe.
-  int total_thumbs = 0;
-  ASSERT_TRUE(instant_test_utils::GetIntFromJS(
-      iframe, "document.querySelectorAll('.mv-thumb').length", &total_thumbs));
-  // Also get how many of the tiles succeeded and failed in loading their
-  // thumbnail images.
-  int succeeded_imgs = 0;
-  ASSERT_TRUE(instant_test_utils::GetIntFromJS(
-      iframe, "document.querySelectorAll('.mv-thumb img').length",
-      &succeeded_imgs));
-  int failed_imgs = 0;
-  ASSERT_TRUE(instant_test_utils::GetIntFromJS(
-      iframe, "document.querySelectorAll('.mv-thumb.failed-img').length",
-      &failed_imgs));
-
-  // First, sanity check that the numbers line up (none of the css classes was
-  // renamed, etc).
-  EXPECT_EQ(total_thumbs, succeeded_imgs + failed_imgs);
-
-  // Since we're in a non-signed-in, fresh profile with no history, there should
-  // be the default TopSites tiles (see history::PrepopulatedPage).
-  // Check that there is at least one tile, and that all of them loaded their
-  // images successfully.
-  EXPECT_GT(total_thumbs, 0);
-  EXPECT_EQ(total_thumbs, succeeded_imgs);
-  EXPECT_EQ(0, failed_imgs);
-}
-
 class LocalNTPMDTest : public LocalNTPTest {
  public:
   LocalNTPMDTest()
-      : LocalNTPTest({features::kUseGoogleLocalNtp, features::kNtpUIMd}) {}
+      : LocalNTPTest({features::kUseGoogleLocalNtp, features::kNtpUIMd}, {}) {}
 
  private:
   base::test::ScopedFeatureList feature_list_;
@@ -715,4 +685,50 @@
   EXPECT_TRUE(search::IsInstantNTP(active_tab));
 }
 
+class LocalNTPNonMDTest : public LocalNTPTest {
+ public:
+  LocalNTPNonMDTest()
+      : LocalNTPTest(
+            /*enabled_features=*/{features::kUseGoogleLocalNtp},
+            /*disabled_features=*/{features::kNtpUIMd,
+                                   features::kNtpBackgrounds,
+                                   ntp_tiles::kNtpIcons}) {}
+};
+
+IN_PROC_BROWSER_TEST_F(LocalNTPNonMDTest, LoadsNonMDIframe) {
+  content::WebContents* active_tab =
+      local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank"));
+  local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser());
+
+  // Get the iframe and check that the tiles loaded correctly.
+  content::RenderFrameHost* iframe = GetMostVisitedIframe(active_tab);
+
+  // Get the total number of (non-empty) tiles from the iframe.
+  int total_thumbs = 0;
+  ASSERT_TRUE(instant_test_utils::GetIntFromJS(
+      iframe, "document.querySelectorAll('.mv-thumb').length", &total_thumbs));
+  // Also get how many of the tiles succeeded and failed in loading their
+  // thumbnail images.
+  int succeeded_imgs = 0;
+  ASSERT_TRUE(instant_test_utils::GetIntFromJS(
+      iframe, "document.querySelectorAll('.mv-thumb img').length",
+      &succeeded_imgs));
+  int failed_imgs = 0;
+  ASSERT_TRUE(instant_test_utils::GetIntFromJS(
+      iframe, "document.querySelectorAll('.mv-thumb.failed-img').length",
+      &failed_imgs));
+
+  // First, sanity check that the numbers line up (none of the css classes was
+  // renamed, etc).
+  EXPECT_EQ(total_thumbs, succeeded_imgs + failed_imgs);
+
+  // Since we're in a non-signed-in, fresh profile with no history, there should
+  // be the default TopSites tiles (see history::PrepopulatedPage).
+  // Check that there is at least one tile, and that all of them loaded their
+  // images successfully.
+  EXPECT_GT(total_thumbs, 0);
+  EXPECT_EQ(total_thumbs, succeeded_imgs);
+  EXPECT_EQ(0, failed_imgs);
+}
+
 }  // namespace
diff --git a/chrome/browser/ui/views/frame/browser_native_widget_window_mac.mm b/chrome/browser/ui/views/frame/browser_native_widget_window_mac.mm
index 976f809..b19334b 100644
--- a/chrome/browser/ui/views/frame/browser_native_widget_window_mac.mm
+++ b/chrome/browser/ui/views/frame/browser_native_widget_window_mac.mm
@@ -15,13 +15,19 @@
 
 @interface NSWindow (PrivateAPI)
 + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle;
+
+// Available in later point releases of 10.10. On 10.11+, use the public
+// -performWindowDragWithEvent: instead.
+- (void)beginWindowDragWithEvent:(NSEvent*)event;
 @end
 
-@interface NSThemeFrame (PrivateAPI)
+// Weak lets Chrome launch even if a future macOS doesn't have NSThemeFrame.
+WEAK_IMPORT_ATTRIBUTE
+@interface NSThemeFrame : NSView
 - (CGFloat)_titlebarHeight;
 @end
 
-@interface BrowserWindowFrame : NativeWidgetMacNSWindowTitledFrame
+@interface BrowserWindowFrame : NSThemeFrame
 @end
 
 @implementation BrowserWindowFrame
@@ -72,6 +78,20 @@
   return NSZeroRect;
 }
 
+// Lets the window be dragged by its title bar on 10.11 and older.
+- (void)mouseDown:(NSEvent*)event {
+  if (@available(macOS 10.12, *))
+    ;  // Not needed on 10.12 and up.
+  else if (@available(macOS 10.11, *))
+    [self.window performWindowDragWithEvent:event];
+  else if ([self.window
+               respondsToSelector:@selector(beginWindowDragWithEvent:)])
+    [self.window beginWindowDragWithEvent:event];
+  else
+    NOTREACHED();
+  [super mouseDown:event];
+}
+
 @end
 
 @implementation BrowserNativeWidgetWindow
@@ -87,6 +107,13 @@
   return [super frameViewClassForStyleMask:windowStyle];
 }
 
+// The base implementation returns YES if the window's frame view is a custom
+// class, which causes undesirable changes in behavior. AppKit NSWindow
+// subclasses are known to override it and return NO.
+- (BOOL)_usesCustomDrawing {
+  return NO;
+}
+
 // Handle "Move focus to the window toolbar" configured in System Preferences ->
 // Keyboard -> Shortcuts -> Keyboard. Usually Ctrl+F5. The argument (|unknown|)
 // tends to just be nil.
diff --git a/chrome/browser/ui/views/frame/native_widget_mac_frameless_nswindow.mm b/chrome/browser/ui/views/frame/native_widget_mac_frameless_nswindow.mm
index 577b47d..11cfc59 100644
--- a/chrome/browser/ui/views/frame/native_widget_mac_frameless_nswindow.mm
+++ b/chrome/browser/ui/views/frame/native_widget_mac_frameless_nswindow.mm
@@ -6,13 +6,31 @@
 
 @interface NSWindow (PrivateAPI)
 + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle;
+- (void)beginWindowDragWithEvent:(NSEvent*)event
+    NS_DEPRECATED_MAC(10_10, 10_11, "Use performWindowDragWithEvent: instead.");
 @end
 
-@interface NativeWidgetMacFramelessNSWindowFrame
-    : NativeWidgetMacNSWindowTitledFrame
+// Weak lets Chrome launch even if a future macOS doesn't have NSThemeFrame.
+WEAK_IMPORT_ATTRIBUTE
+@interface NSThemeFrame : NSView
+@end
+
+@interface NativeWidgetMacFramelessNSWindowFrame : NSThemeFrame
 @end
 
 @implementation NativeWidgetMacFramelessNSWindowFrame
+
+// If a mouseDown: falls through to the frame view, turn it into a window drag.
+- (void)mouseDown:(NSEvent*)event {
+  if (@available(macOS 10.11, *))
+    [self.window performWindowDragWithEvent:event];
+  else if (@available(macOS 10.10, *))
+    [self.window beginWindowDragWithEvent:event];
+  else
+    NOTREACHED();
+  [super mouseDown:event];
+}
+
 - (BOOL)_hidingTitlebar {
   return YES;
 }
@@ -27,4 +45,8 @@
   return [super frameViewClassForStyleMask:windowStyle];
 }
 
+- (BOOL)_usesCustomDrawing {
+  return NO;
+}
+
 @end
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 530e86a..4761fde9 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
@@ -44,6 +44,8 @@
       command_id_(command_id),
       active_(false),
       suppress_mouse_released_action_(false) {
+  if (views::PlatformStyle::kPreferFocusRings)
+    focus_ring_ = views::FocusRing::Install(this);
   SetBorder(views::CreateEmptyBorder(
       GetLayoutInsets(LOCATION_BAR_ICON_INTERIOR_PADDING)));
   if (ui::MaterialDesignController::IsNewerMaterialUi()) {
@@ -113,8 +115,8 @@
 
 void PageActionIconView::Layout() {
   image_->SetBoundsRect(GetContentsBounds());
-  if (views::PlatformStyle::kPreferFocusRings) {
-    focus_ring_ = views::FocusRing::Install(this);
+  if (focus_ring_) {
+    focus_ring_->Layout();
     if (LocationBarView::IsRounded()) {
       SkPath path;
       path.addOval(gfx::RectToSkRect(GetLocalBounds()));
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
index 0db03ee2..2c5857f3 100644
--- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -413,10 +413,15 @@
   const AccountId& owner_account_id =
       user_manager::UserManager::Get()->GetOwnerAccountId();
   params.SetBoolean("hasDeviceOwner", owner_account_id.is_valid());
-  if (owner_account_id.is_valid() &&
-      user_manager::UserManager::Get()->FindUser(owner_account_id)->GetType() ==
-          user_manager::UserType::USER_TYPE_CHILD) {
-    params.SetString("obfuscatedOwnerId", owner_account_id.GetGaiaId());
+  if (owner_account_id.is_valid()) {
+    // Some Autotest policy tests appear to wipe the user list in Local State
+    // but preserve a policy file referencing an owner: https://crbug.com/850139
+    const user_manager::User* owner_user =
+        user_manager::UserManager::Get()->FindUser(owner_account_id);
+    if (owner_user &&
+        owner_user->GetType() == user_manager::UserType::USER_TYPE_CHILD) {
+      params.SetString("obfuscatedOwnerId", owner_account_id.GetGaiaId());
+    }
   }
 
   params.SetString("chromeType", GetChromeType());
diff --git a/chrome/browser/ui/webui/eoc_internals/eoc_internals.mojom b/chrome/browser/ui/webui/eoc_internals/eoc_internals.mojom
index 273754df..0feaff1d 100644
--- a/chrome/browser/ui/webui/eoc_internals/eoc_internals.mojom
+++ b/chrome/browser/ui/webui/eoc_internals/eoc_internals.mojom
@@ -63,6 +63,9 @@
   // Did the sheet peek show.
   bool sheet_peeked;
 
+  // Was the toolbar button shown.
+  bool button_shown;
+
   // If the peek was closed without being opened.
   bool sheet_opened;
 
diff --git a/chrome/browser/ui/webui/eoc_internals/eoc_internals_page_handler.cc b/chrome/browser/ui/webui/eoc_internals/eoc_internals_page_handler.cc
index 681186d2..8d533f08 100644
--- a/chrome/browser/ui/webui/eoc_internals/eoc_internals_page_handler.cc
+++ b/chrome/browser/ui/webui/eoc_internals/eoc_internals_page_handler.cc
@@ -77,6 +77,7 @@
     auto metric_event = eoc_internals::mojom::MetricEvent::New();
     metric_event->url = debug_event.url;
     metric_event->sheet_peeked = debug_event.sheet_peeked;
+    metric_event->button_shown = debug_event.button_shown;
     metric_event->sheet_opened = debug_event.sheet_opened;
     metric_event->sheet_closed = debug_event.sheet_closed;
     metric_event->any_suggestion_taken = debug_event.any_suggestion_taken;
diff --git a/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc b/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
index b6e37fc3..e67023e 100644
--- a/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
+++ b/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc
@@ -37,6 +37,9 @@
 #include "components/safe_browsing/common/safe_browsing_prefs.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/download_manager.h"
+#include "content/public/browser/render_process_host.h"
+#include "content/public/browser/render_view_host.h"
+#include "content/public/browser/storage_partition.h"
 #include "content/public/browser/url_data_source.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui.h"
@@ -61,6 +64,7 @@
   DOWNLOADS_DOM_EVENT_CLEAR_ALL = 9,
   DOWNLOADS_DOM_EVENT_OPEN_FOLDER = 10,
   DOWNLOADS_DOM_EVENT_RESUME = 11,
+  DOWNLOADS_DOM_EVENT_RETRY_DOWNLOAD = 12,
   DOWNLOADS_DOM_EVENT_MAX
 };
 
@@ -105,6 +109,10 @@
       base::BindRepeating(&MdDownloadsDOMHandler::HandleSaveDangerous,
                           weak_ptr_factory_.GetWeakPtr()));
   web_ui()->RegisterMessageCallback(
+      "retryDownload",
+      base::BindRepeating(&MdDownloadsDOMHandler::HandleRetryDownload,
+                          weak_ptr_factory_.GetWeakPtr()));
+  web_ui()->RegisterMessageCallback(
       "discardDangerous",
       base::BindRepeating(&MdDownloadsDOMHandler::HandleDiscardDangerous,
                           weak_ptr_factory_.GetWeakPtr()));
@@ -201,6 +209,11 @@
     ShowDangerPrompt(file);
 }
 
+void MdDownloadsDOMHandler::HandleRetryDownload(const base::ListValue* args) {
+  CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_RETRY_DOWNLOAD);
+  RetryDownload(args);
+}
+
 void MdDownloadsDOMHandler::HandleDiscardDangerous(
     const base::ListValue* args) {
   CountDownloadsDOMEvents(DOWNLOADS_DOM_EVENT_DISCARD_DANGEROUS);
@@ -438,3 +451,49 @@
   downloads.push_back(file);
   RemoveDownloads(downloads);
 }
+
+void MdDownloadsDOMHandler::RetryDownload(const base::ListValue* args) {
+  download::DownloadItem* file = GetDownloadByValue(args);
+  if (!file)
+    return;
+  content::WebContents* web_contents = GetWebUIWebContents();
+  content::RenderFrameHost* render_frame_host = web_contents->GetMainFrame();
+  const GURL url = file->GetURL();
+
+  content::StoragePartition* storage_partition =
+      content::BrowserContext::GetStoragePartition(
+          web_contents->GetBrowserContext(),
+          render_frame_host->GetSiteInstance());
+
+  net::NetworkTrafficAnnotationTag traffic_annotation =
+      net::DefineNetworkTrafficAnnotation("md_downloads_dom_handler", R"(
+        semantics {
+          sender: "The downloads page."
+          description: "Retrying a download."
+          trigger:
+            "The user selects the 'Retry' button for a cancelled download on "
+            "the downloads page."
+          data: "None."
+          destination: WEBSITE
+        }
+        policy {
+          cookies_allowed: YES
+          cookies_store: "user"
+          setting:
+            "This feature cannot be disabled by settings, but it's only "
+            "triggered by user request."
+          policy_exception_justification: "Not implemented."
+        })");
+
+  auto dl_params = std::make_unique<download::DownloadUrlParameters>(
+      url, render_frame_host->GetProcess()->GetID(),
+      render_frame_host->GetRenderViewHost()->GetRoutingID(),
+      render_frame_host->GetRoutingID(),
+      storage_partition->GetURLRequestContext(), traffic_annotation);
+  dl_params->set_content_initiated(true);
+  dl_params->set_initiator(url::Origin::Create(GURL("chrome://downloads")));
+  dl_params->set_download_source(download::DownloadSource::FROM_RENDERER);
+
+  content::BrowserContext::GetDownloadManager(web_contents->GetBrowserContext())
+      ->DownloadUrl(std::move(dl_params));
+}
diff --git a/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.h b/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.h
index cdfc1342..5b3c41d 100644
--- a/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.h
+++ b/chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.h
@@ -60,6 +60,10 @@
   // wishes to save a dangerous file.
   void HandleSaveDangerous(const base::ListValue* args);
 
+  // Callback for the "retryDownload" message - specifies that the user wishes
+  // to download an item again.
+  void HandleRetryDownload(const base::ListValue* args);
+
   // Callback for the "discardDangerous" message - specifies that the user
   // wishes to discard (remove) a dangerous file.
   void HandleDiscardDangerous(const base::ListValue* args);
@@ -141,6 +145,9 @@
   // Removes the download specified by an ID from JavaScript in |args|.
   void RemoveDownloadInArgs(const base::ListValue* args);
 
+  // Retry the download specified by an ID from JavaScript in |args|.
+  void RetryDownload(const base::ListValue* args);
+
   // Checks whether a download's file was removed from its original location.
   void CheckForRemovedFiles();
 
diff --git a/chrome/browser/ui/webui/sync_internals_browsertest.js b/chrome/browser/ui/webui/sync_internals_browsertest.js
index 074d58b..273c005 100644
--- a/chrome/browser/ui/webui/sync_internals_browsertest.js
+++ b/chrome/browser/ui/webui/sync_internals_browsertest.js
@@ -234,8 +234,7 @@
 };
 
 TEST_F('SyncInternalsWebUITest', 'Uninitialized', function() {
-  assertNotEquals(null, chrome.sync.aboutInfo);
-  expectTrue(this.hasInDetails(false, 'Summary', 'Uninitialized'));
+   assertNotEquals(null, chrome.sync.aboutInfo);
 });
 
 // Test that username is set correctly when the user is signed in or not.
@@ -244,11 +243,13 @@
 GEN('#if defined(OS_CHROMEOS)');
 TEST_F('SyncInternalsWebUITest', 'SignedIn', function() {
   assertNotEquals(null, chrome.sync.aboutInfo);
+  expectTrue(this.hasInDetails(true, 'Summary', 'Waiting for start request'));
   expectTrue(this.hasInDetails(true, 'Username', 'stub-user@example.com'));
 });
 GEN('#else');
 TEST_F('SyncInternalsWebUITest', 'SignedOut', function() {
   assertNotEquals(null, chrome.sync.aboutInfo);
+  expectTrue(this.hasInDetails(true, 'Summary', 'Disabled (Not signed in)'));
   expectTrue(this.hasInDetails(true, 'Username', ''));
 });
 GEN('#endif  // defined(OS_CHROMEOS)');
diff --git a/chrome/browser/vr/ui_test_input.cc b/chrome/browser/vr/ui_test_input.cc
index 5ed56c0b..6b97818 100644
--- a/chrome/browser/vr/ui_test_input.cc
+++ b/chrome/browser/vr/ui_test_input.cc
@@ -27,6 +27,8 @@
       return kUrlBarSecurityButton;
     case UserFriendlyElementName::kBrowsingDialog:
       return k2dBrowsingHostedUiContent;
+    case UserFriendlyElementName::kContentQuad:
+      return kContentQuad;
     default:
       NOTREACHED();
       return kNone;
diff --git a/chrome/browser/vr/ui_test_input.h b/chrome/browser/vr/ui_test_input.h
index 4896ac5..15f51cd 100644
--- a/chrome/browser/vr/ui_test_input.h
+++ b/chrome/browser/vr/ui_test_input.h
@@ -22,6 +22,7 @@
   kOverflowMenu,    // Overflow menu
   kPageInfoButton,  // Page info button on the URL bar
   kBrowsingDialog,  // 2D fallback UI, e.g. permission prompts
+  kContentQuad,     // Main content quad showing web contents
 };
 
 // These are used to report the current state of the UI after performing an
diff --git a/chrome/build/chrome.x64.orderfile.sha1 b/chrome/build/chrome.x64.orderfile.sha1
index 1f158ca0..e7eccabd 100644
--- a/chrome/build/chrome.x64.orderfile.sha1
+++ b/chrome/build/chrome.x64.orderfile.sha1
@@ -1 +1 @@
-87b7533a4618a58111fe2f15c7123aa0cbae81d4
\ No newline at end of file
+4e4dca1dcee5f9fefcbe7bad8e3dafacb6aa8a3b
\ No newline at end of file
diff --git a/chrome/build/chrome.x86.orderfile.sha1 b/chrome/build/chrome.x86.orderfile.sha1
index 49213d9..216111f1 100644
--- a/chrome/build/chrome.x86.orderfile.sha1
+++ b/chrome/build/chrome.x86.orderfile.sha1
@@ -1 +1 @@
-8652dddeff19f64e605575223c9cc689f40923f9
\ No newline at end of file
+3a2ce2c95bfbed8e154d3891b20606cabe29bc48
\ No newline at end of file
diff --git a/chrome/build/chrome_child.x64.orderfile.sha1 b/chrome/build/chrome_child.x64.orderfile.sha1
index 9c6cdaa..70acd20 100644
--- a/chrome/build/chrome_child.x64.orderfile.sha1
+++ b/chrome/build/chrome_child.x64.orderfile.sha1
@@ -1 +1 @@
-ab870b4619225bf5f80f2775029403a063d3a831
\ No newline at end of file
+f398bd8454a07a9a9c59b383a4f28f798415065b
\ No newline at end of file
diff --git a/chrome/build/chrome_child.x86.orderfile.sha1 b/chrome/build/chrome_child.x86.orderfile.sha1
index b5e5ce5..be1f0c0d 100644
--- a/chrome/build/chrome_child.x86.orderfile.sha1
+++ b/chrome/build/chrome_child.x86.orderfile.sha1
@@ -1 +1 @@
-967d7f135127a9d01e8e327443b204dd30c0bbdc
\ No newline at end of file
+16de3cbd32aa1434d2d9d2db2b01ac7f3f7a1c55
\ No newline at end of file
diff --git a/chrome/renderer/net/net_error_helper.cc b/chrome/renderer/net/net_error_helper.cc
index ba72715..52bdfe69 100644
--- a/chrome/renderer/net/net_error_helper.cc
+++ b/chrome/renderer/net/net_error_helper.cc
@@ -44,6 +44,7 @@
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
 #include "third_party/blink/public/platform/modules/fetch/fetch_api_request.mojom-shared.h"
+#include "third_party/blink/public/platform/web_data.h"
 #include "third_party/blink/public/platform/web_security_origin.h"
 #include "third_party/blink/public/platform/web_url.h"
 #include "third_party/blink/public/platform/web_url_request.h"
diff --git a/chrome/renderer/sandbox_status_extension_android.cc b/chrome/renderer/sandbox_status_extension_android.cc
index 3210777..f5eab6d 100644
--- a/chrome/renderer/sandbox_status_extension_android.cc
+++ b/chrome/renderer/sandbox_status_extension_android.cc
@@ -18,6 +18,7 @@
 #include "gin/arguments.h"
 #include "gin/function_template.h"
 #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
+#include "third_party/blink/public/platform/web_security_origin.h"
 #include "third_party/blink/public/platform/web_url.h"
 #include "third_party/blink/public/platform/web_url_request.h"
 #include "third_party/blink/public/web/blink.h"
diff --git a/chromecast/browser/BUILD.gn b/chromecast/browser/BUILD.gn
index bc84fcb..3ba9532 100644
--- a/chromecast/browser/BUILD.gn
+++ b/chromecast/browser/BUILD.gn
@@ -17,6 +17,8 @@
   sources = [
     "application_media_capabilities.cc",
     "application_media_capabilities.h",
+    "application_session_id_manager.cc",
+    "application_session_id_manager.h",
     "bluetooth/cast_bluetooth_chooser.cc",
     "bluetooth/cast_bluetooth_chooser.h",
     "cast_browser_context.cc",
diff --git a/chromecast/browser/application_session_id_manager.cc b/chromecast/browser/application_session_id_manager.cc
new file mode 100644
index 0000000..7de91ae
--- /dev/null
+++ b/chromecast/browser/application_session_id_manager.cc
@@ -0,0 +1,37 @@
+// 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 "chromecast/browser/application_session_id_manager.h"
+
+#include <utility>
+
+namespace chromecast {
+namespace media {
+
+void CreateApplicationSessionIdManager(
+    content::RenderFrameHost* render_frame_host,
+    std::string application_session_id,
+    ::media::mojom::ApplicationSessionIdManagerRequest request) {
+  // The created CastApplicationSessionIdManager will return
+  // the |application_session_id| that's passed in here.
+  // The object will be deleted on connection error, or when the frame navigates
+  // away. See FrameServiceBase for details.
+  new CastApplicationSessionIdManager(render_frame_host, std::move(request),
+                                      std::move(application_session_id));
+}
+
+CastApplicationSessionIdManager::CastApplicationSessionIdManager(
+    content::RenderFrameHost* render_frame_host,
+    ::media::mojom::ApplicationSessionIdManagerRequest request,
+    std::string application_session_id)
+    : FrameServiceBase(render_frame_host, std::move(request)),
+      application_session_id_(std::move(application_session_id)) {}
+
+void CastApplicationSessionIdManager::GetApplicationSessionId(
+    GetApplicationSessionIdCallback callback) {
+  std::move(callback).Run(application_session_id_);
+}
+
+}  // namespace media
+}  // namespace chromecast
\ No newline at end of file
diff --git a/chromecast/browser/application_session_id_manager.h b/chromecast/browser/application_session_id_manager.h
new file mode 100644
index 0000000..4fcb039
--- /dev/null
+++ b/chromecast/browser/application_session_id_manager.h
@@ -0,0 +1,47 @@
+// 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 CHROMECAST_BROWSER_APPLICATION_SESSION_ID_MANAGER_H_
+#define CHROMECAST_BROWSER_APPLICATION_SESSION_ID_MANAGER_H_
+
+#include <string>
+
+#include "base/macros.h"
+#include "content/public/browser/frame_service_base.h"
+#include "media/mojo/interfaces/application_session_id_manager.mojom.h"
+
+namespace content {
+class RenderFrameHost;
+}  // namespace content
+
+namespace chromecast {
+namespace media {
+
+class CastApplicationSessionIdManager
+    : public ::content::FrameServiceBase<
+          ::media::mojom::ApplicationSessionIdManager> {
+ public:
+  CastApplicationSessionIdManager(
+      content::RenderFrameHost* render_frame_host,
+      ::media::mojom::ApplicationSessionIdManagerRequest request,
+      std::string application_session_id);
+
+ private:
+  // ::media::mojom::ApplicationSessionIdManager implementation.
+  void GetApplicationSessionId(GetApplicationSessionIdCallback callback) final;
+
+  const std::string application_session_id_;
+
+  DISALLOW_COPY_AND_ASSIGN(CastApplicationSessionIdManager);
+};
+
+void CreateApplicationSessionIdManager(
+    content::RenderFrameHost* render_frame_host,
+    std::string application_session_id,
+    ::media::mojom::ApplicationSessionIdManagerRequest request);
+
+}  // namespace media
+}  // namespace chromecast
+
+#endif  // CHROMECAST_BROWSER_APPLICATION_SESSION_ID_MANAGER_H_
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc
index df993e9..05b22d807 100644
--- a/chromecast/browser/cast_content_browser_client.cc
+++ b/chromecast/browser/cast_content_browser_client.cc
@@ -24,6 +24,7 @@
 #include "chromecast/base/cast_features.h"
 #include "chromecast/base/cast_paths.h"
 #include "chromecast/base/chromecast_switches.h"
+#include "chromecast/browser/application_session_id_manager.h"
 #include "chromecast/browser/cast_browser_context.h"
 #include "chromecast/browser/cast_browser_main_parts.h"
 #include "chromecast/browser/cast_browser_process.h"
@@ -662,6 +663,13 @@
   registry->AddInterface(
       base::BindRepeating(&CreateMediaDrmStorage, render_frame_host));
 #endif
+
+  std::string application_session_id =
+      CastNavigationUIData::GetSessionIdForWebContents(
+          content::WebContents::FromRenderFrameHost(render_frame_host));
+  registry->AddInterface(base::BindRepeating(
+      &media::CreateApplicationSessionIdManager, render_frame_host,
+      std::move(application_session_id)));
 }
 
 void CastContentBrowserClient::RegisterInProcessServices(
diff --git a/chromecast/media/service/cast_mojo_media_client.cc b/chromecast/media/service/cast_mojo_media_client.cc
index d0be59b..90bdd55 100644
--- a/chromecast/media/service/cast_mojo_media_client.cc
+++ b/chromecast/media/service/cast_mojo_media_client.cc
@@ -38,12 +38,14 @@
 }
 
 std::unique_ptr<::media::Renderer> CastMojoMediaClient::CreateRenderer(
+    service_manager::mojom::InterfaceProvider* host_interfaces,
     scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     ::media::MediaLog* /* media_log */,
     const std::string& audio_device_id) {
   return std::make_unique<CastRenderer>(
       backend_factory_, task_runner, audio_device_id, video_mode_switcher_,
-      video_resolution_policy_, media_resource_tracker_, connector_);
+      video_resolution_policy_, media_resource_tracker_, connector_,
+      host_interfaces);
 }
 
 std::unique_ptr<::media::CdmFactory> CastMojoMediaClient::CreateCdmFactory(
diff --git a/chromecast/media/service/cast_mojo_media_client.h b/chromecast/media/service/cast_mojo_media_client.h
index b5104b1..8b9065e0 100644
--- a/chromecast/media/service/cast_mojo_media_client.h
+++ b/chromecast/media/service/cast_mojo_media_client.h
@@ -33,6 +33,7 @@
   // MojoMediaClient overrides.
   void Initialize(service_manager::Connector* connector) override;
   std::unique_ptr<::media::Renderer> CreateRenderer(
+      service_manager::mojom::InterfaceProvider* host_interfaces,
       scoped_refptr<base::SingleThreadTaskRunner> task_runner,
       ::media::MediaLog* media_log,
       const std::string& audio_device_id) override;
diff --git a/chromecast/media/service/cast_renderer.cc b/chromecast/media/service/cast_renderer.cc
index bcbd1d1c..93767e42 100644
--- a/chromecast/media/service/cast_renderer.cc
+++ b/chromecast/media/service/cast_renderer.cc
@@ -28,7 +28,9 @@
 #include "media/base/media_log.h"
 #include "media/base/media_resource.h"
 #include "media/base/renderer_client.h"
+#include "services/service_manager/public/cpp/connect.h"
 #include "services/service_manager/public/cpp/connector.h"
+#include "services/service_manager/public/mojom/interface_provider.mojom.h"
 
 namespace chromecast {
 namespace media {
@@ -57,7 +59,8 @@
     VideoModeSwitcher* video_mode_switcher,
     VideoResolutionPolicy* video_resolution_policy,
     MediaResourceTracker* media_resource_tracker,
-    service_manager::Connector* connector)
+    service_manager::Connector* connector,
+    service_manager::mojom::InterfaceProvider* host_interfaces)
     : backend_factory_(backend_factory),
       task_runner_(task_runner),
       audio_device_id_(audio_device_id.empty()
@@ -67,6 +70,7 @@
       video_resolution_policy_(video_resolution_policy),
       media_resource_tracker_(media_resource_tracker),
       connector_(connector),
+      host_interfaces_(host_interfaces),
       client_(nullptr),
       cast_cdm_context_(nullptr),
       media_task_runner_factory_(
@@ -92,7 +96,36 @@
                               const ::media::PipelineStatusCB& init_cb) {
   CMALOG(kLogControl) << __FUNCTION__ << ": " << this;
   DCHECK(task_runner_->BelongsToCurrentThread());
+  DCHECK(!application_session_id_manager_ptr_);
 
+  // Retrieve application_session_id if it is available via
+  // ApplicationSessionIdManager.
+
+  // If a CastRenderer is created for a purpose other than a web application,
+  // the ApplicationSessionIdManager interface is not available, and application
+  // session ID will be an empty string.
+
+  if (host_interfaces_) {
+    service_manager::GetInterface<::media::mojom::ApplicationSessionIdManager>(
+        host_interfaces_, &application_session_id_manager_ptr_);
+  }
+
+  if (application_session_id_manager_ptr_) {
+    application_session_id_manager_ptr_->GetApplicationSessionId(base::BindOnce(
+        &CastRenderer::OnApplicationSessionIdReceived,
+        weak_factory_.GetWeakPtr(), media_resource, client, init_cb));
+  } else {
+    OnApplicationSessionIdReceived(media_resource, client, init_cb,
+                                   std::string());
+  }
+}
+
+void CastRenderer::OnApplicationSessionIdReceived(
+    ::media::MediaResource* media_resource,
+    ::media::RendererClient* client,
+    const ::media::PipelineStatusCB& init_cb,
+    const std::string& application_session_id) {
+  DCHECK(task_runner_->BelongsToCurrentThread());
   // Create pipeline backend.
   media_resource_usage_.reset(
       new MediaResourceTracker::ScopedUsage(media_resource_tracker_));
diff --git a/chromecast/media/service/cast_renderer.h b/chromecast/media/service/cast_renderer.h
index b924732..13a6dea2 100644
--- a/chromecast/media/service/cast_renderer.h
+++ b/chromecast/media/service/cast_renderer.h
@@ -13,6 +13,7 @@
 #include "chromecast/media/base/video_resolution_policy.h"
 #include "chromecast/media/cma/backend/cma_backend_factory.h"
 #include "media/base/renderer.h"
+#include "media/mojo/interfaces/application_session_id_manager.mojom.h"
 #include "ui/gfx/geometry/size.h"
 
 namespace base {
@@ -21,6 +22,9 @@
 
 namespace service_manager {
 class Connector;
+namespace mojom {
+class InterfaceProvider;
+}  // namespace mojom
 }  // namespace service_manager
 
 namespace chromecast {
@@ -35,13 +39,16 @@
 class CastRenderer : public ::media::Renderer,
                      public VideoResolutionPolicy::Observer {
  public:
+  // |connector| provides interfaces for services hosted by ServiceManager.
+  // |host_interfaces| provides interfaces tied to RenderFrameHost.
   CastRenderer(CmaBackendFactory* backend_factory,
                const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
                const std::string& audio_device_id,
                VideoModeSwitcher* video_mode_switcher,
                VideoResolutionPolicy* video_resolution_policy,
                MediaResourceTracker* media_resource_tracker,
-               service_manager::Connector* connector);
+               service_manager::Connector* connector,
+               service_manager::mojom::InterfaceProvider* host_interfaces);
   ~CastRenderer() final;
 
   // ::media::Renderer implementation.
@@ -61,6 +68,11 @@
 
  private:
   enum Stream { STREAM_AUDIO, STREAM_VIDEO };
+  void OnApplicationSessionIdReceived(
+      ::media::MediaResource* media_resource,
+      ::media::RendererClient* client,
+      const ::media::PipelineStatusCB& init_cb,
+      const std::string& application_session_id);
   void OnError(::media::PipelineStatus status);
   void OnEnded(Stream stream);
   void OnStatisticsUpdate(const ::media::PipelineStatistics& stats);
@@ -80,6 +92,7 @@
   VideoResolutionPolicy* video_resolution_policy_;
   MediaResourceTracker* media_resource_tracker_;
   service_manager::Connector* connector_;
+  service_manager::mojom::InterfaceProvider* host_interfaces_;
   // Must outlive |pipeline_| to properly count resource usage.
   std::unique_ptr<MediaResourceTracker::ScopedUsage> media_resource_usage_;
 
@@ -91,6 +104,9 @@
   bool eos_[2];
   gfx::Size video_res_;
 
+  ::media::mojom::ApplicationSessionIdManagerPtr
+      application_session_id_manager_ptr_;
+
   base::WeakPtrFactory<CastRenderer> weak_factory_;
   DISALLOW_COPY_AND_ASSIGN(CastRenderer);
 };
diff --git a/components/autofill/core/browser/autofill_download_manager_unittest.cc b/components/autofill/core/browser/autofill_download_manager_unittest.cc
index 8a95d5c..92e32b3 100644
--- a/components/autofill/core/browser/autofill_download_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_download_manager_unittest.cc
@@ -23,7 +23,6 @@
 #include "base/test/scoped_command_line.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/scoped_task_environment.h"
-#include "base/test/simple_test_clock.h"
 #include "base/test/test_timeouts.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/autofill/core/browser/autofill_field.h"
@@ -775,10 +774,6 @@
     request_context_getter_ =
         base::MakeRefCounted<net::TestURLRequestContextGetter>(
             scoped_task_environment_.GetMainThreadTaskRunner());
-    request_context_getter_->GetURLRequestContext()
-        ->http_transaction_factory()
-        ->GetCache()
-        ->SetClockForTesting(&clock_);
     driver_ = std::make_unique<TestAutofillDriver>();
     driver_->SetURLRequestContext(request_context_getter_.get());
   }
@@ -812,8 +807,10 @@
     response->set_content_type("text/proto");
     response->AddCustomHeader(
         "Cache-Control",
-        base::StringPrintf("max-age=%" PRId64,
-                           base::TimeDelta::FromDays(2).InSeconds()));
+        base::StringPrintf(
+            "max-age=%" PRId64,
+            base::TimeDelta::FromMilliseconds(cache_expiration_in_milliseconds_)
+                .InSeconds()));
     return response;
   }
 
@@ -834,9 +831,9 @@
   base::test::ScopedCommandLine scoped_command_line_;
   base::test::ScopedFeatureList scoped_feature_list_;
   EmbeddedTestServer server_;
+  int cache_expiration_in_milliseconds_ = 100000;
   std::unique_ptr<base::RunLoop> run_loop_;
   size_t call_count_ = 0;
-  base::SimpleTestClock clock_;
   scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_;
   std::unique_ptr<TestAutofillDriver> driver_;
 };
@@ -855,8 +852,6 @@
   std::vector<std::unique_ptr<FormStructure>> form_structures;
   form_structures.push_back(std::make_unique<FormStructure>(form));
 
-  clock_.SetNow(base::Time::Now());
-
   // Query for the form. This should go to the embedded server.
   {
     SCOPED_TRACE("First Query");
@@ -873,7 +868,6 @@
   // Query again the next day. This should go to the cache, since the max-age
   // for the cached response is 2 days.
   {
-    clock_.Advance(base::TimeDelta::FromDays(1));
     SCOPED_TRACE("Second Query");
     base::HistogramTester histogram;
     call_count_ = 0;
@@ -884,13 +878,47 @@
     histogram.ExpectBucketCount("Autofill.Query.Method", METHOD_GET, 1);
     histogram.ExpectBucketCount("Autofill.Query.WasInCache", CACHE_HIT, 1);
   }
+}
 
-  // Query after another 2 days (a total of 3 days since the entry was cached).
-  // The cache entry had a max age of 2 days, so it should be expired. This
-  // should go to the embedded server.
+TEST_F(AutofillQueryTest, ExpiredCacheInResponse) {
+  FormFieldData field;
+  field.label = ASCIIToUTF16("First Name:");
+  field.name = ASCIIToUTF16("firstname");
+  field.form_control_type = "text";
+
+  FormData form;
+  form.fields.push_back(field);
+
+  std::vector<std::unique_ptr<FormStructure>> form_structures;
+  form_structures.push_back(std::make_unique<FormStructure>(form));
+
+  // Set the cache expiration interval to 0.
+  cache_expiration_in_milliseconds_ = 0;
+
+  // Query for the form. This should go to the embedded server.
   {
-    clock_.Advance(base::TimeDelta::FromDays(2));
-    SCOPED_TRACE("Third Query");
+    SCOPED_TRACE("First Query");
+    base::HistogramTester histogram;
+    call_count_ = 0;
+    ASSERT_NO_FATAL_FAILURE(SendQueryRequest(form_structures));
+    EXPECT_EQ(1u, call_count_);
+    histogram.ExpectBucketCount("Autofill.ServerQueryResponse",
+                                AutofillMetrics::QUERY_SENT, 1);
+    histogram.ExpectBucketCount("Autofill.Query.Method", METHOD_GET, 1);
+    histogram.ExpectBucketCount("Autofill.Query.WasInCache", CACHE_MISS, 1);
+  }
+
+  // The cache entry had a max age of 0 ms, so delaying only a few milliseconds
+  // ensures the cache expires and no request are served by cached content
+  // (ie this should go to the embedded server).
+  base::RunLoop run_loop;
+  base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+      FROM_HERE, run_loop.QuitClosure(),
+      base::TimeDelta::FromMilliseconds(100));
+  run_loop.Run();
+
+  {
+    SCOPED_TRACE("Second Query");
     base::HistogramTester histogram;
     call_count_ = 0;
     ASSERT_NO_FATAL_FAILURE(SendQueryRequest(form_structures));
diff --git a/components/browser_sync/profile_sync_service.cc b/components/browser_sync/profile_sync_service.cc
index e338ca86..5dc9d77c 100644
--- a/components/browser_sync/profile_sync_service.cc
+++ b/components/browser_sync/profile_sync_service.cc
@@ -797,7 +797,10 @@
   // progress. StartupController::TryStartImmediately bypasses the first setup
   // check though, so we first have to check whether the engine is initialized.
   if (!IsEngineInitialized()) {
-    DCHECK_EQ(GetAuthError().state(), GoogleServiceAuthError::NONE);
+    // Note: We generally shouldn't be in an auth error state here (we get those
+    // errors only after the engine is initialized), but if we received an auth
+    // error and then shut down, it'll still be here.
+    // TODO(crbug.com/839834): Should we check for an auth error first here?
     switch (startup_controller_->GetState()) {
       case syncer::StartupController::State::NOT_STARTED:
         DCHECK(!engine_);
@@ -1288,45 +1291,6 @@
   NotifyObservers();
 }
 
-std::string ProfileSyncService::QuerySyncStatusSummaryString() {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-
-  // TODO(crbug.com/839834): Reevaluate this method; the cases below don't make
-  // a whole lot of sense.
-
-  if (HasDisableReason(DISABLE_REASON_UNRECOVERABLE_ERROR))
-    return "Unrecoverable error detected";
-  if (!engine_)
-    return "Syncing not enabled";
-  if (!IsFirstSetupComplete())
-    return "First time sync setup incomplete";
-  if (data_type_manager_ &&
-      data_type_manager_->state() == DataTypeManager::STOPPED) {
-    return "Datatypes not fully initialized";
-  }
-  if (IsSyncActive())
-    return "Sync service initialized";
-
-  return "Status unknown: Internal error?";
-}
-
-std::string ProfileSyncService::GetEngineInitializationStateString() const {
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  switch (startup_controller_->GetState()) {
-    case syncer::StartupController::State::NOT_STARTED:
-      DCHECK(!engine_);
-      return "Not started";
-    case syncer::StartupController::State::STARTING_DEFERRED:
-      DCHECK(!engine_);
-      return "Deferred";
-    case syncer::StartupController::State::STARTED:
-      DCHECK(engine_);
-      return "Started";
-  }
-  NOTREACHED();
-  return std::string();
-}
-
 bool ProfileSyncService::IsSetupInProgress() const {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return outstanding_setup_in_progress_handles_ > 0;
diff --git a/components/browser_sync/profile_sync_service.h b/components/browser_sync/profile_sync_service.h
index 3d157b2..57c4209 100644
--- a/components/browser_sync/profile_sync_service.h
+++ b/components/browser_sync/profile_sync_service.h
@@ -278,10 +278,8 @@
       const override;
   void ReenableDatatype(syncer::ModelType type) override;
   syncer::SyncTokenStatus GetSyncTokenStatus() const override;
-  std::string QuerySyncStatusSummaryString() override;
   bool QueryDetailedSyncStatus(syncer::SyncStatus* result) override;
   base::Time GetLastSyncedTime() const override;
-  std::string GetEngineInitializationStateString() const override;
   syncer::SyncCycleSnapshot GetLastCycleSnapshot() const override;
   std::unique_ptr<base::Value> GetTypeStatusMap() override;
   const GURL& sync_service_url() const override;
diff --git a/components/browser_sync/profile_sync_service_startup_unittest.cc b/components/browser_sync/profile_sync_service_startup_unittest.cc
index 14e5c8d..a145766 100644
--- a/components/browser_sync/profile_sync_service_startup_unittest.cc
+++ b/components/browser_sync/profile_sync_service_startup_unittest.cc
@@ -12,6 +12,7 @@
 #include "components/sync/driver/fake_data_type_controller.h"
 #include "components/sync/driver/sync_api_component_factory_mock.h"
 #include "components/sync/engine/fake_sync_engine.h"
+#include "components/sync/engine/mock_sync_engine.h"
 #include "services/identity/public/cpp/identity_test_utils.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -19,9 +20,11 @@
 using syncer::DataTypeManager;
 using syncer::DataTypeManagerMock;
 using syncer::FakeSyncEngine;
+using syncer::MockSyncEngine;
 using testing::_;
 using testing::ByMove;
 using testing::DoAll;
+using testing::InvokeWithoutArgs;
 using testing::Mock;
 using testing::NiceMock;
 using testing::Return;
@@ -56,7 +59,9 @@
 
 class ProfileSyncServiceStartupTest : public testing::Test {
  public:
-  ProfileSyncServiceStartupTest() {
+  ProfileSyncServiceStartupTest()
+      : scoped_task_environment_(
+            base::test::ScopedTaskEnvironment::MainThreadType::MOCK_TIME) {
     profile_sync_service_bundle_.auth_service()
         ->set_auto_post_fetch_response_on_message_loop(true);
   }
@@ -65,7 +70,9 @@
     sync_service_->Shutdown();
   }
 
-  void CreateSyncService(ProfileSyncService::StartBehavior start_behavior) {
+  void CreateSyncService(ProfileSyncService::StartBehavior start_behavior,
+                         syncer::ModelTypeSet registered_types =
+                             syncer::ModelTypeSet(syncer::BOOKMARKS)) {
     ProfileSyncServiceBundle::SyncClientBuilder builder(
         &profile_sync_service_bundle_);
     ProfileSyncService::InitParams init_params =
@@ -73,11 +80,13 @@
                                                            builder.Build());
 
     ON_CALL(*component_factory(), CreateCommonDataTypeControllers(_, _))
-        .WillByDefault(testing::InvokeWithoutArgs([=]() {
+        .WillByDefault(InvokeWithoutArgs([=]() {
           syncer::DataTypeController::TypeVector controllers;
-          controllers.push_back(
-              std::make_unique<syncer::FakeDataTypeController>(
-                  syncer::BOOKMARKS));
+          for (syncer::ModelTypeSet::Iterator it = registered_types.First();
+               it.Good(); it.Inc()) {
+            controllers.push_back(
+                std::make_unique<syncer::FakeDataTypeController>(it.Get()));
+          }
           return controllers;
         }));
 
@@ -121,6 +130,14 @@
     return sync_engine_raw;
   }
 
+  MockSyncEngine* SetUpMockSyncEngine() {
+    auto sync_engine = std::make_unique<NiceMock<MockSyncEngine>>();
+    MockSyncEngine* sync_engine_raw = sync_engine.get();
+    ON_CALL(*component_factory(), CreateSyncEngine(_, _, _, _))
+        .WillByDefault(Return(ByMove(std::move(sync_engine))));
+    return sync_engine_raw;
+  }
+
   ProfileSyncService* sync_service() { return sync_service_.get(); }
 
   PrefService* pref_service() {
@@ -131,6 +148,10 @@
     return profile_sync_service_bundle_.component_factory();
   }
 
+  void FastForwardUntilNoTasksRemain() {
+    scoped_task_environment_.FastForwardUntilNoTasksRemain();
+  }
+
  private:
   base::test::ScopedTaskEnvironment scoped_task_environment_;
   ProfileSyncServiceBundle profile_sync_service_bundle_;
@@ -538,4 +559,138 @@
   EXPECT_EQ(syncer::SyncService::State::DISABLED, sync_service()->GetState());
 }
 
+// ChromeOS does not support sign-in after startup (in particular,
+// IdentityManager::Observer::OnPrimaryAccountSet never gets called).
+#if !defined(OS_CHROMEOS)
+TEST_F(ProfileSyncServiceStartupTest, FullStartupSequenceFirstTime) {
+  // We've never completed startup.
+  pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete);
+
+  MockSyncEngine* sync_engine = SetUpMockSyncEngine();
+  EXPECT_CALL(*sync_engine, Initialize(_)).Times(0);
+
+  DataTypeManagerMock* data_type_manager = SetUpDataTypeManagerMock();
+  EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
+  ON_CALL(*data_type_manager, state())
+      .WillByDefault(Return(DataTypeManager::STOPPED));
+
+  // Note: Deferred startup is only enabled if SESSIONS is among the preferred
+  // data types.
+  CreateSyncService(ProfileSyncService::MANUAL_START,
+                    syncer::ModelTypeSet(syncer::SESSIONS));
+  sync_service()->Initialize();
+
+  // There is no signed-in user, but nothing else prevents Sync from starting.
+  EXPECT_EQ(syncer::SyncService::DISABLE_REASON_NOT_SIGNED_IN,
+            sync_service()->GetDisableReasons());
+  EXPECT_EQ(syncer::SyncService::State::DISABLED, sync_service()->GetState());
+
+  // Sign in. Now Sync is ready to start, just waiting for a prod.
+  SimulateTestUserSignin();
+  EXPECT_EQ(syncer::SyncService::State::WAITING_FOR_START_REQUEST,
+            sync_service()->GetState());
+
+  // Once we give the service a prod by initiating Sync setup, it'll start and
+  // initialize the engine. Since this is the initial Sync start, this will not
+  // be deferred.
+  EXPECT_CALL(*sync_engine, Initialize(_));
+  auto setup_in_progress_handle = sync_service()->GetSetupInProgressHandle();
+  EXPECT_EQ(syncer::SyncService::State::INITIALIZING,
+            sync_service()->GetState());
+
+  // Once the engine calls back and says it's initialized, we're just waiting
+  // for the user to finish the initial configuration (choosing data types etc.)
+  // before actually syncing data.
+  sync_service()->OnEngineInitialized(
+      syncer::ModelTypeSet(), syncer::WeakHandle<syncer::JsBackend>(),
+      syncer::WeakHandle<syncer::DataTypeDebugInfoListener>(), "test-guid",
+      /*success=*/true);
+  EXPECT_EQ(syncer::SyncService::State::WAITING_FOR_CONSENT,
+            sync_service()->GetState());
+
+  // Once the user finishes the initial setup, the service can actually start
+  // configuring the data types. It won't actually call the DataTypeManager yet
+  // though, because setup is still considered in progress (we haven't released
+  // the setup-in-progress handle).
+  sync_service()->SetFirstSetupComplete();
+  EXPECT_EQ(syncer::SyncService::State::CONFIGURING,
+            sync_service()->GetState());
+
+  // Releasing the setup in progress handle lets the service actually configure
+  // the DataTypeManager.
+  EXPECT_CALL(*data_type_manager, Configure(_, _))
+      .WillOnce(InvokeWithoutArgs(sync_service(),
+                                  &ProfileSyncService::OnConfigureStart));
+  ON_CALL(*data_type_manager, state())
+      .WillByDefault(Return(DataTypeManager::CONFIGURING));
+  setup_in_progress_handle.reset();
+  // While DataTypeManager configuration is ongoing, the overall state is still
+  // CONFIGURING.
+  EXPECT_EQ(syncer::SyncService::State::CONFIGURING,
+            sync_service()->GetState());
+
+  // Finally, once the DataTypeManager says it's done with configuration, Sync
+  // is actually fully up and running.
+  DataTypeManager::ConfigureResult configure_result(
+      DataTypeManager::OK, syncer::ModelTypeSet(syncer::SESSIONS));
+  ON_CALL(*data_type_manager, state())
+      .WillByDefault(Return(DataTypeManager::CONFIGURED));
+  sync_service()->OnConfigureDone(configure_result);
+  EXPECT_EQ(syncer::SyncService::State::ACTIVE, sync_service()->GetState());
+}
+#endif  // OS_CHROMEOS
+
+TEST_F(ProfileSyncServiceStartupTest, FullStartupSequenceNthTime) {
+  // The user is already signed in and has completed Sync setup before.
+  SimulateTestUserSignin();
+  pref_service()->SetBoolean(syncer::prefs::kSyncFirstSetupComplete, true);
+
+  MockSyncEngine* sync_engine = SetUpMockSyncEngine();
+  EXPECT_CALL(*sync_engine, Initialize(_)).Times(0);
+
+  DataTypeManagerMock* data_type_manager = SetUpDataTypeManagerMock();
+  EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
+  ON_CALL(*data_type_manager, state())
+      .WillByDefault(Return(DataTypeManager::STOPPED));
+
+  // Note: Deferred startup is only enabled if SESSIONS is among the preferred
+  // data types.
+  CreateSyncService(ProfileSyncService::MANUAL_START,
+                    syncer::ModelTypeSet(syncer::SESSIONS));
+  sync_service()->Initialize();
+
+  // Nothing is preventing Sync from starting, but it should be deferred so as
+  // to now slow down browser startup.
+  EXPECT_EQ(syncer::SyncService::State::START_DEFERRED,
+            sync_service()->GetState());
+
+  // Wait for the deferred startup timer to expire. The Sync service will start
+  // and initialize the engine.
+  EXPECT_CALL(*sync_engine, Initialize(_));
+  FastForwardUntilNoTasksRemain();
+  EXPECT_EQ(syncer::SyncService::State::INITIALIZING,
+            sync_service()->GetState());
+
+  // Once the engine calls back and says it's initialized, the DataTypeManager
+  // will get configured, since initial setup is already done.
+  EXPECT_CALL(*data_type_manager, Configure(_, _));
+  sync_service()->OnEngineInitialized(
+      syncer::ModelTypeSet(), syncer::WeakHandle<syncer::JsBackend>(),
+      syncer::WeakHandle<syncer::DataTypeDebugInfoListener>(), "test-guid",
+      /*success=*/true);
+  ON_CALL(*data_type_manager, state())
+      .WillByDefault(Return(DataTypeManager::CONFIGURING));
+  EXPECT_EQ(syncer::SyncService::State::CONFIGURING,
+            sync_service()->GetState());
+
+  // Finally, once the DataTypeManager says it's done with configuration, Sync
+  // is actually fully up and running.
+  DataTypeManager::ConfigureResult configure_result(
+      DataTypeManager::OK, syncer::ModelTypeSet(syncer::SESSIONS));
+  ON_CALL(*data_type_manager, state())
+      .WillByDefault(Return(DataTypeManager::CONFIGURED));
+  sync_service()->OnConfigureDone(configure_result);
+  EXPECT_EQ(syncer::SyncService::State::ACTIVE, sync_service()->GetState());
+}
+
 }  // namespace browser_sync
diff --git a/components/certificate_transparency/single_tree_tracker.h b/components/certificate_transparency/single_tree_tracker.h
index c71985d..fa6b9d1e 100644
--- a/components/certificate_transparency/single_tree_tracker.h
+++ b/components/certificate_transparency/single_tree_tracker.h
@@ -13,10 +13,8 @@
 #include "base/memory/memory_pressure_monitor.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "components/certificate_transparency/sth_observer.h"
 #include "net/base/hash_value.h"
 #include "net/base/network_change_notifier.h"
-#include "net/cert/ct_verifier.h"
 #include "net/cert/signed_tree_head.h"
 #include "net/log/net_log_with_source.h"
 
@@ -97,11 +95,10 @@
 // SCTs, the SCTs (and their corresponding entries) are present in the log.
 //
 // To accomplish this, this class needs to be notified of when new SCTs are
-// observed (which it does by implementing net::CTVerifier::Observer) and when
-// new STHs are observed (which it does by implementing STHObserver).
-// Once connected to sources providing that data, the status for a given SCT
-// can be queried by calling GetLogEntryInclusionCheck.
-class SingleTreeTracker : public net::CTVerifier::Observer, public STHObserver {
+// observed and when new STHs are observed. Once both SCTs and at least one
+// STH have been provided, the status for a given SCT can be queried by
+// calling GetLogEntryInclusionCheck.
+class SingleTreeTracker {
  public:
   enum SCTInclusionStatus {
     // SCT was not observed by this class and is not currently pending
@@ -132,10 +129,8 @@
                     LogDnsClient* dns_client,
                     net::HostResolver* host_resolver,
                     net::NetLog* net_log);
-  ~SingleTreeTracker() override;
+  ~SingleTreeTracker();
 
-  // net::ct::CTVerifier::Observer implementation.
-  // TODO(eranm): Extract CTVerifier::Observer to SCTObserver
   // Enqueues |sct| for later inclusion checking of the given |cert|, so long as
   // both of the following are true:
   // a) The latest STH known for this log is older than |sct.timestamp| +
@@ -151,13 +146,12 @@
   // here as this callback is invoked during certificate validation.
   void OnSCTVerified(base::StringPiece hostname,
                      net::X509Certificate* cert,
-                     const net::ct::SignedCertificateTimestamp* sct) override;
+                     const net::ct::SignedCertificateTimestamp* sct);
 
-  // STHObserver implementation.
   // After verification of the signature over the |sth|, uses this
   // STH for future inclusion checks.
   // Must only be called for STHs issued by the log this instance tracks.
-  void NewSTHObserved(const net::ct::SignedTreeHead& sth) override;
+  void NewSTHObserved(const net::ct::SignedTreeHead& sth);
 
   // Returns the status of a given log entry that is assembled from
   // |cert| and |sct|. If |cert| and |sct| were not previously observed,
diff --git a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java
index 7573159..b006ccc1 100644
--- a/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java
+++ b/components/feature_engagement/public/android/java/src/org/chromium/components/feature_engagement/EventConstants.java
@@ -34,6 +34,10 @@
      */
     public static final String PULL_TO_REFRESH = "pull_to_refresh";
 
+    /** The contextual suggestions button was shown to the user. */
+    public static final String CONTEXTUAL_SUGGESTIONS_BUTTON_SHOWN =
+            "contextual_suggestions_button_shown";
+
     /**
      * The contextual suggestions bottom sheet was explicitly dismissed via a tap on its close
      * button.
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.cc b/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.cc
index 4726028..f7a644f 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.cc
+++ b/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.cc
@@ -48,6 +48,9 @@
     case UI_PEEK_REVERSE_SCROLL:
       current_event_.sheet_peeked = true;
       return;
+    case UI_BUTTON_SHOWN:
+      current_event_.button_shown = true;
+      return;
     case UI_OPENED:
       current_event_.sheet_opened = true;
       return;
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.h b/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.h
index f06c22c3..585cf28 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.h
+++ b/components/ntp_snippets/contextual/contextual_suggestions_debugging_reporter.h
@@ -35,6 +35,9 @@
 
   // Whether the sheet ever peeked.
   bool sheet_peeked = false;
+
+  // Whether the button has even been shown.
+  bool button_shown = false;
 };
 
 // Reporter specialized for caching information for debugging purposes.
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.cc b/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.cc
index e588db6..08b4fe7 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.cc
+++ b/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.cc
@@ -14,6 +14,7 @@
 
 ContextualSuggestionsMetricsReporter::ContextualSuggestionsMetricsReporter()
     : sheet_peeked_(false),
+      button_shown_(false),
       sheet_opened_(false),
       sheet_closed_(false),
       any_suggestion_downloaded_(false),
@@ -64,6 +65,11 @@
         return;
       sheet_peeked_ = true;
       break;
+    case UI_BUTTON_SHOWN:
+      if (button_shown_)
+        return;
+      button_shown_ = true;
+      break;
     case UI_OPENED:
       if (sheet_opened_)
         return;
@@ -97,6 +103,7 @@
 
 void ContextualSuggestionsMetricsReporter::ResetUma() {
   sheet_peeked_ = false;
+  button_shown_ = false;
   sheet_opened_ = false;
   sheet_closed_ = false;
   any_suggestion_downloaded_ = false;
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.h b/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.h
index 0cd8bff2..5a6ca75 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.h
+++ b/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter.h
@@ -43,6 +43,8 @@
   // Internal UMA state data.
   // Whether the sheet ever peeked.
   bool sheet_peeked_;
+  // Whether the button was ever shown.
+  bool button_shown_;
   // Whether the sheet was ever opened.
   bool sheet_opened_;
   // Whether the sheet was closed.
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter_unittest.cc b/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter_unittest.cc
index c6cb85e..99512b4 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter_unittest.cc
+++ b/components/ntp_snippets/contextual/contextual_suggestions_metrics_reporter_unittest.cc
@@ -36,6 +36,7 @@
 const int kSuggestionClicked = 12;
 const int kUiDismissedWithoutOpen = 13;
 const int kUiDismissedAfterOpen = 14;
+const int kUiButtonShown = 15;
 }  // namespace
 
 class ContextualSuggestionsMetricsReporterTest : public ::testing::Test {
@@ -197,4 +198,51 @@
   GetReporter().Flush();
 }
 
+TEST_F(ContextualSuggestionsMetricsReporterTest, ButtonTest) {
+  base::HistogramTester histogram_tester;
+  GetReporter().SetupForPage(kTestNavigationUrl, GetSourceId());
+  GetReporter().RecordEvent(FETCH_REQUESTED);
+  GetReporter().RecordEvent(FETCH_COMPLETED);
+  GetReporter().RecordEvent(UI_BUTTON_SHOWN);
+  GetReporter().RecordEvent(UI_OPENED);
+  GetReporter().RecordEvent(SUGGESTION_DOWNLOADED);
+  GetReporter().RecordEvent(SUGGESTION_CLICKED);
+  // Flush data to write to UKM.
+  GetReporter().Flush();
+  // Check that we wrote something to UKM.  Details of UKM reporting are tested
+  // in a different test suite.
+  TestUkmRecorder* test_ukm_recorder = GetTestUkmRecorder();
+  std::vector<const ukm::mojom::UkmEntry*> entry_vector =
+      test_ukm_recorder->GetEntriesByName(ContextualSuggestions::kEntryName);
+  EXPECT_EQ(1U, entry_vector.size());
+  const ukm::mojom::UkmEntry* first_entry = entry_vector[0];
+  EXPECT_TRUE(test_ukm_recorder->EntryHasMetric(
+      first_entry, ContextualSuggestions::kFetchStateName));
+  EXPECT_EQ(static_cast<int64_t>(FetchState::COMPLETED),
+            *(test_ukm_recorder->GetEntryMetric(
+                first_entry, ContextualSuggestions::kFetchStateName)));
+  // Test that the expected histogram events were written.
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kUninitialized, 0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchDelayed, 0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchRequested, 1);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchError, 0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchServerBusy, 0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchBelowThreshold,
+                                     0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchEmpty, 0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kFetchCompleted, 1);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kUiButtonShown, 1);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kUiOpened, 1);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kUiClosedObsolete,
+                                     0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName,
+                                     kSuggestionDownloaded, 1);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName, kSuggestionClicked,
+                                     1);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName,
+                                     kUiDismissedWithoutOpen, 0);
+  histogram_tester.ExpectBucketCount(kEventsHistogramName,
+                                     kUiDismissedAfterOpen, 0);
+}
+
 }  // namespace contextual_suggestions
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_reporter.h b/components/ntp_snippets/contextual/contextual_suggestions_reporter.h
index 3ab9726..2c01ea5 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_reporter.h
+++ b/components/ntp_snippets/contextual/contextual_suggestions_reporter.h
@@ -86,9 +86,11 @@
   // The UI was dismissed after having been opened. This means the sheet was
   // closed from any position after it was expanded at least once.
   UI_DISMISSED_AFTER_OPEN = 14,
+  // The UI button was shown to the user.
+  UI_BUTTON_SHOWN = 15,
   // Special name that marks the maximum value in an Enum used for UMA.
   // https://cs.chromium.org/chromium/src/tools/metrics/histograms/README.md.
-  kMaxValue = UI_DISMISSED_AFTER_OPEN,
+  kMaxValue = UI_BUTTON_SHOWN,
 };
 
 // Tracks various metrics based on reports of events that take place
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.cc b/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.cc
index d06920c..1771fdc 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.cc
+++ b/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.cc
@@ -66,6 +66,10 @@
       trigger_event_ = TriggerEvent::REVERSE_SCROLL;
       StartTimerIfNeeded();
       break;
+    case UI_BUTTON_SHOWN:
+      trigger_event_ = TriggerEvent::TOOLBAR_BUTTON;
+      StartTimerIfNeeded();
+      break;
     case UI_OPENED:
       was_sheet_opened_ = true;
       StartTimerIfNeeded();
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.h b/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.h
index c340419..f632dc2e 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.h
+++ b/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry.h
@@ -35,6 +35,7 @@
 enum class TriggerEvent {
   NEVER_SHOWN,
   REVERSE_SCROLL,
+  TOOLBAR_BUTTON,
 };
 
 // Writes a single UKM entry that describes the latest state of the event stream
diff --git a/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry_unittest.cc b/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry_unittest.cc
index 8af8952..b711e58c 100644
--- a/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry_unittest.cc
+++ b/components/ntp_snippets/contextual/contextual_suggestions_ukm_entry_unittest.cc
@@ -104,4 +104,25 @@
   EXPECT_EQ(1, GetEntryMetric(ContextualSuggestions::kTriggerEventName));
 }
 
+TEST_F(ContextualSuggestionsUkmEntryTest, ExpectedOperationButtonTest) {
+  ukm_entry_->RecordEventMetrics(FETCH_DELAYED);
+  ukm_entry_->RecordEventMetrics(FETCH_REQUESTED);
+  ukm_entry_->RecordEventMetrics(FETCH_COMPLETED);
+  ukm_entry_->RecordEventMetrics(UI_BUTTON_SHOWN);
+  ukm_entry_->RecordEventMetrics(UI_OPENED);
+  ukm_entry_->RecordEventMetrics(SUGGESTION_DOWNLOADED);
+  ukm_entry_->RecordEventMetrics(SUGGESTION_DOWNLOADED);
+  ukm_entry_->RecordEventMetrics(SUGGESTION_CLICKED);
+  ukm_entry_->Flush();
+  EXPECT_EQ(1, GetEntryMetric(ContextualSuggestions::kAnyDownloadedName));
+  EXPECT_EQ(1, GetEntryMetric(ContextualSuggestions::kAnySuggestionTakenName));
+  EXPECT_EQ(0, GetEntryMetric(ContextualSuggestions::kClosedFromPeekName));
+  EXPECT_EQ(1, GetEntryMetric(ContextualSuggestions::kEverOpenedName));
+  EXPECT_EQ(static_cast<int64_t>(FetchState::COMPLETED),
+            GetEntryMetric(ContextualSuggestions::kFetchStateName));
+  EXPECT_LT(0,
+            GetEntryMetric(ContextualSuggestions::kShowDurationBucketMinName));
+  EXPECT_EQ(2, GetEntryMetric(ContextualSuggestions::kTriggerEventName));
+}
+
 }  // namespace contextual_suggestions
diff --git a/components/password_manager/OWNERS b/components/password_manager/OWNERS
index 261ec618..dd4cf375 100644
--- a/components/password_manager/OWNERS
+++ b/components/password_manager/OWNERS
@@ -1,5 +1,6 @@
 dvadym@chromium.org
 ioanap@chromium.org
+jdoerrie@chromium.org
 kolos@chromium.org
 vabr@chromium.org
 vasilii@chromium.org
diff --git a/components/password_manager/content/browser/content_password_manager_driver.cc b/components/password_manager/content/browser/content_password_manager_driver.cc
index 21b36fd..cf74461 100644
--- a/components/password_manager/content/browser/content_password_manager_driver.cc
+++ b/components/password_manager/content/browser/content_password_manager_driver.cc
@@ -236,7 +236,7 @@
           render_frame_host_, password_form,
           BadMessageReason::CPMD_BAD_ORIGIN_IN_PAGE_NAVIGATION))
     return;
-  GetPasswordManager()->OnSameDocumentNavigation(this, password_form);
+  GetPasswordManager()->OnPasswordFormSubmittedNoChecks(this, password_form);
 }
 
 void ContentPasswordManagerDriver::ShowPasswordSuggestions(
diff --git a/components/password_manager/core/browser/new_password_form_manager.cc b/components/password_manager/core/browser/new_password_form_manager.cc
index 0587a2c6..585933f 100644
--- a/components/password_manager/core/browser/new_password_form_manager.cc
+++ b/components/password_manager/core/browser/new_password_form_manager.cc
@@ -4,6 +4,7 @@
 
 #include "components/password_manager/core/browser/new_password_form_manager.h"
 
+#include "base/metrics/histogram_macros.h"
 #include "components/autofill/core/browser/form_structure.h"
 #include "components/password_manager/core/browser/browser_save_password_progress_logger.h"
 #include "components/password_manager/core/browser/form_fetcher_impl.h"
@@ -20,6 +21,7 @@
 using autofill::FormStructure;
 using autofill::PasswordForm;
 using base::TimeDelta;
+using base::TimeTicks;
 
 using Logger = autofill::SavePasswordProgressLogger;
 
@@ -164,6 +166,7 @@
 void NewPasswordFormManager::ProcessMatches(
     const std::vector<const PasswordForm*>& non_federated,
     size_t filtered_count) {
+  received_stored_credentials_time_ = TimeTicks::Now();
   std::vector<const PasswordForm*> matches;
   std::copy_if(non_federated.begin(), non_federated.end(),
                std::back_inserter(matches), [](const PasswordForm* form) {
@@ -185,9 +188,10 @@
 
   filled_ = false;
 
-  if (predictions_)
+  if (predictions_) {
+    ReportTimeBetweenStoreAndServerUMA();
     Fill();
-  else {
+  } else {
     base::SequencedTaskRunnerHandle::Get()->PostDelayedTask(
         FROM_HERE,
         base::BindOnce(&NewPasswordFormManager::Fill,
@@ -213,6 +217,7 @@
   for (const FormStructure* form_predictions : predictions) {
     if (form_predictions->form_signature() != observed_form_signature)
       continue;
+    ReportTimeBetweenStoreAndServerUMA();
     predictions_ = ConvertToFormPredictions(*form_predictions);
     Fill();
     break;
@@ -283,4 +288,11 @@
   }
 }
 
+void NewPasswordFormManager::ReportTimeBetweenStoreAndServerUMA() {
+  if (!received_stored_credentials_time_.is_null()) {
+    UMA_HISTOGRAM_TIMES("PasswordManager.TimeBetweenStoreAndServer",
+                        TimeTicks::Now() - received_stored_credentials_time_);
+  }
+}
+
 }  // namespace password_manager
diff --git a/components/password_manager/core/browser/new_password_form_manager.h b/components/password_manager/core/browser/new_password_form_manager.h
index 10036a3..b3dfdf8 100644
--- a/components/password_manager/core/browser/new_password_form_manager.h
+++ b/components/password_manager/core/browser/new_password_form_manager.h
@@ -13,6 +13,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/optional.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/time/time.h"
 #include "components/autofill/core/common/form_data.h"
 #include "components/password_manager/core/browser/form_fetcher.h"
 #include "components/password_manager/core/browser/form_parsing/password_field_prediction.h"
@@ -111,6 +112,10 @@
   void RecordMetricOnCompareParsingResult(
       const autofill::PasswordForm& parsed_form);
 
+  // Report the time between receiving credentials from the password store and
+  // the autofill server responding to the lookup request.
+  void ReportTimeBetweenStoreAndServerUMA();
+
   // The client which implements embedder-specific PasswordManager operations.
   PasswordManagerClient* client_;
 
@@ -157,6 +162,9 @@
   // removed.
   autofill::PasswordForm old_parsing_result_;
 
+  // Time when stored credentials are received from the store. Used for metrics.
+  base::TimeTicks received_stored_credentials_time_;
+
   base::WeakPtrFactory<NewPasswordFormManager> weak_ptr_factory_;
 
   DISALLOW_COPY_AND_ASSIGN(NewPasswordFormManager);
diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
index 1357b5e5a..259c2fed 100644
--- a/components/password_manager/core/browser/password_manager.cc
+++ b/components/password_manager/core/browser/password_manager.cc
@@ -869,12 +869,6 @@
   }
 }
 
-void PasswordManager::OnSameDocumentNavigation(
-    password_manager::PasswordManagerDriver* driver,
-    const PasswordForm& password_form) {
-  OnPasswordFormSubmittedNoChecks(driver, password_form);
-}
-
 void PasswordManager::OnLoginSuccessful() {
   std::unique_ptr<BrowserSavePasswordProgressLogger> logger;
   if (password_manager_util::IsLoggingActive(client_)) {
diff --git a/components/password_manager/core/browser/password_manager.h b/components/password_manager/core/browser/password_manager.h
index 1bcb6224..37bbc4f 100644
--- a/components/password_manager/core/browser/password_manager.h
+++ b/components/password_manager/core/browser/password_manager.h
@@ -123,6 +123,9 @@
 
   // Handles a password form being submitted, assumes that submission is
   // successful and does not do any checks on success of submission.
+  // For example, this is called if |password_form| was filled
+  // upon in-page navigation.This often means history.pushState being
+  // called from JavaScript.
   void OnPasswordFormSubmittedNoChecks(
       password_manager::PasswordManagerDriver* driver,
       const autofill::PasswordForm& password_form);
@@ -141,13 +144,6 @@
   // Handles a request to hide manual fallback for password saving.
   void HideManualFallbackForSaving();
 
-  // Called if |password_form| was filled upon in-page navigation. This often
-  // means history.pushState being called from JavaScript. If this causes false
-  // positive in password saving, update http://crbug.com/357696.
-  // TODO(https://crbug.com/795462): find better name for this function.
-  void OnSameDocumentNavigation(password_manager::PasswordManagerDriver* driver,
-                                const autofill::PasswordForm& password_form);
-
   void ProcessAutofillPredictions(
       password_manager::PasswordManagerDriver* driver,
       const std::vector<autofill::FormStructure*>& forms);
diff --git a/components/password_manager/core/browser/password_manager_unittest.cc b/components/password_manager/core/browser/password_manager_unittest.cc
index f16b38b..d9808cd 100644
--- a/components/password_manager/core/browser/password_manager_unittest.cc
+++ b/components/password_manager/core/browser/password_manager_unittest.cc
@@ -1292,7 +1292,7 @@
   EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_))
       .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save)));
 
-  manager()->OnSameDocumentNavigation(&driver_, form);
+  manager()->OnPasswordFormSubmittedNoChecks(&driver_, form);
   ASSERT_TRUE(form_manager_to_save);
 
   // Simulate saving the form, as if the info bar was accepted.
@@ -1327,7 +1327,7 @@
   EXPECT_CALL(client_, PromptUserToSaveOrUpdatePasswordPtr(_))
       .WillOnce(WithArg<0>(SaveToScopedPtr(&form_manager_to_save)));
 
-  manager()->OnSameDocumentNavigation(&driver_, form);
+  manager()->OnPasswordFormSubmittedNoChecks(&driver_, form);
   EXPECT_TRUE(form_manager_to_save->IsBlacklisted());
 }
 
diff --git a/components/policy/BUILD.gn b/components/policy/BUILD.gn
index 87b81de..6d776e3 100644
--- a/components/policy/BUILD.gn
+++ b/components/policy/BUILD.gn
@@ -78,7 +78,6 @@
 
 constants_header_path = "$target_gen_dir/policy_constants.h"
 constants_source_path = "$target_gen_dir/policy_constants.cc"
-protobuf_decoder_path = "$target_gen_dir/cloud_policy_generated.cc"
 app_restrictions_path = "$target_gen_dir/app_restrictions.xml"
 risk_tag_header_path = "$target_gen_dir/risk_tag.h"
 
@@ -100,7 +99,6 @@
   outputs = [
     constants_header_path,
     constants_source_path,
-    protobuf_decoder_path,
     chrome_settings_proto_path,
     cloud_policy_proto_path,
     app_restrictions_path,
@@ -120,8 +118,6 @@
         rebase_path(chrome_settings_proto_path, root_build_dir),
     "--cloud-policy-protobuf=" +
         rebase_path(cloud_policy_proto_path, root_build_dir),
-    "--cloud-policy-decoder=" +
-        rebase_path(protobuf_decoder_path, root_build_dir),
     "--app-restrictions-definition=" +
         rebase_path(app_restrictions_path, root_build_dir),
     "--risk-tag-header=" + rebase_path(risk_tag_header_path, root_build_dir),
@@ -334,7 +330,6 @@
   sources = [
     constants_header_path,
     constants_source_path,
-    protobuf_decoder_path,
     risk_tag_header_path,
   ]
 
diff --git a/components/policy/core/common/BUILD.gn b/components/policy/core/common/BUILD.gn
index 791e76d..014ca96 100644
--- a/components/policy/core/common/BUILD.gn
+++ b/components/policy/core/common/BUILD.gn
@@ -108,6 +108,8 @@
     "policy_namespace.h",
     "policy_pref_names.cc",
     "policy_pref_names.h",
+    "policy_proto_decoders.cc",
+    "policy_proto_decoders.h",
     "policy_service.cc",
     "policy_service.h",
     "policy_service_impl.cc",
diff --git a/components/policy/core/common/cloud/user_cloud_policy_store_base.cc b/components/policy/core/common/cloud/user_cloud_policy_store_base.cc
index b3dc838..b39f31d 100644
--- a/components/policy/core/common/cloud/user_cloud_policy_store_base.cc
+++ b/components/policy/core/common/cloud/user_cloud_policy_store_base.cc
@@ -10,17 +10,11 @@
 #include "components/policy/core/common/cloud/cloud_external_data_manager.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
 #include "components/policy/core/common/policy_map.h"
+#include "components/policy/core/common/policy_proto_decoders.h"
 #include "components/policy/proto/cloud_policy.pb.h"
 
 namespace policy {
 
-// Decodes a CloudPolicySettings object into a policy map. The implementation is
-// generated code in policy/cloud_policy_generated.cc.
-void DecodePolicy(const enterprise_management::CloudPolicySettings& policy,
-                  base::WeakPtr<CloudExternalDataManager> external_data_manager,
-                  PolicyMap* policies,
-                  PolicyScope scope);
-
 UserCloudPolicyStoreBase::UserCloudPolicyStoreBase(
     scoped_refptr<base::SequencedTaskRunner> background_task_runner,
     PolicyScope policy_scope)
@@ -51,7 +45,8 @@
     const std::string& policy_signature_public_key) {
   // Decode the payload.
   policy_map_.Clear();
-  DecodePolicy(*payload, external_data_manager(), &policy_map_, policy_scope_);
+  DecodeProtoFields(*payload, external_data_manager(), POLICY_SOURCE_CLOUD,
+                    policy_scope_, &policy_map_);
   policy_ = std::move(policy_data);
   policy_signature_public_key_ = policy_signature_public_key;
 }
diff --git a/components/policy/core/common/policy_proto_decoders.cc b/components/policy/core/common/policy_proto_decoders.cc
new file mode 100644
index 0000000..c5c8414
--- /dev/null
+++ b/components/policy/core/common/policy_proto_decoders.cc
@@ -0,0 +1,189 @@
+// 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 "components/policy/core/common/policy_proto_decoders.h"
+
+#include <limits>
+#include <memory>
+
+#include "base/json/json_reader.h"
+#include "base/logging.h"
+#include "base/values.h"
+#include "components/policy/core/common/cloud/cloud_external_data_manager.h"
+#include "components/policy/core/common/policy_map.h"
+#include "components/policy/policy_constants.h"
+#include "components/policy/proto/cloud_policy.pb.h"
+
+namespace policy {
+
+namespace em = enterprise_management;
+
+namespace {
+
+// Returns true and sets |level| to a PolicyLevel if the policy has been set
+// at that level. Returns false if the policy is not set, or has been set at
+// the level of PolicyOptions::UNSET.
+template <class AnyPolicyProto>
+bool GetPolicyLevel(const AnyPolicyProto& policy_proto, PolicyLevel* level) {
+  if (!policy_proto.has_value()) {
+    return false;
+  }
+  if (!policy_proto.has_policy_options()) {
+    *level = POLICY_LEVEL_MANDATORY;  // Default level.
+    return true;
+  }
+  switch (policy_proto.policy_options().mode()) {
+    case em::PolicyOptions::MANDATORY:
+      *level = POLICY_LEVEL_MANDATORY;
+      return true;
+    case em::PolicyOptions::RECOMMENDED:
+      *level = POLICY_LEVEL_RECOMMENDED;
+      return true;
+    case em::PolicyOptions::UNSET:
+      return false;
+  }
+}
+
+// Convert a BooleanPolicyProto to a bool base::Value.
+std::unique_ptr<base::Value> DecodeBooleanProto(
+    const em::BooleanPolicyProto& proto) {
+  return std::make_unique<base::Value>(proto.value());
+}
+
+// Convert an IntegerPolicyProto to an int base::Value.
+std::unique_ptr<base::Value> DecodeIntegerProto(
+    const em::IntegerPolicyProto& proto,
+    std::string* error) {
+  google::protobuf::int64 value = proto.value();
+
+  if (value < std::numeric_limits<int>::min() ||
+      value > std::numeric_limits<int>::max()) {
+    LOG(WARNING) << "Integer value " << value << " out of numeric limits";
+    *error = "Number out of range - invalid int32";
+    return std::make_unique<base::Value>(std::to_string(value));
+  }
+
+  return std::make_unique<base::Value>(static_cast<int>(value));
+}
+
+// Convert a StringPolicyProto to a string base::Value.
+std::unique_ptr<base::Value> DecodeStringProto(
+    const em::StringPolicyProto& proto) {
+  return std::make_unique<base::Value>(proto.value());
+}
+
+// Convert a StringListPolicyProto to a List base::Value, where each list value
+// is of Type::STRING.
+std::unique_ptr<base::Value> DecodeStringListProto(
+    const em::StringListPolicyProto& proto) {
+  auto list_value = std::make_unique<base::ListValue>();
+  for (const auto& entry : proto.value().entries())
+    list_value->AppendString(entry);
+  return std::move(list_value);
+}
+
+// Convert a StringPolicyProto to a base::Value of any type (for example,
+// Type::DICTIONARY or Type::LIST) by parsing it as JSON.
+std::unique_ptr<base::Value> DecodeJsonProto(const em::StringPolicyProto& proto,
+                                             std::string* error) {
+  const std::string& json = proto.value();
+  std::unique_ptr<base::Value> parsed_value =
+      base::JSONReader::ReadAndReturnError(
+          json, base::JSON_ALLOW_TRAILING_COMMAS, nullptr, error);
+
+  if (!parsed_value) {
+    // Can't parse as JSON so return it as a string, and leave it to the handler
+    // to validate.
+    LOG(WARNING) << "Invalid JSON: " << json;
+    return std::make_unique<base::Value>(json);
+  }
+
+  // Accept any Value type that parsed as JSON, and leave it to the handler to
+  // convert and check the concrete type.
+  error->clear();
+  return parsed_value;
+}
+
+}  // namespace
+
+void DecodeProtoFields(
+    const em::CloudPolicySettings& policy,
+    base::WeakPtr<CloudExternalDataManager> external_data_manager,
+    PolicySource source,
+    PolicyScope scope,
+    PolicyMap* map) {
+  PolicyLevel level;
+
+  // Access arrays are terminated by a struct that contains only nullptrs.
+  for (const BooleanPolicyAccess* access = &kBooleanPolicyAccess[0];
+       access->policy_key; access++) {
+    if (!(policy.*access->has_proto)())
+      continue;
+
+    const em::BooleanPolicyProto& proto = (policy.*access->get_proto)();
+    if (!GetPolicyLevel(proto, &level))
+      continue;
+
+    map->Set(access->policy_key, level, scope, source,
+             DecodeBooleanProto(proto), nullptr);
+  }
+
+  for (const IntegerPolicyAccess* access = &kIntegerPolicyAccess[0];
+       access->policy_key; access++) {
+    if (!(policy.*access->has_proto)())
+      continue;
+
+    const em::IntegerPolicyProto& proto = (policy.*access->get_proto)();
+    if (!GetPolicyLevel(proto, &level))
+      continue;
+
+    std::string error;
+    map->Set(access->policy_key, level, scope, source,
+             DecodeIntegerProto(proto, &error), nullptr);
+    if (!error.empty())
+      map->SetError(access->policy_key, error);
+  }
+
+  for (const StringPolicyAccess* access = &kStringPolicyAccess[0];
+       access->policy_key; access++) {
+    if (!(policy.*access->has_proto)())
+      continue;
+
+    const em::StringPolicyProto& proto = (policy.*access->get_proto)();
+    if (!GetPolicyLevel(proto, &level))
+      continue;
+
+    std::string error;
+    std::unique_ptr<base::Value> value =
+        (access->type == StringPolicyType::STRING)
+            ? DecodeStringProto(proto)
+            : DecodeJsonProto(proto, &error);
+
+    std::unique_ptr<ExternalDataFetcher> external_data_fetcher =
+        (access->type == StringPolicyType::EXTERNAL)
+            ? std::make_unique<ExternalDataFetcher>(external_data_manager,
+                                                    access->policy_key)
+            : nullptr;
+
+    map->Set(access->policy_key, level, scope, source, std::move(value),
+             std::move(external_data_fetcher));
+    if (!error.empty())
+      map->SetError(access->policy_key, error);
+  }
+
+  for (const StringListPolicyAccess* access = &kStringListPolicyAccess[0];
+       access->policy_key; access++) {
+    if (!(policy.*access->has_proto)())
+      continue;
+
+    const em::StringListPolicyProto& proto = (policy.*access->get_proto)();
+    if (!GetPolicyLevel(proto, &level))
+      continue;
+
+    map->Set(access->policy_key, level, scope, source,
+             DecodeStringListProto(proto), nullptr);
+  }
+}
+
+}  // namespace policy
\ No newline at end of file
diff --git a/components/policy/core/common/policy_proto_decoders.h b/components/policy/core/common/policy_proto_decoders.h
new file mode 100644
index 0000000..7b95851
--- /dev/null
+++ b/components/policy/core/common/policy_proto_decoders.h
@@ -0,0 +1,34 @@
+// 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 COMPONENTS_POLICY_CORE_COMMON_POLICY_PROTO_DECODERS_H_
+#define COMPONENTS_POLICY_CORE_COMMON_POLICY_PROTO_DECODERS_H_
+
+#include <string>
+
+#include "base/memory/weak_ptr.h"
+#include "components/policy/core/common/policy_types.h"
+
+namespace enterprise_management {
+class CloudPolicySettings;
+}  // namespace enterprise_management
+
+namespace policy {
+
+class CloudExternalDataManager;
+class PolicyMap;
+
+// Decode all of the fields in |policy| which are recognized (see the metadata
+// in policy_constants.cc) and store them in the given |map|, with the given
+// |source| and |scope|.
+void DecodeProtoFields(
+    const enterprise_management::CloudPolicySettings& policy,
+    base::WeakPtr<CloudExternalDataManager> external_data_manager,
+    PolicySource source,
+    PolicyScope scope,
+    PolicyMap* map);
+
+}  // namespace policy
+
+#endif  // COMPONENTS_POLICY_CORE_COMMON_POLICY_PROTO_DECODERS_H_
diff --git a/components/policy/resources/policy_templates_am.xtb b/components/policy/resources/policy_templates_am.xtb
index c631c17..62011c3 100644
--- a/components/policy/resources/policy_templates_am.xtb
+++ b/components/policy/resources/policy_templates_am.xtb
@@ -2814,11 +2814,6 @@
       ይህ ቅንብር እንዳልተዋቀረ ከተተወ ተጠቃሚው ይህን ተግባር ለመጠቀም ወይም ላለመጠቀም ሊወስን ይችላል።</translation>
 <translation id="8870318296973696995">መነሻ ገጽ</translation>
 <translation id="8882006618241293596">በእነዚህ ጣቢያዎች ላይ የ<ph name="FLASH_PLUGIN_NAME" /> ተሰኪውን ያግዱ</translation>
-<translation id="8894962626537183708">
-      መመሪያው የአውዳቸው ደህንነት የተጠበቀ እንደሆነ የሚቆጠሩ የምንጮች (ዩአርኤሎች) ዝርዝር ይገልጻል። ዓላማው ድርጅቶች ለውስጣዊ ድር ግንባታ የማዘጋጃ አገልጋይ እንዲያዋቅሩ ማስቻል ነው፣ በዚህም ገንቢዎቻቸው በማዘጋጃ አገልጋዩ ላይ TLS ማሰማራት ሳይኖርባቸው ደህንነታቸው የተጠበቀ አውዶችን የሚያስፈልጋቸው ባህሪያትን መሞከር ይችላሉ።
-      በዚህ መመሪያ ውስጥ የዩአርኤሎች ዝርዝርን ማዘጋጀት በኮማ በተለዩ የተመሳሳይ ዩአርኤሎች ዝርዝር ላይ የ«--unsafely-treat-insecure-origin-as-secure» ትዕዛዝ መስመር ዕልባትን የማቀናበር ያህል ተመሳሳይ ውጤት አለው። መመሪያው ከተዋቀረ የትዕዛዝ-መስመር ዕልባቱን ይሽረዋል።
-      ደህንነታቸው በተጠበቁ አውዶች ላይ ተጨማሪ መረጃ ለማግኘት https://www.w3.org/TR/secure-contexts/ ን ይመልከቱ።
-      </translation>
 <translation id="890403179930035128">የፊደል ማረሚያ ቋንቋዎችን በግዳጅ ያነቃል። በዚያ ዝርዝር ውስጥ ያሉ ያልታወቁ ቋንቋዎች ችላ ይባላሉ።
 
       ይህን መመሪያ ካነቁት ተጠቃሚው ፊደል ማረሚያ ካነቃላቸው ቋንቋዎች በተጨማሪ ለተገለጹት ቋንቋዎች ይነቃል።
diff --git a/components/policy/resources/policy_templates_ar.xtb b/components/policy/resources/policy_templates_ar.xtb
index 33a4d7f..e58a795 100644
--- a/components/policy/resources/policy_templates_ar.xtb
+++ b/components/policy/resources/policy_templates_ar.xtb
@@ -2682,11 +2682,6 @@
       إذا تم ترك هذا الإعداد بدون تعيين، يمكن للمستخدم أن يقرر استخدام هذه الوظيفة من عدمه.</translation>
 <translation id="8870318296973696995">الصفحة الرئيسية</translation>
 <translation id="8882006618241293596">حظر المكّون الإضافي <ph name="FLASH_PLUGIN_NAME" /> في هذه المواقع</translation>
-<translation id="8894962626537183708">‏
-      تحدد السياسة قائمة أصول (عناوين URL) ليتم التعامل معها كسياق آمن. ويكون الغرض من ذلك هو السماح للمؤسسات بإعداد خادم مرحلي لعمليات تطوير الويب الداخلية ليتمكّن مطورو البرامج اختبار الميزات التي تتطلب سياقات آمنة بدون الحاجة إلى نشر طبقة النقل الآمنة على الخادم المرحلي.
-      ويتطابق تأثير إعداد قائمة بعناوين URL في هذه السياسة مع تأثير إعداد علامة سطر الأوامر "--unsafely-treat-insecure-origin-as-secure" في قائمة مفصولة بفواصل من عناوين URL نفسها. وإذا تم إعداد هذه السياسة، سيؤدي ذلك إلى إلغاء علامة سطر الأوامر.
-      لمزيد من المعلومات حول السياقات الآمنة، اطلع على https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">‏فرض تفعيل التدقيق الإملائي للغات. سيتم تجاهل اللغات غير المعروفة في هذه القائمة.
 
       في حال تفعيل هذه السياسة، سيتم تفعيل التدقيق الإملائي للغات المُحدَّدة بالإضافة إلى اللغات التي فعّل المستخدم التدقيق الإملائي لها.
diff --git a/components/policy/resources/policy_templates_bg.xtb b/components/policy/resources/policy_templates_bg.xtb
index 9f882fe..a8afdb8 100644
--- a/components/policy/resources/policy_templates_bg.xtb
+++ b/components/policy/resources/policy_templates_bg.xtb
@@ -2715,11 +2715,6 @@
 Ако не я зададете, потребителите ще могат да решат дали да използват функцията.</translation>
 <translation id="8870318296973696995">Начална страница</translation>
 <translation id="8882006618241293596">Блокиране на приставката <ph name="FLASH_PLUGIN_NAME" /> на съответните сайтове</translation>
-<translation id="8894962626537183708">
-      Правилото служи за съставяне на списък с източници (URL адреси), които да бъдат третирани като надежден контекст. Целта е да се даде възможност на организациите да настроят подготвителен сървър за вътрешни уеб разработки, така че програмистите им да могат да тестват функции, изискващи надежден контекст, без да се налага да внедряват TLS в подготвителния сървър.
-Посочването на URL адреси в това правило има същия ефект като задаването на разделен със запетаи списък със същите URL адреси чрез флага на командния ред „--unsafely-treat-insecure-origin-as-secure“. Ако правилото бъде зададено, то ще замени този флаг.
-За повече информация относно надеждния контекст посетете https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Служи за принудително активиране на езици за проверка на правописа. Неразпознатите езици в този списък ще се пренебрегват.
 
 Ако активирате правилото, функцията за проверка на правописа ще е включена за посочените езици, както и за тези, за които потребителят я е активирал.
diff --git a/components/policy/resources/policy_templates_bn.xtb b/components/policy/resources/policy_templates_bn.xtb
index 885e5a6..6a7ba5ae 100644
--- a/components/policy/resources/policy_templates_bn.xtb
+++ b/components/policy/resources/policy_templates_bn.xtb
@@ -3141,11 +3141,6 @@
       যদি এই সেটিংটি সেট না থাকা হিসেবে ছেড়ে যাওয়া হয় তাহলে ব্যবহারকারী এই ক্রিয়াটি ব্যবহার করবেন কিনা তার সিদ্ধান্ত তিনি নিজেই নিতে পারেন।</translation>
 <translation id="8870318296973696995">হোম পৃষ্ঠা</translation>
 <translation id="8882006618241293596">এই সাইটগুলিতে <ph name="FLASH_PLUGIN_NAME" /> প্লাগ ইন ব্লক করুন</translation>
-<translation id="8894962626537183708">
-      যে উৎসগুলিকে (URL) সিকিওর কনটেক্সট হিসেবে বিবেচনা করা হবে, এই নীতিতে সেগুলির একটি তালিকা নির্দিষ্ট করা হয়। এটির সাহায্যে কোনও সংস্থা অভ্যন্তরীণ ওয়েব ডেভেলপমেন্টের জন্য স্টেজিং সার্ভার সেট-আপ করতে পারে, যাতে ডেভেলপাররা স্টেজিং সার্ভারে TLS ব্যবহার না করেই এমন বৈশিষ্ট্য পরীক্ষা করে দেখতে পারেন যেগুলিতে সিকিওর কনটেক্সটের প্রয়োজন হয়।
-      URL এর কমা-বিভাজিত তালিকায় '--unsafely-treat-insecure-origin-as-secure' কমান্ড-লাইন ফ্ল্যাগ সেট করলে যা হওয়ার কথা, এই নীতিতে URL এর তালিকা সেট করলে ঠিক তাই হবে।
-      সিকিওর কনটেক্সটের বিষয়ে আরও তথ্যের জন্য https://www.w3.org/TR/secure-contexts/ এ যান
-      </translation>
 <translation id="890403179930035128">বানান পরীক্ষা বাধ্যতামূলকভাবে সক্ষম করে। তালিকার যে ভাষাগুলি শনাক্ত করা যাবে না সেগুলিতে বানান পরীক্ষা করা হবে না।
 
       এই নীতিটি সক্ষম করলে ব্যবহারকারী আগে যে ভাষাগুলি বেছে নিয়েছেন সেগুলি ছাড়াও এখানে নির্দিষ্ট করে দেওয়া ভাষাগুলিতে বানান পরীক্ষা করা হবে।
diff --git a/components/policy/resources/policy_templates_ca.xtb b/components/policy/resources/policy_templates_ca.xtb
index b29f454..ed134345 100644
--- a/components/policy/resources/policy_templates_ca.xtb
+++ b/components/policy/resources/policy_templates_ca.xtb
@@ -2094,7 +2094,7 @@
 
           Si no s'estableix aquesta política, la lupa es desactivarà la primera vegada que es mostri la pantalla d'inici de sessió. Els usuaris poden activar o desactivar la lupa en qualsevol moment i el seu estat a la pàgina d'inici de sessió es mantindrà entre els usuaris.</translation>
 <translation id="7249828445670652637">Activa l'ús de certificats de CA de <ph name="PRODUCT_OS_NAME" /> a les aplicacions ARC</translation>
-<translation id="725322441686394886">Si no s'estableix, en el cas que Neteja de Chrome detecti programari no desitjat, podrà comunicar les metadades de l'escaneig a Google de conformitat amb la política establerta per SafeBrowsingExtendedReportingEnabled. A continuació, Neteja de Chrome preguntarà a l'usuari si vol netejar el programari no desitjat. L'usuari podrà optar per compartir els resultats de la neteja amb Google per contribuir a la detecció de programari no desitjat. Aquests resultats contenen metadades de fitxers, extensions instal·lades automàticament i claus de registre, segons es descriu al llibre blanc de privadesa de Chrome.
+<translation id="725322441686394886">Si no s'estableix, en el cas que Neteja de Chrome detecti programari no desitjat, podrà comunicar les metadades de l'escaneig a Google de conformitat amb la política establerta per SafeBrowsingExtendedReportingEnabled. A continuació, Neteja de Chrome preguntarà a l'usuari si vol netejar el programari no desitjat. L'usuari podrà optar per compartir els resultats de la neteja amb Google per contribuir a la detecció de programari no desitjat en el futur. Aquests resultats contenen metadades de fitxers, extensions instal·lades automàticament i claus de registre, segons es descriu al llibre blanc de privadesa de Chrome.
 
       Si es desactiva, en el cas que Neteja de Chrome detecti programari no desitjat, no comunicarà les metadades de l'escaneig a Google i substituirà qualsevol política establerta per SafeBrowsingExtendedReportingEnabled. Neteja de Chrome preguntarà a l'usuari si vol netejar el programari no desitjat. Els resultats de la neteja no es comunicaran a Google i l'usuari no podrà fer-ho.
 
@@ -2684,11 +2684,6 @@
       Si deixes l'opció sense definir, l'usuari podrà decidir si vol utilitzar aquesta funció o no.</translation>
 <translation id="8870318296973696995">Pàgina d'inici</translation>
 <translation id="8882006618241293596">Bloqueja el connector <ph name="FLASH_PLUGIN_NAME" /> en aquests llocs</translation>
-<translation id="8894962626537183708">
-      La política especifica una llista d'orígens (URL) que es poden tractar com a context segur. La intenció és permetre que les organitzacions configurin un servidor de fases per als desenvolupaments web interns, de manera que els desenvolupadors puguin provar funcions que requereixin contexts segurs sense haver d'implementar TLS al servidor de fases.
-      Definir una llista d'URL d'aquesta política té el mateix efecte que assignar la marca de la línia d'ordres '--unsafely-treat-insecure-origin-as-secure' a una llista d'URL separats per comes. Si la política es defineix, substituirà la marca de la línia d'ordres.
-      Per obtenir més informació sobre els contexts segurs, ves a https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Força l'activació del corrector ortogràfic d'idiomes. S'ignoraran els idiomes de la llista que no es reconeguin.
 
       Si actives aquesta política, s'activarà el corrector ortogràfic en els idiomes especificats, a més dels idiomes en què l'usuari ja l'havia activat.
@@ -2833,9 +2828,9 @@
 <translation id="944817693306670849">Defineix la mida de la memòria cau del disc</translation>
 <translation id="981346395360763138">Serveis d'ubicació de Google desactivats</translation>
 <translation id="982497069985795632">Activa el corrector ortogràfic</translation>
-<translation id="988537626274109600">Aquesta política controla els intervals de temps en què no es permet que el dispositiu <ph name="PRODUCT_OS_NAME" /> cerqui actualitzacions automàticament.
+<translation id="988537626274109600">Aquesta política controla els intervals de temps en què no es permet que <ph name="PRODUCT_OS_NAME" /> cerqui actualitzacions automàticament.
       Quan aquesta política s'estableix en una llista no buida d'intervals de temps:
-      Els dispositius no poden cercar actualitzacions automàticament durant els intervals de temps especificats. Aquesta política no afecta els dispositius que s'han de revertir a una versió anterior o que tenen una versió anterior a la mínima (<ph name="PRODUCT_OS_NAME" />), ja que podria provocar problemes de seguretat. A més, aquesta política no bloqueja les cerques d'actualitzacions sol·licitades per usuaris o administradors.
-      Si aquesta política no s'estableix o no conté cap interval de temps:
+      Els dispositius no poden cercar actualitzacions automàticament durant els intervals de temps especificats. Aquesta política no afecta els dispositius d'una versió anterior a la mínima (<ph name="PRODUCT_OS_NAME" />) o que s'hi han de revertir a una versió anterior, ja que podria provocar problemes de seguretat. A més, aquesta política no bloqueja les cerques d'actualitzacions sol·licitades per usuaris o administradors.
+      Quan aquesta política no s'estableix o no conté cap interval de temps:
       La política no bloqueja les cerques automàtiques d'actualitzacions, però pot ser que hi hagi altres polítiques que sí que les bloquegin.</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/components/policy/resources/policy_templates_cs.xtb b/components/policy/resources/policy_templates_cs.xtb
index 3e961357..056dbfcae 100644
--- a/components/policy/resources/policy_templates_cs.xtb
+++ b/components/policy/resources/policy_templates_cs.xtb
@@ -2761,11 +2761,6 @@
       Pokud toto nastavení ponecháte nenastavené, uživatelé se budou moci rozhodnout, zda tuto funkci chtějí používat.</translation>
 <translation id="8870318296973696995">Domovská stránka</translation>
 <translation id="8882006618241293596">Blokovat plugin <ph name="FLASH_PLUGIN_NAME" /> na těchto webech</translation>
-<translation id="8894962626537183708">
-      Tato zásada udává seznam zdrojů (adres URL), které mají být považovány za bezpečný kontext. Cílem je umožnit organizacím nastavení zkušebního serveru pro vývoj interních webových stránek, aby vývojáři mohli testovat funkce, které vyžadují zabezpečené kontexty, aniž by na testovacím serveru museli implementovat protokol TLS.
-      Nastavení seznamu adres URL v této zásadě má stejný dopad jako nastavení příznaku příkazového řádku --unsafely-treat-insecure-origin-as-secure na čárkami oddělený seznam adres URL. Je-li nastavena tato zásada, bude jí příznak příkazového řádku přepsán.
-      Další informace o bezpečných kontextech naleznete na stránce https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Vynutí povolení jazyků kontroly pravopisu. Neznámé jazyky v seznamu budou ignorovány.
 
       Pokud tuto zásadu povolíte, bude kontrola pravopisu kromě jazyků, pro které ji povolil uživatel, povolena také pro zadané jazyky.
diff --git a/components/policy/resources/policy_templates_da.xtb b/components/policy/resources/policy_templates_da.xtb
index 9b07c24d..9a368d9e 100644
--- a/components/policy/resources/policy_templates_da.xtb
+++ b/components/policy/resources/policy_templates_da.xtb
@@ -2707,11 +2707,6 @@
       Hvis indstillingen ikke konfigureres, kan brugerne selv bestemme, om de vil bruge denne funktion eller ej.</translation>
 <translation id="8870318296973696995">Startside</translation>
 <translation id="8882006618241293596">Bloker <ph name="FLASH_PLUGIN_NAME" />-pluginnet på disse websites</translation>
-<translation id="8894962626537183708">
-      Denne politik angiver en liste over kilder (webadresser), der skal behandles som sikkert indhold. Formålet er, at organisationerne kan konfigurere en testserver til intern webudvikling, så deres udviklere kan teste funktioner, der kræver sikre kontekster, uden at det er nødvendigt at anvende TLS på testserveren.
-      Indstillingen af en liste af webadresser i denne politik har den samme effekt som at indstille kommandolinjemarkeringen "--unsafely-treat-insecure-origin-as-secure" til en kommasepareret liste med de samme webadresser. Hvis politikken er indstillet, tilsidesætter den kommandolinjemarkeringen.
-      Få flere oplysninger om sikre kontekster på https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Gennemtvinger aktivering af stavekontrol af sprog. Ikke-genkendte sprog på denne liste ignoreres.
 
       Hvis du aktiverer denne politik, aktiveres stavekontrol for de angivne sprog samt de sprog, for hvilke brugeren har aktiveret stavekontrol.
diff --git a/components/policy/resources/policy_templates_de.xtb b/components/policy/resources/policy_templates_de.xtb
index 3ffb04b..c0de5e25 100644
--- a/components/policy/resources/policy_templates_de.xtb
+++ b/components/policy/resources/policy_templates_de.xtb
@@ -2694,11 +2694,6 @@
       Wenn die Einstellung nicht konfiguriert ist, kann der Nutzer entscheiden, ob er die Funktion in Anspruch nehmen möchte oder nicht.</translation>
 <translation id="8870318296973696995">Startseite</translation>
 <translation id="8882006618241293596">Das Plug-in "<ph name="FLASH_PLUGIN_NAME" />" auf diesen Websites blockieren</translation>
-<translation id="8894962626537183708">
-      Mit dieser Richtlinie wird eine Liste aller Quellen (URLs) festgelegt, die als sicherer Kontext eingestuft werden sollen. Auf diese Weise können Organisationen einen Testserver für interne Webentwicklung einrichten, damit ihre Entwickler Funktionen testen können, die einen sicheren Quellenkontext voraussetzen, ohne TLS auf dem Testserver bereitstellen zu müssen.
-      Das Festlegen einer Liste von URLs in dieser Richtlinie hat den gleichen Effekt wie das Festlegen des Befehlszeilenparameters "--unsafely-treat-insecure-origin-as-secure" für eine durch Kommas getrennte Liste mit denselben URLs. Wenn die Richtlinie festgelegt wird, wird der Befehlszeilenparameter überschrieben.
-      Weitere Informationen zu sicherem Kontext finden Sie unter https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Erzwingt die Aktivierung von Sprachen für die Rechtschreibprüfung. Sprachen in dieser Liste, die nicht erkannt werden, werden ignoriert.
 
       Wenn diese Richtlinie aktiviert wird, wird die Rechtschreibprüfung für die angegebenen Sprachen aktiviert, zusätzlich zu den Sprachen, für die der Nutzer die Rechtschreibprüfung aktiviert hat.
diff --git a/components/policy/resources/policy_templates_el.xtb b/components/policy/resources/policy_templates_el.xtb
index 668a5984..48f201ae 100644
--- a/components/policy/resources/policy_templates_el.xtb
+++ b/components/policy/resources/policy_templates_el.xtb
@@ -2826,11 +2826,6 @@
       Εάν δεν οριστεί αυτή η ρύθμιση, ο χρήστης μπορεί να αποφασίσει εάν θα χρησιμοποιήσει αυτήν τη λειτουργία.</translation>
 <translation id="8870318296973696995">Αρχική σελίδα</translation>
 <translation id="8882006618241293596">Αποκλείστε την προσθήκη <ph name="FLASH_PLUGIN_NAME" /> σε αυτούς τους ιστοτόπους</translation>
-<translation id="8894962626537183708">
-      Η πολιτική καθορίζει μια λίστα προελεύσεων (URL) που πρόκειται να αντιμετωπιστούν ως ασφαλές περιβάλλον. Στόχος είναι να επιτρέπεται στους οργανισμούς να ρυθμίσουν έναν διακομιστή προετοιμασίας για εσωτερική ανάπτυξη ιστού, προκειμένου να μπορούν οι προγραμματιστές τους να ελέγχουν λειτουργίες που απαιτούν ασφαλή περιβάλλοντα χωρίς να απαιτείται η ανάπτυξη TLS στον διακομιστή προετοιμασίας.
-      Η ρύθμιση μιας λίστας URL σε αυτήν την πολιτική έχει την ίδια επίδραση με τη ρύθμιση μιας μεταβλητής γραμμής εντολών "--unsafely-treat-insecure-origin-as-secure" σε μια λίστα διαχωρισμένη με κόμματα, η οποία περιλαμβάνει τα ίδια URL. Εάν η πολιτική έχει οριστεί, θα παρακάμψει τη μεταβλητή γραμμής εντολών.
-      Για περισσότερες πληροφορίες σχετικά με ασφαλή περιβάλλοντα, ανατρέξτε στη διεύθυνση https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Ενεργοποιεί αναγκαστικά τις γλώσσες ορθογραφικού ελέγχου. Οι γλώσσες που δεν αναγνωρίζονται στη λίστα θα αγνοούνται.
 
       Εάν ενεργοποιήσετε αυτήν την πολιτική, εκτός από τις γλώσσες για τις οποίες ο χρήστης έχει ενεργοποιήσει τον ορθογραφικό έλεγχο, ο ορθογραφικός έλεγχος θα ενεργοποιηθεί επίσης για τις καθορισμένες γλώσσες.
diff --git a/components/policy/resources/policy_templates_en-GB.xtb b/components/policy/resources/policy_templates_en-GB.xtb
index 71d0d2cb..6be37eb 100644
--- a/components/policy/resources/policy_templates_en-GB.xtb
+++ b/components/policy/resources/policy_templates_en-GB.xtb
@@ -2834,11 +2834,6 @@
       If this setting is left not set the user can decide to use this function or not.</translation>
 <translation id="8870318296973696995">Homepage</translation>
 <translation id="8882006618241293596">Block the <ph name="FLASH_PLUGIN_NAME" /> plug-in on these sites</translation>
-<translation id="8894962626537183708">
-      The policy specifies a list of origins (URLs) to be treated as secure context. The intent is to allow organisations to set up a staging server for internal web development, so that their developers can test out features requiring secure contexts without having to deploy TLS on the staging server.
-      Setting a list of URLs in this policy has the same effect as setting the command-line flag ' – unsafely-treat-insecure-origin-as-secure' to a comma-separated list of the same URLs. If the policy is set, it will override the command-line flag.
-      For more information on secure contexts, see https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Force-enables spellcheck languages. Unrecognised languages in that list will be ignored.
 
       If you enable this policy, spellcheck will be enabled for the languages specified, in addition to the languages for which the user has enabled spellcheck.
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb
index d66f833e..03ca200 100644
--- a/components/policy/resources/policy_templates_es-419.xtb
+++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -2717,11 +2717,6 @@
       Si esta opción no se configura, el usuario podrá decidir si desea usar esta función o no.</translation>
 <translation id="8870318296973696995">Página principal</translation>
 <translation id="8882006618241293596">Bloquear el complemento <ph name="FLASH_PLUGIN_NAME" /> en estos sitios</translation>
-<translation id="8894962626537183708">
-      La política especifica una lista de orígenes (URL) que se considerarán como contexto seguro. El objetivo es permitir que las organizaciones configuren un servidor de etapas de pruebas para desarrollos web internos, para que sus programadores puedan probar las funciones que requieren contextos seguros sin la necesidad de implementar TLS en el servidor de etapas de pruebas.
-      Configurar una lista de URL en esta política tiene el mismo efecto que configurar la marca de línea de comandos "--unsafely-treat-insecure-origin-as-secure" en una lista separada por comas de las mismas URL. Si se establece la política, anulará la marca de línea de comandos.
-      Para obtener más información sobre contextos seguros, consulta https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Habilita la corrección ortográfica de idiomas. Se omitirán los idiomas que no se reconozcan en esa lista.
 
       Si se habilita esta política, se habilitará la corrección ortográfica para los idiomas especificados, además de los idiomas en los que el usuario tenga habilitada la corrección ortográfica.
diff --git a/components/policy/resources/policy_templates_es.xtb b/components/policy/resources/policy_templates_es.xtb
index 2fcf3d8c8..914d7a6 100644
--- a/components/policy/resources/policy_templates_es.xtb
+++ b/components/policy/resources/policy_templates_es.xtb
@@ -1320,7 +1320,7 @@
       Si se habilita esta política, los sitios web podrán abrir nuevas ventanas y pestañas y navegar de forma simultánea.
       Si se inhabilita esta política o no se configura, los sitios web no podrán abrir ventanas ni pestañas nuevas ni navegar de forma simultánea.</translation>
 <translation id="4680961954980851756">Habilitar Autocompletar</translation>
-<translation id="4722122254122249791">Habilita el aislamiento de sitios web específicos</translation>
+<translation id="4722122254122249791">Habilitar el aislamiento de sitios web específicos</translation>
 <translation id="4722399051042571387">Si se le asigna el valor false, los usuarios no podrán definir ningún PIN que no se considere seguro y que sea fácil de adivinar.
 
           Algunos ejemplos de PIN no seguros son: los que estén compuestos por un solo número (1111), aquellos que sigan una secuencia numérica ascendente (1234), los que sigan una secuencia numérica descendente (4321) y los que sean muy habituales.
@@ -2842,11 +2842,6 @@
       Si no se establece esta opción, el usuario podrá decidir si quiere o no utilizar esta función.</translation>
 <translation id="8870318296973696995">Página de inicio</translation>
 <translation id="8882006618241293596">Bloquear el complemento <ph name="FLASH_PLUGIN_NAME" /> en estos sitios web</translation>
-<translation id="8894962626537183708">
-      La política define una lista de orígenes (URLs) que se deben considerar contexto seguro. La intención es permitir que las organizaciones configuren un servidor provisional para desarrollar web internas y conseguir que los desarrolladores puedan probar las funciones que necesiten en contextos seguros sin tener que implementar TLS en el servidor provisional.
-      Definir la lista de URLs de esta política tiene el mismo resultado que asignar el indicador de línea de comandos "--unsafely-treat-insecure-origin-as-secure" a una lista de URL separadas por comas. Al habilitar la política, se anula el indicador de línea de comandos.
-      Para obtener más información sobre los contextos seguros, consulta la página https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Fuerza la habilitación del corrector ortográfico de idiomas. Se ignorarán los idiomas de la lista que no se reconozcan.
 
       Si se habilita esta política, se habilitará el corrector ortográfico en los idiomas especificados, además de los idiomas en los que lo haya activado el usuario.
diff --git a/components/policy/resources/policy_templates_et.xtb b/components/policy/resources/policy_templates_et.xtb
index fd47007..26e18f11 100644
--- a/components/policy/resources/policy_templates_et.xtb
+++ b/components/policy/resources/policy_templates_et.xtb
@@ -2827,11 +2827,6 @@
       Kui see seade jäetakse seadistamata, saab kasutaja otsustada, kas funktsiooni kasutada või mitte.</translation>
 <translation id="8870318296973696995">Avaleht</translation>
 <translation id="8882006618241293596">Blokeeri nendel saitidel pistikprogramm <ph name="FLASH_PLUGIN_NAME" /></translation>
-<translation id="8894962626537183708">
-      Reegel määrab allikate (URL-ide) loendi, mida käsitletakse turvalise kontekstina. Reegli eesmärk on võimaldada organisatsioonidel seadistada kontrollserver siseseks veebiarenduseks, et arendajad saaksid testida turvalist konteksti nõudvaid funktsioone, ilma et oleks vaja kontrollserveris TLS-i juurutada.
-      Reeglis URL-ide loendi määramisel on sama mõju mis käsureamärgistuse „--unsafely-treat-insecure-origin-as-secure” lisamine samadest URL-idest koosnevasse komaeraldusega loendisse. Kui reegel on määratud, alistab see käsureamärgistuse.
-      Turvaliste kontekstide lisateavet leiate aadressilt https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Sundlubab õigekirjakontrolli keeled. Loendis olevaid tundmatuid keeli eiratakse.
 
       Kui lubate reegli, lubatakse õigekirjakontroll määratud keelte jaoks, mis lisanduvad keeltele, mille jaoks kasutaja on õigekirjakontrolli lubanud.
diff --git a/components/policy/resources/policy_templates_fa.xtb b/components/policy/resources/policy_templates_fa.xtb
index cb4dc287..d4d166d 100644
--- a/components/policy/resources/policy_templates_fa.xtb
+++ b/components/policy/resources/policy_templates_fa.xtb
@@ -2699,9 +2699,6 @@
       اگر این تنظیم به‌صورت تنظیم‌نشده باقی بماند، کاربر می‌تواند تصمیم بگیرد این عملکرد را داشته باشد یا نه.</translation>
 <translation id="8870318296973696995">صفحهٔ اصلی</translation>
 <translation id="8882006618241293596">مسدود کردن افزایه <ph name="FLASH_PLUGIN_NAME" /> در این سایت‌ها</translation>
-<translation id="8894962626537183708">‏این خط‌مشی فهرستی از منابع اصلی (نشانی‌های وب) را مشخص می‌کند که به‌عنوان بافت ایمن محسوب می‌شوند. هدف این است که سازمان‌ها اجازه داشته باشند سروری عملیاتی برای توسعه وب داخلی راه‌اندازی کنند تا برنامه‌نویس‌های آن‌ها بتوانند قابلیت‌هایی را آزمایش کنند که به بافت ایمن نیاز دارد بدون اینکه مجبور به اجرای TLS در سرور عملیاتی باشد.
-      تنظیم فهرستی از نشانی‌های وب در این خط‌مشی همان اثر تنظیم پرچم خط فرمان «--unsafely-treat-insecure-origin-as-secure» را بر فهرست همان نشانی‌های وب که با کاما جدا شده‌اند دارد. اگر خط‌مشی تنظیم شود، پرچم خط فرمان را لغو می‌کند.
-      برای اطلاعات بیشتر درباره بافت‌های ایمن، به https://www.w3.org/TR/secure-contexts/ بروید</translation>
 <translation id="890403179930035128">‏غلط‌گیر املای زبان‌ها را به‌صورت اجباری فعال می‌کند. زبان‌های شناسایی‌نشده موجود در این فهرست نادیده گرفته می‌شوند.
 
       اگر این خط‌مشی را فعال کنید، غلط‌گیر املا علاوه بر زبان‌هایی که کاربر غلط‌گیر املا را برایشان فعال کرده است برای زبان‌های مشخص‌شده فعال خواهد شد.
diff --git a/components/policy/resources/policy_templates_fi.xtb b/components/policy/resources/policy_templates_fi.xtb
index 081d85e..8a1ca68f 100644
--- a/components/policy/resources/policy_templates_fi.xtb
+++ b/components/policy/resources/policy_templates_fi.xtb
@@ -2708,11 +2708,6 @@
       Jos asetusta ei ole määritetty, käyttäjä voi itse päättää, haluaako käyttää toimintoa.</translation>
 <translation id="8870318296973696995">Etusivu</translation>
 <translation id="8882006618241293596">Estä <ph name="FLASH_PLUGIN_NAME" />-laajennus näillä sivustoilla.</translation>
-<translation id="8894962626537183708">
-      Käytäntö määrittelee ne alkuperät (URL-osoitteet), joita kohdellaan turvallisena kontekstina. Tällöin organisaatiot voivat määrittää valmistelupalvelimen sisäistä verkkokehitystä varten ja kehittäjät voivat testata turvallista kontekstia edellyttäviä ominaisuuksia ilman TLS:n käyttöä valmistelupalvelimella.
-      Kun URL-osoitteita määritetään tällä käytännöllä, tämä vastaa --unsafely-treat-insecure-origin-as-secure‑merkinnän antamista pilkuilla erotetuille osoitteille komentorivillä. Jos tämä käytäntö on määritetty, se ohittaa komentorivimerkinnän.
-      Lisätietoja turvallisista konteksteista on osoitteessa https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Pakottaa ottamaan oikeinkirjoituksen tarkistuskielet käyttöön. Jos luettelossa on tunnistamattomia kieliä, ne ohitetaan.
 
       Jos otat tämän käytännön käyttöön, oikeinkirjoitus voidaan tarkistaa määritetyillä kielillä käyttäjän valitsemien tarkistuskielten lisäksi.
diff --git a/components/policy/resources/policy_templates_fil.xtb b/components/policy/resources/policy_templates_fil.xtb
index d8d4a4c..851d55e 100644
--- a/components/policy/resources/policy_templates_fil.xtb
+++ b/components/policy/resources/policy_templates_fil.xtb
@@ -2822,11 +2822,6 @@
       Kung hahayaang hindi nakatakda ang setting na ito, maaaring magpasya ang user na gamitin ang function na ito o hindi.</translation>
 <translation id="8870318296973696995">Home page</translation>
 <translation id="8882006618241293596">I-block ang plugin na <ph name="FLASH_PLUGIN_NAME" /> sa mga site na ito</translation>
-<translation id="8894962626537183708">
-      Nagtatakda ang patakaran ng listahan ng mga pinagmulan (mga URL) na ituturing bilang secure na konteksto. Ang layunin ay payagan ang mga organisasyong mag-set up ng server ng pag-stage para sa mga internal na pag-develop sa web, nang sa gayon ay masubukan ng mga developer ng mga ito ang mga feature na nangangailangan ng secure na konteksto nang hindi kinakailangang i-deploy ang TLS sa server ng pag-stage.
-      Ang pagtatakda ng listahan ng mga URL sa patakarang ito ay may epektong katulad sa pagtatakda sa command-line flag na '--unsafely-treat-insecure-origin-as-secure' sa listahan ng mga parehong URL na pinaghihiwalay ng kuwit. Kung nakatakda ang patakaran, io-override nito ang command-line flag.
-      Para sa higit pang impormasyon tungkol sa mga secure na konteksto, tingnan ang https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Puwersahang ine-enable ang mga wika ng spellcheck. Babalewalain ang mga hindi kilalang wika sa listahang iyon.
 
       Kung ie-enable mo ang patakarang ito, mae-enable ang spellcheck para sa mga tinukoy na wika, bukod pa sa mga wikang kung saan na-enable ng user ang spellcheck.
diff --git a/components/policy/resources/policy_templates_fr.xtb b/components/policy/resources/policy_templates_fr.xtb
index 8998b12..22f9bb0 100644
--- a/components/policy/resources/policy_templates_fr.xtb
+++ b/components/policy/resources/policy_templates_fr.xtb
@@ -2851,11 +2851,6 @@
       Si ce paramètre n'est pas défini, l'utilisateur peut décider d'utiliser ou non cette fonction.</translation>
 <translation id="8870318296973696995">Page d'accueil</translation>
 <translation id="8882006618241293596">Bloquer le plug-in "<ph name="FLASH_PLUGIN_NAME" />" sur ces sites</translation>
-<translation id="8894962626537183708">
-      Cette règle répertorie les origines (URL) à considérer comme contexte sécurisé. L'objectif est de permettre aux organisations de configurer un serveur de test pour les développements Web internes. Cela permet aux développeurs de tester les fonctionnalités nécessitant des contextes sécurisés sans avoir à déployer TLS sur le serveur de test.
-      Définir une liste d'URL dans cette règle a le même effet qu'utiliser l'indicateur de ligne de commande "--unsafely-treat-insecure-origin-as-secure" avec une liste des URL en question séparées par une virgule. Si la règle est définie, elle remplace l'indicateur de ligne de commande.
-      Pour en savoir plus sur les contextes sécurisés, consultez https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Active de manière forcée les langues pour la vérification orthographique. Les langues non compatibles de cette liste seront ignorées.
 
       Si vous activez cette règle, la vérification orthographique sera activée pour les langues spécifiées, en plus des langues pour lesquelles l'utilisateur a activé la vérification orthographique.
diff --git a/components/policy/resources/policy_templates_gu.xtb b/components/policy/resources/policy_templates_gu.xtb
index 636e784..32077688 100644
--- a/components/policy/resources/policy_templates_gu.xtb
+++ b/components/policy/resources/policy_templates_gu.xtb
@@ -3161,11 +3161,6 @@
       જો આ સેટિંગને સેટ કર્યા વિના છોડેલી હોય, તો વપરાશકર્તા આ સુવિધાનો ઉપયોગ કરવો કે નહીં તે નક્કી કરી શકે છે.</translation>
 <translation id="8870318296973696995">હોમ પેજ</translation>
 <translation id="8882006618241293596">આ સાઇટ પર <ph name="FLASH_PLUGIN_NAME" /> પ્લગ-ઇન અવરોધિત કરો</translation>
-<translation id="8894962626537183708">
-      આ નીતિ સુરક્ષિત સંદર્ભ તરીકે ગણવા માટેના મૂળ (URLs)ની સૂચિ નક્કી કરે છે. આનો હેતુ સંસ્થાઓને આંતરિક વેબ વિકાસ માટે એક સ્ટેજિંગ સર્વર સેટ કરવાની મંજૂરી આપવાનો હોય છે, જેથી તેના ડેવલપર સ્ટેજિંગ સર્વર પર TLSનો ઉપયોગ કર્યા વિના સુરક્ષિત સંદર્ભોની જરૂરિયાતવાળી સુવિધાઓનું પરીક્ષણ કરી શકે.
-      આ નીતિમાં URLs સૂચિ સેટ કરવાનો પ્રભાવ પણ આદેશ-પંક્તિ ફ્લેગ '--unsafely-treat-insecure-origin-as-secure'ને સમાન URLsની અલ્પવિરામ દ્વારા અલગ કરેલ સૂચિ પર સેટ કરવા પર હોય તેવો જ હોય છે. જો નીતિ સેટ કરેલ હોય, તો તે આદેશ-પંક્તિ ફ્લેગને ઓવરરાઇડ કરશે.
-      સુરક્ષિત સંદર્ભો વિશે વધુ માહિતી માટે, https://www.w3.org/TR/secure-contexts/ જુઓ
-      </translation>
 <translation id="890403179930035128">ફરજપૂર્વક-ચાલુ થતી જોડણી-તપાસ ભાષાઓ. તે સૂચિ પરની વણઓળખાયેલ ભાષાઓને અવગણવામાં આવશે.
 
       જો તમે આ નીતિ ચાલુ કરો છો, તો વપરાશકર્તા એ જે ભાષાઓ માટે જોડણી-તપાસ ચાલુ કરેલ છે તે સિવાયની ભાષાઓ ઉપરાંત, જોડણી-તપાસને ઉલ્લેખિત ભાષાઓ માટે પણ ચાલુ કરવામાં આવશે.
diff --git a/components/policy/resources/policy_templates_hi.xtb b/components/policy/resources/policy_templates_hi.xtb
index b3717ca..c048b4a7 100644
--- a/components/policy/resources/policy_templates_hi.xtb
+++ b/components/policy/resources/policy_templates_hi.xtb
@@ -2839,11 +2839,6 @@
       अगर इस सेटिंग को सेट किए बिना छोड़ दिया जाता है तो, उपयोगकर्ता यह तय कर सकता है कि उसे इस सुविधा का इस्तेमाल करना है या नहीं.</translation>
 <translation id="8870318296973696995">मुख्यपृष्ठ</translation>
 <translation id="8882006618241293596">इन साइटों पर <ph name="FLASH_PLUGIN_NAME" /> प्लग इन ब्लॉक करें</translation>
-<translation id="8894962626537183708">
-      यह नीति शुरुआत की ऐसी जगहों (यूआरएल) की सूची तय करती है जिन्हें सुरक्षित संदर्भ माना जाएगा. इसका मकसद यह है कि आंतरिक वेब डेवलपमेंट के लिए संस्थान एक स्टेजिंग सर्वर सेट अप कर सकें ताकि उनके डेवलपर, स्टेजिंग सर्वर पर TLS लागू किए बिना सुरक्षित संदर्भों की ज़रूरत वाली सुविधाओं की जाँच कर सकें.
-      इस नीति में यूआरएल की सूची सेट करने का वही असर होगा जो कमांड-लाइन फ़्लैग '--unsafely-treat-insecure-origin-as-secure' को उन्हीं यूआरएल की किसी 'कॉमा-सेपरेटेड लिस्ट' पर सेट करने पर होता है. अगर नीति सेट की जाती है तो, वह कमांड-लाइन फ़्लैग को बदल देगी.
-      सुरक्षित संदर्भों पर ज़्यादा जानकारी के लिए, https://www.w3.org/TR/secure-contexts/ देखें
-      </translation>
 <translation id="890403179930035128">अलग-अलग भाषाओं के लिए वर्तनी जांच की सुविधा चालू करती है. सूची में शामिल जिन भाषाओं की पहचान नहीं हुई है, उन्हें अनदेखा कर दिया जाएगा.
 
       अगर यह नीति चालू की जाती है तो, जिन भाषाओं के लिए उपयोगकर्ता ने वर्तनी जांच की सुविधा चालू की है, उनके अलावा तय की गई भाषाओं के लिए भी वर्तनी जांच चालू हो जाएगी.
diff --git a/components/policy/resources/policy_templates_hr.xtb b/components/policy/resources/policy_templates_hr.xtb
index 92fa8c16..9e73bbf 100644
--- a/components/policy/resources/policy_templates_hr.xtb
+++ b/components/policy/resources/policy_templates_hr.xtb
@@ -2712,11 +2712,6 @@
       Ako ta postavka nije postavljena, korisnik može odlučiti hoće li upotrebljavati tu funkciju.</translation>
 <translation id="8870318296973696995">Početna stranica</translation>
 <translation id="8882006618241293596">Blokiraj dodatak <ph name="FLASH_PLUGIN_NAME" /> na ovim web-lokacijama</translation>
-<translation id="8894962626537183708">
-      Pravilo navodi popis izvora (URL-ova) koji će se tretirati kao siguran kontekst. Namjera je dopustiti organizacijama postavljanje poslužitelja u pokusne svrhe za interni razvoj na webu, tako da njihovi razvojni programeri mogu testirati naše značajke koje zahtijevaju siguran kontekst bez potrebe za implementacijom TLS-a na pokusnom poslužitelju.
-      Postavljanje popisa URL-ova u ovom pravilu ima isti učinak kao i postavljanje oznake naredbenog retka '--unsafely-treat-insecure-origin-as-secure' na popis odijeljen zarezima istih URL-ova. Ako je pravilo postavljeno, nadjačat će oznaku naredbenog retka.
-      Više informacija o sigurnim kontekstima potražite na https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Nameće provjeru pravopisa za jezike. Neprepoznati jezici na popisu zanemarit će se.
 
       Ako omogućite ovo pravilo, provjera pravopisa bit će omogućena za navedene jezike, kao i za jezike za koje je korisnik omogućio provjeru pravopisa.
diff --git a/components/policy/resources/policy_templates_hu.xtb b/components/policy/resources/policy_templates_hu.xtb
index 71b15102..a6ce8d9 100644
--- a/components/policy/resources/policy_templates_hu.xtb
+++ b/components/policy/resources/policy_templates_hu.xtb
@@ -2708,11 +2708,6 @@
       Ha nincs megadva ez a beállítás, a felhasználók dönthetik el, hogy szeretnék-e használni a funkciót.</translation>
 <translation id="8870318296973696995">Kezdőoldal</translation>
 <translation id="8882006618241293596">A(z) <ph name="FLASH_PLUGIN_NAME" /> beépülő modul letiltása ezeken a webhelyeken</translation>
-<translation id="8894962626537183708">
-      Ez a házirend megadja a biztonságos környezetként kezelendő eredetek (URL-ek) listáját. Célja, hogy a szervezetek tesztszervert tudjanak beállítani a belső webfejlesztési munkákhoz. Így a fejlesztők tesztelhetik a biztonságos környezetet igénylő funkciókat anélkül, hogy TLS-t kellene használniuk a tesztszerveren.
-      Ha beállítja az URL-ek listáját a házirendben, ugyanazt a hatást éri el, mintha a '--unsafely-treat-insecure-origin-as-secure' parancssori jelzőt használná ugyanazon URL-ek vesszővel elválasztott listájánál. Ha be van állítva a házirend, felülírja a parancssori jelzőt.
-      További információ a biztonságos környezetekről: https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Kényszeríti a helyesírás-ellenőrzéshez használt nyelvek engedélyezését. A rendszer figyelmen kívül hagyja a listában található, fel nem ismert nyelveket.
 
       Ha engedélyezi a házirendet, a felhasználó által engedélyezett nyelvek mellett a megadott nyelveknél is engedélyezve lesz a helyesírás-ellenőrző.
diff --git a/components/policy/resources/policy_templates_id.xtb b/components/policy/resources/policy_templates_id.xtb
index e698632..0057b94 100644
--- a/components/policy/resources/policy_templates_id.xtb
+++ b/components/policy/resources/policy_templates_id.xtb
@@ -2701,11 +2701,6 @@
       Jika setelan ini dibiarkan tidak disetel, pengguna dapat memutuskan untuk menggunakan fungsi ini atau tidak.</translation>
 <translation id="8870318296973696995">Beranda</translation>
 <translation id="8882006618241293596">Blokir plugin <ph name="FLASH_PLUGIN_NAME" /> di situs ini</translation>
-<translation id="8894962626537183708">
-      Kebijakan tersebut menentukan daftar asal (URL) yang akan diperlakukan sebagai konten aman. Tujuannya untuk mengizinkan organisasi menyiapkan server persiapan untuk pengembangan web internal, agar developer dapat menguji fitur yang memerlukan konteks aman tanpa harus menerapkan TLS di server persiapan.
-      Menyetel daftar URL di kebijakan ini memiliki efek yang sama seperti menyetel tanda baris perintah '--unsafely-treat-insecure-origin-as-secure' menjadi daftar yang dipisahkan koma yang berisi URL yang sama. Jika disetel, kebijakan tersebut akan mengganti tanda baris perintah.
-      Untuk informasi selengkapnya tentang konteks aman, lihat https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Mengaktifkan paksa fitur pemeriksa ejaan bahasa. Bahasa yang tidak dikenal dalam daftar akan diabaikan.
 
       Jika Anda mengaktifkan kebijakan ini, fitur pemeriksa ejaan akan diaktifkan untuk bahasa yang ditentukan, selain bahasa yang telah diaktifkan oleh pengguna.
diff --git a/components/policy/resources/policy_templates_it.xtb b/components/policy/resources/policy_templates_it.xtb
index a7696d6..11cd0df 100644
--- a/components/policy/resources/policy_templates_it.xtb
+++ b/components/policy/resources/policy_templates_it.xtb
@@ -2653,11 +2653,6 @@
       Se questa impostazione non viene configurata, gli utenti potranno decidere se utilizzare o meno questa funzione.</translation>
 <translation id="8870318296973696995">Pagina iniziale</translation>
 <translation id="8882006618241293596">Blocca il plug-in <ph name="FLASH_PLUGIN_NAME" /> su questi siti</translation>
-<translation id="8894962626537183708">
-      Questa norma consente di specificare un elenco di origini (URL) da considerare come contesto sicuro. Lo scopo è consentire alle organizzazioni di configurare un server di gestione temporanea per gli sviluppi web interni, affinché gli sviluppatori possano testare le funzioni che richiedono contesti sicuri senza dover implementare TLS sul server di gestione temporanea.
-      L'impostazione di un elenco di URL in questa norma ha lo stesso effetto dell'impostazione del flag della riga di comando "--unsafely-treat-insecure-origin-as-secure" su un elenco separato da virgole degli stessi URL. Se viene impostata, questa norma sostituisce il flag della riga di comando.
-      Per ulteriori informazioni sui contesti sicuri, visita il sito https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Consente di forzare l'attivazione delle lingue per il controllo ortografico. Le lingue non riconosciute dell'elenco verranno ignorate.
 
       Se questa norma viene attivata, il controllo ortografico verrà attivato per le lingue specificate, oltre che per le lingue per cui l'utente ha attivato il controllo ortografico.
diff --git a/components/policy/resources/policy_templates_iw.xtb b/components/policy/resources/policy_templates_iw.xtb
index e13cb66..45023a5 100644
--- a/components/policy/resources/policy_templates_iw.xtb
+++ b/components/policy/resources/policy_templates_iw.xtb
@@ -2704,11 +2704,6 @@
       אם לא תיבחר אפשרות בהגדרה זו, המשתמש יוכל להחליט בעצמו אם להשתמש בפונקציה הזו.</translation>
 <translation id="8870318296973696995">דף הבית</translation>
 <translation id="8882006618241293596">חוסמת את הפלאגין <ph name="FLASH_PLUGIN_NAME" /> באתרים האלה</translation>
-<translation id="8894962626537183708">‏
-      המדיניות הזו מגדירה רשימת מקורות (כתובות אתרים) שיש להתייחס אליהם כאל הקשר מאובטח. המטרה היא להתיר לארגונים להגדיר שרת ביניים לפיתוח אינטרנט פנימי כדי שהמפתחים יוכלו לבדוק תכונות שנחוץ להן הקשר מאובטח, ללא צורך בפריסה של TLS בשרת הביניים.
-      להגדרת רשימה של כתובות אתרים במדיניות הזו יש השפעה זהה לזו של הגדרת הסימון בשורת הפקודות '‎--unsafely-treat-insecure-origin-as-secure' כרשימה המופרדת בפסיקים שכוללת את אותן כתובות אתרים. אם המדיניות מוגדרת, היא תעקוף את הסימון בשורת הפקודות.
-      מידע נוסף על הקשרים מאובטחים זמין בכתובת https://www.w3.org/TR/secure-contexts/‎
-      </translation>
 <translation id="890403179930035128">‏מאלצת הפעלה של שפות בבדיקת האיות. שפות לא מוכרות ברשימה לא יובאו בחשבון.
 
       אם המדיניות הזו מופעלת, בדיקת האיות תופעל בשביל השפות שצוינו, בנוסף לשפות שעבורן המשתמש הפעיל בדיקת איות.
diff --git a/components/policy/resources/policy_templates_ja.xtb b/components/policy/resources/policy_templates_ja.xtb
index 4ccd86d..5a597ee2 100644
--- a/components/policy/resources/policy_templates_ja.xtb
+++ b/components/policy/resources/policy_templates_ja.xtb
@@ -2707,11 +2707,6 @@
       この設定を指定しない場合、ユーザーはこの機能を使用するかどうかを自分で指定できます。</translation>
 <translation id="8870318296973696995">ホームページ</translation>
 <translation id="8882006618241293596">これらのサイトで <ph name="FLASH_PLUGIN_NAME" /> プラグインをブロックする</translation>
-<translation id="8894962626537183708">
-      安全なコンテキストとして扱われる発行元(URL) のリストを指定します。このポリシーの目的は、組織で内部ウェブ開発用のステージング サーバーをセットアップできるようにすることです。この方法で、デベロッパーはステージング サーバーに TLS を実装しなくても、安全なコンテキストを必要とする機能をテストできます。
-      このポリシーで URL のリストを設定すると、コマンドライン フラグ「--unsafely-treat-insecure-origin-as-secure」で同じ URL をカンマ区切りリストで設定した場合と同じ効果が得られます。
-      安全なコンテキストについて詳しくは、https://www.w3.org/TR/secure-contexts/ をご覧ください。
-      </translation>
 <translation id="890403179930035128">言語のスペルチェックを強制的に有効にします。指定した言語のうち認識されないものは無視されます。
 
       このポリシーを有効にした場合は、ユーザーがスペルチェックを有効にしている言語に加え、指定した言語に対してスペルチェックが有効になります。
diff --git a/components/policy/resources/policy_templates_kn.xtb b/components/policy/resources/policy_templates_kn.xtb
index cf37a3d..8f3ed7cc 100644
--- a/components/policy/resources/policy_templates_kn.xtb
+++ b/components/policy/resources/policy_templates_kn.xtb
@@ -2940,11 +2940,6 @@
 ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಹೊಂದಿಸದೆ ಹಾಗೆಯೇ ಬಿಟ್ಟರೆ ಈ ಕಾರ್ಯವನ್ನು ಬಳಸಬೇಕೆ ಬೇಡವೇ ಎಂಬುದನ್ನು ಬಳಕೆದಾರರ ನಿರ್ಧರಿಸಬಹುದು.</translation>
 <translation id="8870318296973696995">ಮುಖ ಪುಟ</translation>
 <translation id="8882006618241293596">ಈ ಸೈಟ್‌ಗಳಲ್ಲಿ <ph name="FLASH_PLUGIN_NAME" /> ಪ್ಲಗ್‌ಇನ್ ನಿರ್ಬಂಧಿಸಿ</translation>
-<translation id="8894962626537183708">
-      ನೀತಿಯು ಸುರಕ್ಷಿತ ಸಂದರ್ಭವೆಂದು ಪರಿಗಣಿಸಲು ಮೂಲಗಳ (URL ಗಳು) ಪಟ್ಟಿಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಉದ್ದೇಶವು ಆಂತರಿಕ ವೆಬ್ ಅಭಿವೃದ್ಧಿಗೆ ವೇದಿಕಾ ಪರಿಚಾರಕವನ್ನು ಸ್ಥಾಪಿಸಲು ಅನುಮತಿಸುವುದು, ಆದ್ದರಿಂದ ಅವರ ಡೆವಲಪರ್‌ಗಳು ಸುರಕ್ಷಿತವಾದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅಗತ್ಯವಿರುವ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಪರೀಕ್ಷಿಸುವ ಸರ್ವರ್‌ನಲ್ಲಿ TLS ಅನ್ನು ನಿಯೋಜಿಸದೆಯೇ ಪರೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
-        ಈ ನೀತಿಯಲ್ಲಿರುವ URL ಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿಸುವುದರಿಂದ ಅದೇ URL ಗಳ ಕಾಮಾ-ಬೇರ್ಪಡಿಸಿದ ಪಟ್ಟಿಗೆ '--unsafely-treat-insecure-origin-as-secure'  ಅನ್ನು ಹೊಂದಿಸುವ ಅದೇ ಪರಿಣಾಮವೂ ಇದೆ. ನೀತಿಯನ್ನು ಹೊಂದಿಸಿದರೆ, ಇದು ಆಜ್ಞಾ-ಸಾಲಿನ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಅತಿಕ್ರಮಿಸುತ್ತದೆ.
-      ಸುರಕ್ಷಿತ ಸಂದರ್ಭಗಳ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, https://www.w3.org/TR/secure-contexts/ ಅನ್ನು ನೋಡಿ
-      </translation>
 <translation id="890403179930035128">ಭಾಷೆಗಳ ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಒತ್ತಾಯಿಸಿ. ಆ ಪಟ್ಟಿಯಲ್ಲಿರುವ ಗುರುತಿಸಲಾಗದ ಭಾಷೆಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ.
         ಈ ನೀತಿಯನ್ನು ನೀವು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಭಾಷೆಗೆ , ಹೆಚ್ಚುವರಿಯಾಗಿ ಕಾಗುಣಿತ ಪರೀಕ್ಷಕವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ ಭಾಷೆಗಳಿಗೆ ಸಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ.
 
diff --git a/components/policy/resources/policy_templates_ko.xtb b/components/policy/resources/policy_templates_ko.xtb
index 6f4f369..5b8c631 100644
--- a/components/policy/resources/policy_templates_ko.xtb
+++ b/components/policy/resources/policy_templates_ko.xtb
@@ -2825,11 +2825,6 @@
       이 정책을 설정하지 않는 경우 사용자가 이 기능의 사용 여부를 결정할 수 있습니다.</translation>
 <translation id="8870318296973696995">홈페이지</translation>
 <translation id="8882006618241293596">이 사이트에서 <ph name="FLASH_PLUGIN_NAME" /> 플러그인 차단</translation>
-<translation id="8894962626537183708">
-      이 정책에서는 안전한 컨텍스트로 처리될 출처(URL)의 목록을 지정합니다. 인텐트에서는 조직이 내부 웹 개발의 스테이징 서버를 설정하여 개발자가 스테이징 서버에서 TLS를 배포하지 않고도 안전한 컨텍스트에 필요한 기능을 테스트할 수 있게 허용합니다.
-      이 정책에서 URL 목록을 설정하면 같은 URL의 쉼표로 구분된 목록에 명령줄 플래그 '--unsafely-treat-insecure-origin-as-secure'를 설정하는 것과 같은 효과를 가집니다. 이 정책이 설정되면 명령줄 플래그를 재정의합니다.
-      안전한 컨텍스트에 관해 자세히 알아보려면 https://www.w3.org/TR/secure-contexts/를 참조하세요.
-      </translation>
 <translation id="890403179930035128">언어 맞춤법 검사를 강제 사용 설정합니다. 목록에서 인식할 수 없는 언어는 무시됩니다.
 
       이 정책을 사용 설정하면 사용자가 맞춤법 검사를 사용 설정한 언어 외에도 지정된 언어의 맞춤법 검사가 사용 설정됩니다.
diff --git a/components/policy/resources/policy_templates_lt.xtb b/components/policy/resources/policy_templates_lt.xtb
index ac0bb288..8337ef5 100644
--- a/components/policy/resources/policy_templates_lt.xtb
+++ b/components/policy/resources/policy_templates_lt.xtb
@@ -2835,11 +2835,6 @@
       Nenustačius šio nustatymo, naudotojas galės nuspręsti, ar naudoti šią funkciją.</translation>
 <translation id="8870318296973696995">Pagrindinis puslapis</translation>
 <translation id="8882006618241293596">Užblokuoti papildinį „<ph name="FLASH_PLUGIN_NAME" />“ šiose svetainėse</translation>
-<translation id="8894962626537183708">
-      Politika nurodo šaltinių (URL), kurie turi būti laikomi saugiu kontekstu, sąrašą. Siekiama leisti organizacijoms nustatyti darbinį serverį vidiniam žiniatinklio kūrimui, kad kūrėjai galėtų išbandyti funkcijas, kurioms reikia saugaus konteksto nepritaikant TLS darbiniame serveryje.
-      Šioje politikoje nustačius URL sąrašą poveikis toks pat, kaip nustačius komandinės eilutės žymą „--unsafely-treat-insecure-origin-as-secure“ į kableliais atskirtų URL sąrašą. Jei ši politika nustatyta, bus nepaisoma komandinės eilutės žymos.
-      Daugiau informacijos apie saugius kontekstus pateikiama adresu https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Priverstinai įgalinamos rašybos tikrinimo kalbos. Bus nepaisoma tame sąraše nurodytų neatpažintų kalbų.
 
       Jei įgalinsite šią politiką, be kalbų, kurių rašybos tikrinimą įgalino naudotojas, bus įgalintas nurodytų kalbų rašybos tikrinimas.
diff --git a/components/policy/resources/policy_templates_lv.xtb b/components/policy/resources/policy_templates_lv.xtb
index c8b0f80..8de4ccfc 100644
--- a/components/policy/resources/policy_templates_lv.xtb
+++ b/components/policy/resources/policy_templates_lv.xtb
@@ -2828,11 +2828,6 @@
       Ja šis iestatījums nav iestatīts, lietotājs var izlemt, vai izmantot šo funkciju.</translation>
 <translation id="8870318296973696995">Sākumlapa</translation>
 <translation id="8882006618241293596">Spraudņa <ph name="FLASH_PLUGIN_NAME" /> bloķēšana šajās vietnēs</translation>
-<translation id="8894962626537183708">
-      Šī politika nosaka tādu avotu (vietrāžu URL) sarakstu, kuri ir jāapstrādā kā drošs konteksts. Nolūks ir atļaut organizācijām iestatīt izstādīšanas serveri iekšējai tīmekļa izstrādei, lai organizācijas izstrādātāji var izmēģināt funkcijas, kuru darbībai nepieciešams drošs konteksts, izvairoties no TLS izmantošanas izstādīšanas serveros.
-      Politikas URL saraksta noteikšanai ir tāds pats rezultāts kā komandrindas atzīmes “--unsafely-treat-insecure-origin-as-secure” mainīšanai uz komatatdalītu sarakstu, kurā ietverti tie paši URL. Ja politika ir iestatīta, tā ignorēs komandrindas atzīmi.
-      Plašāku informāciju par drošu kontekstu skatiet vietnē https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Piespiedu kārtā iespējo pareizrakstības pārbaudes valodas. Tiks ignorētas sarakstā iekļautās valodas, kuras nevarēs atpazīt.
       Ja iespējosiet šo politiku, pareizrakstības pārbaude tiks iespējota gan norādītajās valodās, gan tajās valodās, kurām lietotājs ir iespējojis pareizrakstības pārbaudi.
 
diff --git a/components/policy/resources/policy_templates_ml.xtb b/components/policy/resources/policy_templates_ml.xtb
index e7403b79..7f80d63a 100644
--- a/components/policy/resources/policy_templates_ml.xtb
+++ b/components/policy/resources/policy_templates_ml.xtb
@@ -3152,11 +3152,6 @@
       ഈ ക്രമീകരണം സജ്ജീകരിക്കാത്ത നിലയിലാണെങ്കിൽ ഉപയോക്താവിന് ഈ സംവിധാനം ഉപയോഗിക്കണോ വേണ്ടയോ എന്ന് തീരുമാനിക്കാൻ കഴിയും.</translation>
 <translation id="8870318296973696995">ഹോം പേജ്</translation>
 <translation id="8882006618241293596">ഈ സൈറ്റുകളിൽ <ph name="FLASH_PLUGIN_NAME" /> പ്ലഗിൻ ബ്ലോക്കുചെയ്യുക</translation>
-<translation id="8894962626537183708">
-      സുരക്ഷിത സന്ദർഭങ്ങളായി പരിഗണിക്കാവുന്ന ഉത്ഭവങ്ങളുടെ (URL-കൾ) ഒരു ലിസ്‌റ്റ് നയം നിർദ്ദേശിക്കുന്നു. ഇന്‍റേണൽ വെബ് ഡെവലപ്പ്മെന്‍റുകൾക്കായി സ്‌റ്റേജിംഗ് സെർവർ സജ്ജീകരിക്കാൻ സ്ഥാപനങ്ങളെ അനുവദിക്കുക എന്നതാണ് ഉദ്ദേശ്യം, ഇതുവഴി, സുരക്ഷിത സന്ദർഭങ്ങൾ ആവശ്യമായ ഫീച്ചറുകളെ, സ്റ്റേജിംഗ് സെർവറിൽ TLS വിന്യസിക്കേണ്ടതിന്‍റെ ആവശ്യകതയില്ലാതെ ടെസ്റ്റ് ചെയ്യാൻ സ്ഥാപനങ്ങളുടെ ഡെവലപ്പർമാർക്കാകും.
-      ഈ നയത്തിൽ URL-കളുടെ ഒരു ലിസ്റ്റ് സജ്ജമാക്കുന്നത്, അതേ URL-കളുടെ കോമ കൊണ്ട് വേർതിരിച്ചിട്ടുള്ള ഒരു ലിസ്റ്റിലേക്ക് '--unsafely-treat-insecure-origin-as-secure' എന്ന കമാൻഡ്-ലൈൻ ഫ്ലാഗ് സജ്ജമാക്കുന്നതിന് തുല്യമാണ്. നയം സജ്ജമാക്കിയിട്ടുണ്ടെങ്കിൽ, കമാൻഡ്-ലൈൻ ഫ്ലാഗിനെ ഈ നയം അസാധുവാക്കും.
-      സുരക്ഷിത സന്ദർഭങ്ങളെ കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക് https://www.w3.org/TR/secure-contexts/ കാണുക
-      </translation>
 <translation id="890403179930035128">ഭാഷകളുടെ അക്ഷരപ്പിശക് പരിശോധന നിർവന്ധിച്ച് പ്രവർത്തനക്ഷമമാക്കുന്നു. ലിസ്റ്റിലെ തിരിച്ചറിയാനാകാത്ത ഭാഷകൾ അവഗണിക്കപ്പെടും.
 
       നിങ്ങൾ ഈ നയം പ്രവർത്തനക്ഷമമാക്കുന്നുവെങ്കിൽ, ഉപയോക്താവ് അക്ഷരപ്പിശക് പരിശോധന പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ള ഭാഷകൾക്ക് പുറമെ, വ്യക്തമാക്കിയിട്ടുള്ള ഭാഷകൾക്കായും അക്ഷരപ്പിശക് പരിശോധന പ്രവർത്തനക്ഷമമാക്കപ്പെടും
diff --git a/components/policy/resources/policy_templates_mr.xtb b/components/policy/resources/policy_templates_mr.xtb
index be0d8c3..7613dbc 100644
--- a/components/policy/resources/policy_templates_mr.xtb
+++ b/components/policy/resources/policy_templates_mr.xtb
@@ -3098,11 +3098,6 @@
       हे सेटिंग सेट न केरता सोडल्यास वापरकर्ता हे कार्य वापरायचे की नाही हे ठरवू शकतो.</translation>
 <translation id="8870318296973696995">मुख्यपृष्ठ</translation>
 <translation id="8882006618241293596">या साइटवर <ph name="FLASH_PLUGIN_NAME" /> प्लगइन ब्लॉक करा</translation>
-<translation id="8894962626537183708">
-      हे धोरण सुरक्षित संदर्भ म्हणून मानल्या जाणाऱ्या मूळ (URL) ची सूची निर्दिष्ट करते. याचा उद्देश संघटनांना अंतर्गत वेब डेव्हलपमेंटसाठी स्टेजिंग सर्व्हर सेट करण्याची अनुमती देणे हा आहे, जेणेकरून त्‍यांचे विकासक स्‍टेजिंग सर्व्‍हरवर TLS चे उपयोजन न करता सुरक्षित संदर्भांना आवश्‍यक वैशिष्‍ट्यांची चाचणी करू शकतील.
-      या धोरणामध्‍ये URL ची सूची सेट करणे हे त्‍याच URL च्‍या कॉमो सेपरेटेड सूचीवर कमांड-लाइन फ्लॅग '--असुरक्षित मूळ URL ला असुरक्षितरीत्‍या सु‍रक्षित समजणे' सेट करण्‍याइतकेच प्रभावी आहे. धोरण सेट केलेले असल्‍यास, कमांड-लाइन फ्लॅग ओव्‍हरराइड होईल.
-      सुरक्षित संदर्भांच्‍या अधिक माहितीसाठी, https://www.w3.org/TR/secure-contexts/ पहा
-      </translation>
 <translation id="890403179930035128">शब्‍दलेखन भाषा जाणीवपूर्वक चालू करा. त्‍या सूचीतील न ओेळखलेल्‍या भाषांकडे दुर्लक्ष केले जाईल.
 
       तुम्‍ही हे धोरण चालू केले असल्‍यास, वापरकर्त्‍याने शब्‍दलेखन चालू केलेल भाषांखेरीज निर्दिष्‍ट केलेल्‍या भाषेसाठी शब्‍दलेखन चालू केले जाईल.
diff --git a/components/policy/resources/policy_templates_ms.xtb b/components/policy/resources/policy_templates_ms.xtb
index 2f0b8747..7b412ab 100644
--- a/components/policy/resources/policy_templates_ms.xtb
+++ b/components/policy/resources/policy_templates_ms.xtb
@@ -2832,11 +2832,6 @@
       Jika tetapan ini dibiarkan tanpa ditetapkan, pengguna boleh menentukan sama ada hendak menggunakan fungsi ini atau tidak.</translation>
 <translation id="8870318296973696995">Halaman utama</translation>
 <translation id="8882006618241293596">Sekat pemalam <ph name="FLASH_PLUGIN_NAME" /> pada tapak ini</translation>
-<translation id="8894962626537183708">
-      Dasar ini menentukan senarai asal (URL) yang perlu dikendalikan sebagai konteks selamat. Tujuannya adalah untuk membenarkan organisasi menyediakan pelayan pemeringkatan untuk pembangunan web dalaman supaya pembangun mereka boleh menguji ciri-ciri yang memerlukan konteks selamat tanpa perlu menggunakan TLS pada pelayan pemeringkatan.
-      Proses penetapan senarai URL dalam dasar ini mempunyai kesan yang sama seperti menetapkan bendera baris perintah '--unsafely-treat-insecure-origin-as-secure' kepada senarai yang dipisahkan koma bagi URL yang sama. Jika dasar ditetapkan, dasar ini akan mengatasi bendera baris perintah.
-      Untuk mendapatkan maklumat lanjut tentang konteks selamat, lihat https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Paksa dayakan bahasa semakan ejaan. Bahasa yang tidak dikenali dalam senarai itu akan diabaikan.
 
       Jika anda mendayakan dasar ini, semakan ejaan akan didayakan untuk bahasa yang dinyatakan, sebagai tambahan kepada bahasa yang telah didayakan semakan ejaan oleh pengguna.
diff --git a/components/policy/resources/policy_templates_nl.xtb b/components/policy/resources/policy_templates_nl.xtb
index f15dc192..a4b720a 100644
--- a/components/policy/resources/policy_templates_nl.xtb
+++ b/components/policy/resources/policy_templates_nl.xtb
@@ -2804,11 +2804,6 @@
       Als je deze instelling niet instelt, kan de gebruiker ervoor kiezen deze functie wel of niet te gebruiken.</translation>
 <translation id="8870318296973696995">Homepage</translation>
 <translation id="8882006618241293596">De <ph name="FLASH_PLUGIN_NAME" />-plug-in blokkeren op deze sites</translation>
-<translation id="8894962626537183708">
-      Dit beleid bevat een lijst met beginpunten (URL's) die moeten worden behandeld als beveiligde context. Het is de bedoeling dat organisaties hiermee een staging-server kunnen instellen voor interne webontwikkelingen, zodat hun ontwikkelaars functies kunnen testen die een beveiligde context vereisen, zonder dat ze TLS op de staging-server hoeven te implementeren.
-      Wanneer er een lijst met URL's wordt ingesteld in dit beleid, heeft dit hetzelfde effect als wanneer de opdrachtregelmarkering '--unsafely-treat-insecure-origin-as-secure' wordt ingesteld voor een door komma's gescheiden lijst met dezelfde URL's. Als het beleid is ingesteld, wordt de opdrachtregelmarkering overschreven.
-      Ga naar https://www.w3.org/TR/secure-contexts/ voor meer informatie over beveiligde contexten.
-      </translation>
 <translation id="890403179930035128">De spellingcontrole van talen wordt afgedwongen. Niet-herkende talen in de lijst worden genegeerd.
 
       Als je dit beleid inschakelt, wordt de spellingcontrole ingeschakeld voor de opgegeven talen, naast de talen waarvoor de gebruiker de spellingcontrole heeft ingeschakeld.
diff --git a/components/policy/resources/policy_templates_no.xtb b/components/policy/resources/policy_templates_no.xtb
index 371bfc7..c9039e8 100644
--- a/components/policy/resources/policy_templates_no.xtb
+++ b/components/policy/resources/policy_templates_no.xtb
@@ -2782,11 +2782,6 @@
       Hvis denne innstillingen ikke angis, kan brukeren velge å bruke denne funksjonen eller ikke.</translation>
 <translation id="8870318296973696995">Startside</translation>
 <translation id="8882006618241293596">Blokkér <ph name="FLASH_PLUGIN_NAME" />-programtillegget på disse nettstedene</translation>
-<translation id="8894962626537183708">
-      Regelen spesifiserer en liste over opprinnelser (nettadresser) som skal behandles som sikker kontekst. Hensikten er å la organisasjoner konfigurere en testtjener for intern nettutvikling, slik at utviklerne deres kan teste funksjoner som krever sikker kontekst, uten å måtte implementere TLS på testtjeneren.
-      Angivelse av en liste over nettadresser i denne regelen har samme effekt som å angi kommandolinjeflagget «--unsafely-treat-insecure-origin-as-secure» i en kommadelt liste over de samme nettadressene. Hvis regelen angis, overstyrer den kommandolinjeflagget.
-      Hvis du vil ha mer informasjon om sikker kontekst, kan du gå til https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Tvinger aktivering av språk med stavekontroll. Språk som ikke gjenkjennes i listen, blir ignorert.
 
       Hvis du aktiverer denne regelen, aktiveres stavekontroll for de spesifiserte språkene, i tillegg til språkene brukeren har aktivert stavekontroll for.
diff --git a/components/policy/resources/policy_templates_pl.xtb b/components/policy/resources/policy_templates_pl.xtb
index f320146..23e3e1f 100644
--- a/components/policy/resources/policy_templates_pl.xtb
+++ b/components/policy/resources/policy_templates_pl.xtb
@@ -2699,11 +2699,6 @@
       Jeśli ustawienie pozostanie nieskonfigurowane, użytkownik może sam zdecydować, czy będzie korzystać z tej funkcji.</translation>
 <translation id="8870318296973696995">Strona startowa</translation>
 <translation id="8882006618241293596">Blokuj uruchamianie wtyczki <ph name="FLASH_PLUGIN_NAME" /> w tych witrynach</translation>
-<translation id="8894962626537183708">
-      Ta zasada określa listę źródeł (adresów URL), które będą traktowane jako bezpieczny kontekst. Dzięki temu organizacje mogą skonfigurować wewnętrzny serwer do testowania własnych stron internetowych, a programiści mają możliwość testowania funkcji, które wymagają bezpiecznego kontekstu, bez wdrażania zabezpieczeń TLS na serwerze testowym.
-      Określenie listy adresów URL w tej zasadzie działa tak samo jak flaga wiersza poleceń „--unsafely-treat-insecure-origin-as-secure” na oddzielonej przecinkami liście zawierającej te same adresy URL. Ta zasada zastępuje flagę wiersza poleceń, jeśli jest skonfigurowana.
-      Więcej informacji o bezpiecznym kontekście znajdziesz na stronie https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Wymusza włączenie sprawdzania pisowni. Nierozpoznane języki z tej listy będą ignorowane.
 
       Jeśli ta zasada jest włączona, sprawdzanie pisowni będzie dostępne także dla wskazanych języków, a nie tylko dla tych, dla których funkcję tę włączył użytkownik.
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index d08b571..b66ac33f 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -2694,11 +2694,6 @@
       Se esta configuração for deixada sem definição, o usuário poderá optar por utilizar esta função ou não.</translation>
 <translation id="8870318296973696995">Página inicial</translation>
 <translation id="8882006618241293596">Bloquear o plug-in <ph name="FLASH_PLUGIN_NAME" /> nestes sites</translation>
-<translation id="8894962626537183708">
-      A política especifica a lista de origens (URLs) que devem ser tratadas como um contexto seguro. O objetivo é permitir que organizações possam configurar um servidor temporário para desenvolvimentos de Web internos para que os desenvolvedores deles possam testar recursos que exijam contextos seguros sem precisar implantar TLS no servidor temporário.
-      A definição de uma lista de URLs nesta política tem o mesmo efeito que configurar a sinalização de linha de comando "--unsafely-treat-insecure-origin-as-secure" para uma lista dos mesmos URLs separados por vírgulas. Se a política for definida, ela terá prioridade em relação à sinalização de linha de comando.
-      Para ver mais informações sobre contextos seguros, consulte https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Força a ativação da correção ortográfica de idiomas. Idiomas não reconhecidos nessa lista serão ignorados.
 
       Se você ativar esta política, a correção ortográfica será ativada para os idiomas especificados, além dos idiomas para os quais o usuário ativou a correção ortográfica.
diff --git a/components/policy/resources/policy_templates_pt-PT.xtb b/components/policy/resources/policy_templates_pt-PT.xtb
index 99f7437..f8da7ead 100644
--- a/components/policy/resources/policy_templates_pt-PT.xtb
+++ b/components/policy/resources/policy_templates_pt-PT.xtb
@@ -2722,11 +2722,6 @@
       Se deixar esta definição por definir, o utilizador pode optar por utilizar ou não esta função.</translation>
 <translation id="8870318296973696995">Página inicial</translation>
 <translation id="8882006618241293596">Bloquear o plug-in <ph name="FLASH_PLUGIN_NAME" /> nestes sites</translation>
-<translation id="8894962626537183708">
-      A política especifica uma lista de origens (URLs) que devem ser tratadas como contexto seguro. A intenção é permitir que as entidades configurem um servidor experimental para programações Web internas para que os respetivos programadores possam testar as funcionalidades que necessitam de contextos seguros sem terem de implementar o TLS no servidor experimental.
-      Definir uma lista de URLs nesta política tem o mesmo efeito que definir o sinalizador de linha de comandos "--unsafely-treat-insecure-origin-as-secure" numa lista separada por vírgulas dos mesmos URLs Se a política estiver definida, substitui o sinalizador de linha de comandos.
-      Para mais informações acerca de contextos seguros, consulte https://www.w3.org/TR/secure-contexts/.
-      </translation>
 <translation id="890403179930035128">Força a ativação de idiomas com verificação ortográfica. Os idiomas não reconhecidos dessa lista são ignorados.
 
       Se ativar esta política, a verificação ortográfica é ativada para os idiomas especificados, além dos idiomas para os quais o utilizador tenha ativado a verificação ortográfica.
diff --git a/components/policy/resources/policy_templates_ro.xtb b/components/policy/resources/policy_templates_ro.xtb
index 278648c7..7a6938be 100644
--- a/components/policy/resources/policy_templates_ro.xtb
+++ b/components/policy/resources/policy_templates_ro.xtb
@@ -2723,11 +2723,6 @@
       Dacă această setare este lăsată nesetată, utilizatorul poate decide dacă folosește sau nu această funcție.</translation>
 <translation id="8870318296973696995">Pagina de pornire</translation>
 <translation id="8882006618241293596">Blochează plunginul <ph name="FLASH_PLUGIN_NAME" /> pe aceste site-uri</translation>
-<translation id="8894962626537183708">
-      Politica specifică o listă de origini (adrese URL) care trebuie tratate drept context securizat. Scopul este să permită organizațiilor să configureze un server de simulare pentru dezvoltarea web internă, astfel încât dezvoltatorii lor să testeze funcții care necesită contexte sigure fără a trebui să implementeze TLS pe serverul de simulare.
-      Configurarea unei liste de adrese URL în această politică are același efect precum configurarea semnalizatorului de linie de comandă „--unsafely-treat-insecure-origin-as-secure” într-o listă cu aceleași adrese URL separate prin virgulă. Dacă politica este activată, ea va anula semnalizatorul de linie de comandă.
-      Pentru mai multe informații despre contextele securizate, accesează https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Forțează activarea verificării ortografice pentru limbi. Limbile nerecunoscute din listă vor fi ignorate.
 
       Dacă activezi această politică, verificarea ortografică va fi activată pentru limbile specificate, pe lângă limbile pentru care utilizatorul a activat verificarea ortografică.
diff --git a/components/policy/resources/policy_templates_ru.xtb b/components/policy/resources/policy_templates_ru.xtb
index e979a744..31bc32d 100644
--- a/components/policy/resources/policy_templates_ru.xtb
+++ b/components/policy/resources/policy_templates_ru.xtb
@@ -2682,11 +2682,6 @@
       Если она не задана, пользователи смогут самостоятельно решать, включать ли функцию перевода.</translation>
 <translation id="8870318296973696995">Главная страница</translation>
 <translation id="8882006618241293596">Заблокировать плагин <ph name="FLASH_PLUGIN_NAME" /> на этих сайтах</translation>
-<translation id="8894962626537183708">
-      Позволяет указать список URL-адресов, которые будут считаться безопасными. Дает организациям возможность настроить вспомогательный сервер для внутренней веб-разработки и тестировать функции, требующие безопасного контекста, без развертывания TLS.
-      Правило аналогично параметру командной строки --unsafely-treat-insecure-origin-as-secure со списком URL, разделенных запятыми. Если правило настроено, оно переопределяет значение этого параметра.
-      Подробную информацию о безопасном контексте можно найти на странице https://www.w3.org/TR/secure-contexts.
-      </translation>
 <translation id="890403179930035128">Позволяет указать языки, для которых нужно включить принудительную проверку правописания. Неподдерживаемые языки будут игнорироваться.
 
       Если вы включите правило, проверка правописания будет выполняться для языков, выбранных и пользователем, и вами.
diff --git a/components/policy/resources/policy_templates_sk.xtb b/components/policy/resources/policy_templates_sk.xtb
index bef7cb9..59021c0 100644
--- a/components/policy/resources/policy_templates_sk.xtb
+++ b/components/policy/resources/policy_templates_sk.xtb
@@ -2803,11 +2803,6 @@
       Ak je toto nastavenie ponechané nenastavené, používateľ sa môže rozhodnúť, či chce túto funkciu použiť.</translation>
 <translation id="8870318296973696995">Domovská stránka</translation>
 <translation id="8882006618241293596">Blokovať doplnok <ph name="FLASH_PLUGIN_NAME" /> na týchto weboch</translation>
-<translation id="8894962626537183708">
-      Toto pravidlo umožňuje určiť zoznam zdrojov (webových adries), ktoré sa majú považovať za zabezpečený kontext. Cieľom je povoliť organizáciám nastaviť pracovný server na interný vývoj webu, aby ich vývojári mohli testovať funkcie vyžadujúce zabezpečené kontexty bez nutnosti nasadenia protokolu TLS na pracovnom serveri.
-      Nastavenie zoznamu webových adries v rámci tohto pravidla má rovnaký účinok ako nastavenie príznaku príkazového riadka --unsafely-treat-insecure-origin-as-secure do zoznamu rovnakých webových adries oddelených čiarkou. Ak toto pravidlo nastavíte, prepíše príznak príkazového riadka.
-      Ďalšie informácie o zabezpečených kontextoch nájdete na adrese https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Vynucuje povolenie jazykov kontroly pravopisu. Nerozpoznané jazyky sa budú v danom zozname ignorovať.
 
       Ak toto pravidlo povolíte, kontrola pravopisu sa povolí nielen pre jazyky, ktoré nastavil používateľ, ale aj pre tieto špecifikované jazyky.
diff --git a/components/policy/resources/policy_templates_sl.xtb b/components/policy/resources/policy_templates_sl.xtb
index 3dc78c5..a5e8c22 100644
--- a/components/policy/resources/policy_templates_sl.xtb
+++ b/components/policy/resources/policy_templates_sl.xtb
@@ -2839,11 +2839,6 @@
       Če te nastavitve ne določite, se lahko uporabnik odloči, ali bo uporabljal to funkcijo.</translation>
 <translation id="8870318296973696995">Domača stran</translation>
 <translation id="8882006618241293596">Blokiraj vtičnik <ph name="FLASH_PLUGIN_NAME" /> na teh spletnih mestih</translation>
-<translation id="8894962626537183708">
-      Pravilnik določa seznam izvorov (URL-jev), ki se obravnavajo kot varni kontekst. Namen tega je omogočiti organizacijam nastavitev preskusnega produkcijskega strežnika za notranje spletno razvijanje, tako da lahko razvijalci preskušajo funkcije, ki zahtevajo varne kontekste, ne da bi bilo treba uvesti TLS v preskusnem produkcijskem strežniku.
-      Nastavitev seznama URL-jev v tem pravilniku ima enak učinek kot nastavitev zastavice ukazne vrstice »--unsafely-treat-insecure-origin-as-secure« na seznamu, ločenemu z vejicami istih URL-jev. Če je pravilnik nastavljen, preglasi zastavico ukazne vrstice.
-      Več informacij o varnih kontekstih je na voljo na https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Vsili preverjanja črkovanja jezikov. Neprepoznani jeziki na tem seznamu so prezrti.
 
       Če omogočite ta pravilnik, je preverjanje črkovanja omogočeno za navedene jezike poleg jezikov, za katere je uporabnik omogočil preverjanje črkovanja.
diff --git a/components/policy/resources/policy_templates_sr.xtb b/components/policy/resources/policy_templates_sr.xtb
index e349245..5aa326e6 100644
--- a/components/policy/resources/policy_templates_sr.xtb
+++ b/components/policy/resources/policy_templates_sr.xtb
@@ -2831,11 +2831,6 @@
       Ако не поставите ово подешавање, корисници могу да одлуче да ли ће користити ову функцију.</translation>
 <translation id="8870318296973696995">Почетна страница</translation>
 <translation id="8882006618241293596">Блокира додатну компоненту <ph name="FLASH_PLUGIN_NAME" /> на овим сајтовима</translation>
-<translation id="8894962626537183708">
-      Ове смернице наводе листу извора (URL-ове) који се сматрају безбедним контекстом. Њихов циљ је да дозволе организацијама да подесе сервер за тестирање за интерно веб-програмирање како би њихови програмери могли да тестирају функције које захтевају безбедне контексте, а да не морају да примењују TLS на серверу за тестирање.
-      Подешавање листе URL-ова у овим смерницама има исти ефекат као подешавање обележја командне линије „--unsafely-treat-insecure-origin-as-secure“ на листу истих URL-ова раздвојених зарезима. Ако подесите смернице, оне замењују обележје командне линије.
-      Више информација о безбедним контекстима потражите на https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Принудно омогућавају језике за проверу правописа. Непознати језици са те листе ће бити игнорисани.
 
       Ако омогућите ове смернице, провера правописа ће бити омогућена за наведене језике поред језика за које је корисник омогућио проверу правописа.
diff --git a/components/policy/resources/policy_templates_sv.xtb b/components/policy/resources/policy_templates_sv.xtb
index f3ba1b4..606aea1 100644
--- a/components/policy/resources/policy_templates_sv.xtb
+++ b/components/policy/resources/policy_templates_sv.xtb
@@ -2835,11 +2835,6 @@
       Om du inte anger inställningen kan användarna välja om de vill använda funktionen eller inte.</translation>
 <translation id="8870318296973696995">Startsida</translation>
 <translation id="8882006618241293596">Blockera pluginprogrammet för <ph name="FLASH_PLUGIN_NAME" /> på dessa webbplatser</translation>
-<translation id="8894962626537183708">
-      I den här principen anges en lista med ursprung (webbadresser) som ska behandlas som säker kontext. Syftet är att tillåta organisationer att använda en prövkörningsserver för intern webbutveckling där utvecklarna kan testa funktioner som kräver säker kontext utan att behöva använda TLS på testservern.
-      Att ange en lista med webbadresser i den här principen fungerar på samma sätt som om man använder kommandoradsflaggan --unsafely-treat-insecure-origin-as-secure med webbadresserna ifråga i en kommaavgränsad lista. Om principen har ställts in åsidosätts kommandoradsflaggan.
-      Mer information om säker kontext finns på https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Aktivera alltid språk för stavningskontroll. Okända språk i listan ignoreras.
 
       När principen är aktiverad aktiveras stavningskontroll på de angivna språken, utöver de språk som användaren har aktiverat stavningskontroll på.
diff --git a/components/policy/resources/policy_templates_sw.xtb b/components/policy/resources/policy_templates_sw.xtb
index f606179e..30c691f 100644
--- a/components/policy/resources/policy_templates_sw.xtb
+++ b/components/policy/resources/policy_templates_sw.xtb
@@ -2784,11 +2784,6 @@
       Kama mipangilio hii haitawekwa, mtumiaji anaweza kuamua kutumia kipengele hiki au asikitumie.</translation>
 <translation id="8870318296973696995">Ukurasa wa Kwanza</translation>
 <translation id="8882006618241293596">Zuia programu-jalizi ya <ph name="FLASH_PLUGIN_NAME" /> kwenye tovuti hizi</translation>
-<translation id="8894962626537183708">
-      Sera hii hutaja orodha ya vyanzo (URL) vitakavyotumiwa kama muktadha salama. Lengo lake ni kuruhusu mashirika kuweka seva ya kuanzisha usanidi wa ndani wa wavuti, ili wasanidi programu wake waweze kujaribu vipengele vinavyohitaji muktadha salama bila kutakiwa kutumia TLS kwenye seva ya kuanzisha usanidi.
-     Kuweka orodha ya URL katika sera hii kuna athari sawa na kuweka mipangilio kupitia sehemu ya amri  ya '--unsafely-treat-insecure-origin-as-secure' kwenye orodha ya kando ya URL sawa iliyotenganishwa kwa koma. Kama sera hii imewekwa, itabatilisha sehemu ya amri.
-    Kwa maelezo zaidi kuhusu miktadha salama, angalia https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Lazimisha kuwasha kikagua tahajia cha lugha. Lugha ambazo hazitambuliki katika orodha hii hazitakaguliwa.
 
       Kama utawasha sera hii, kikagua tahajia kitawashwa kwa lugha zilizobainishwa, mbali na lugha ambazo mtumiaji amewasha ukaguaji tahajia.  
diff --git a/components/policy/resources/policy_templates_ta.xtb b/components/policy/resources/policy_templates_ta.xtb
index f440f196..b876e04f7 100644
--- a/components/policy/resources/policy_templates_ta.xtb
+++ b/components/policy/resources/policy_templates_ta.xtb
@@ -2678,11 +2678,6 @@
       இந்தக் கொள்கையை அமைக்கவில்லை எனில், இந்தச் செயல்பாட்டைப் பயன்படுத்தலாமா அல்லது வேண்டாமா என்பதை பயனர் தீர்மானிக்கலாம்.</translation>
 <translation id="8870318296973696995">முகப்புப் பக்கம்</translation>
 <translation id="8882006618241293596">இந்தத் தளங்களில் <ph name="FLASH_PLUGIN_NAME" /> செருகுநிரலைத் தடு</translation>
-<translation id="8894962626537183708">
-      கொள்கையானது பாதுகாப்பான சூழல் எனக் கருதக்கூடிய மூலங்களின் பட்டியலைக் (URLகள்) குறிப்பிடுகிறது. அக இணைய உருவாக்கத்திற்காக, சோதனைச் சேவையகத்தை அமைக்க நிறுவனங்களை அனுமதிப்பதே இதன் நோக்கமாகும், இதன் மூலம் அவற்றின் டெவெலப்பர்கள், சோதனைச் சேவையகத்தில் TLSஐப் பயன்படுத்தாமல் பாதுகாப்பான சூழல்கள் தேவைப்படும் அம்சங்களைச் சோதிக்க முடியும்.
-      இந்தக் கொள்கையில் URLகளின் பட்டியலை அமைப்பது, காற்புள்ளியால் பிரிக்கப்பட்ட ஒரே URLகளின் பட்டியலுக்கு, '--unsafely-treat-insecure-origin-as-secure' எனும் கட்டளை வரிக் கொடியை அமைப்பதால் கிடைக்கும் அதே விளைவைக் கொண்டிருக்கும்.
-      பாதுகாப்பான சூழல்கள் குறித்த கூடுதல் தகவலுக்கு, இந்த இணைப்பைப் பார்க்கவும்: https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">மொழிகளுக்கான எழுத்துச்சரிபார்ப்பைக் கட்டாயப்படுத்தி இயக்கும். அந்தப் பட்டியலில் உள்ள தெரியாத மொழிகள் புறக்கணிக்கப்படும்.
 
       இந்தக் கொள்கையை இயக்கினால், பயனர் எழுத்துச்சரிபார்ப்பை இயக்கியுள்ள மொழிகளுடன் சேர்த்து, குறிப்பிட்டுள்ள மொழிகளுக்கும் எழுத்துச்சரிபார்ப்பு இயக்கப்படும்.
diff --git a/components/policy/resources/policy_templates_te.xtb b/components/policy/resources/policy_templates_te.xtb
index dc1302f..2174ed11 100644
--- a/components/policy/resources/policy_templates_te.xtb
+++ b/components/policy/resources/policy_templates_te.xtb
@@ -3051,11 +3051,6 @@
       ఈ సెట్టింగ్‌ని సెట్ చేయకుండా వదిలేస్తే, ఈ ఫంక్షన్‌ని ఉపయోగించాలో లేదో వినియోగదారు నిర్ణయించగలరు.</translation>
 <translation id="8870318296973696995">హోమ్ పేజీ</translation>
 <translation id="8882006618241293596">ఈ సైట్‌లలో <ph name="FLASH_PLUGIN_NAME" /> ప్లగిన్‌ని చేయి</translation>
-<translation id="8894962626537183708">
-      విధానంలో సురక్షితమైన సందర్భంగా పరిగణించాల్సిన మూలస్థానాల (URLల) జాబితా పేర్కొనబడుతుంది. దీని ఉద్దేశ్యం సంస్థలు అంతర్గత వెబ్ అభివృద్ధి కోసం దశలవారీ సర్వర్ విధానాన్ని వ్యవస్థాపించుకోవడానికి అనుమతించడం, ఇలా చేయడం వలన వాటి డెవలపర్‌లు దశలవారీ సర్వర్‌లో TLS అమలు చేయాల్సిన శ్రమ లేకుండానే సురక్షితమైన సందర్భాలు అవసరం ఉండే ఫీచర్‌లను పరీక్షించగలుగుతారు.
-      ఈ విధానంలో ఒక URLల జాబితాను సెట్ చేస్తే, అవే URLలను కామాలతో వేరే చేసి రూపొందించే జాబితాకు ఆదేశ పంక్తి ఫ్లాగ్ '--unsafely-treat-insecure-origin-as-secure' సెట్ చేసినప్పుడు ఉండే ప్రభావమే దీనిపైన ఉంటుంది. ఒకవేళ విధానాన్ని సెట్ చేస్తే, అది ఆదేశ పంక్తి ఫ్లాగ్‌ను భర్తీ చేస్తుంది.
-      సురక్షితమైన సందర్భాల గురించి మరింత సమాచారం కోసం, https://www.w3.org/TR/secure-contexts/ లింక్ చూడండి
-      </translation>
 <translation id="890403179930035128">అక్షరదోష తనిఖీ భాషలను నిర్బంధంగా ప్రారంభిస్తుంది. ఆ జాబితాలో ఉండే గుర్తించబడని భాషలు విస్మరించబడతాయి.
 
       మీరు ఈ విధానాన్ని ప్రారంభిస్తే, పేర్కొనబడిన భాషలకు అక్షరదోష తనిఖీ ప్రారంభించబడుతుంది, దానితోపాటుగా వినియోగదారు అక్షరదోష తనిఖీ ఎంచుకున్న భాషలకు ప్రారంభించబడుతుంది.
diff --git a/components/policy/resources/policy_templates_th.xtb b/components/policy/resources/policy_templates_th.xtb
index d1312b5..3c781e1 100644
--- a/components/policy/resources/policy_templates_th.xtb
+++ b/components/policy/resources/policy_templates_th.xtb
@@ -2702,11 +2702,6 @@
       หากไม่กำหนดการตั้งค่านี้ไว้ ผู้ใช้เลือกได้ว่าจะใช้ฟังก์ชันนี้หรือไม่</translation>
 <translation id="8870318296973696995">หน้าแรก</translation>
 <translation id="8882006618241293596">บล็อกปลั๊กอิน <ph name="FLASH_PLUGIN_NAME" /> ในเว็บไซต์เหล่านี้</translation>
-<translation id="8894962626537183708">
-      นโยบายนี้ระบุรายการต้นทาง (URL) ที่จะถือเป็นสภาวะแวดล้อมที่ปลอดภัย เพื่ออนุญาตให้องค์กรกำหนดเซิร์ฟเวอร์ชั่วคราวสำหรับการพัฒนาเว็บเป็นการภายใน เพื่อให้นักพัฒนาเว็บทดสอบฟีเจอร์ต่างๆ ที่ต้องกระทำในสภาวะแวดล้อมที่ปลอดภัยได้โดยไม่ต้องใช้ TLS ในเซิร์ฟเวอร์ชั่วคราว
-      การกำหนดรายการ URL ในนโยบายนี้มีค่าเท่ากันกับการกำหนดสถานะในบรรทัดคำสั่ง "--unsafely-treat-insecure-origin-as-secure" เป็นรายการ URL เดียวกันที่คั่นด้วยจุลภาค หากมีการตั้งค่านโยบายนี้ ระบบจะลบล้างสถานะในบรรทัดคำสั่ง
-      ดูข้อมูลเพิ่มเติมเกี่ยวกับสภาวะแวดล้อมที่ปลอดภัยได้ที่ https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">บังคับเปิดใช้การตรวจการสะกดของภาษาต่างๆ ระบบจะเพิกเฉยต่อภาษาที่ไม่รู้จักในรายการนั้น
 
       หากคุณเปิดใช้นโยบายนี้ ระบบจะเปิดใช้การตรวจการสะกดสำหรับภาษาที่ระบุ เพิ่มเติมจากภาษาที่ผู้ใช้ได้เปิดใช้การตรวจการสะกดไปแล้ว
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb
index 617e6a1..a276527d 100644
--- a/components/policy/resources/policy_templates_tr.xtb
+++ b/components/policy/resources/policy_templates_tr.xtb
@@ -2817,11 +2817,6 @@
       Bu ayar ayarlanmadan bırakılırsa kullanıcı bu işlevi kullanıp kullanmamaya karar verebilir.</translation>
 <translation id="8870318296973696995">Ana sayfa</translation>
 <translation id="8882006618241293596">Bu sitelerde <ph name="FLASH_PLUGIN_NAME" /> eklentisini engelle</translation>
-<translation id="8894962626537183708">
-      Bu politika, güvenli içerik olarak değerlendirilecek olan başlangıç noktalarının (URL'ler) bir listesini belirtir. Burada amaç, kuruluşların dahili web geliştirmeleri için hazırlık sunucusu ayarlamalarına olanak tanımaktır. Böylece kuruluşların geliştiricileri hazırlık sunucusunda TLS dağıtmak zorunda kalmadan güvenli içerik gerektiren özellikleri test edebilirler.
-      Bu politikadaki URL'lerin bir listesini ayarlamakla, aynı URL'lerin virgülle ayrılmış bir listesine "--unsafely-treat-insecure-origin-as-secure" komut satırı işaretini ayarlamak aynı sonucu verir. Bu politika ayarlanırsa, komut satırı işaretini geçersiz kılar.
-      Güvenli içerikler ile ilgili daha fazla bilgi edinmek için https://www.w3.org/TR/secure-contexts/ adresine bakın.
-      </translation>
 <translation id="890403179930035128">Yazım denetimi dillerini etkinleştirmeye zorlar. Söz konusu listedeki tanınmayan diller yoksayılır.
 
       Bu politikayı etkinleştirirseniz yazım denetimi, hem belirtilen diller için hem de kullanıcının yazım denetimini etkinleştirdiği diller için etkinleştirilir.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index e7f56b9..c197e6ab 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -2706,11 +2706,6 @@
       Якщо цей параметр не налаштовано, користувач може вирішувати, чи використовувати цю функцію.</translation>
 <translation id="8870318296973696995">Домашня сторінка</translation>
 <translation id="8882006618241293596">Блокувати плагін <ph name="FLASH_PLUGIN_NAME" /> на цих сайтах</translation>
-<translation id="8894962626537183708">
-      Це правило визначає перелік джерел (URL-адрес), які вважаються безпечним контекстом. Мета – дати змогу організаціям налаштовувати проміжний сервер для внутрішніх веб-розробок, щоб можна було тестувати функції, для яких потрібен безпечний контекст, не застосовуючи TLS.
-      Список URL-адрес у цьому правилі налаштовується так само, як позначка командного рядка "--unsafely-treat-insecure-origin-as-secure" у вигляді розділеного комами списку тих самих URL-адрес. Якщо це правило налаштовано, воно заміняє позначку командного рядка.
-      Дізнайтеся більше про безпечні контексти на сторінці https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Примусово вмикає мови перевірки правопису. Нерозпізнані мови в цьому списку ігноруються.
 
       Якщо ввімкнути це правило, перевірка правопису активується для вибраних користувачем і вказаних мов.
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb
index c86cabe7..d6cae0b 100644
--- a/components/policy/resources/policy_templates_vi.xtb
+++ b/components/policy/resources/policy_templates_vi.xtb
@@ -2812,11 +2812,6 @@
       Nếu bạn không thiết lập cài đặt này, người dùng có thể quyết định có sử dụng chức năng này hay không.</translation>
 <translation id="8870318296973696995">Trang chủ</translation>
 <translation id="8882006618241293596">Chặn plugin <ph name="FLASH_PLUGIN_NAME" /> trên các trang web này</translation>
-<translation id="8894962626537183708">
-      Chính sách xác định danh sách các URL gốc cần được coi là ngữ cảnh an toàn. Mục đích là nhằm cho phép các tổ chức thiết lập một máy chủ theo giai đoạn để phát triển web nội bộ sao cho các nhà phát triển có thể thử nghiệm các tính năng yêu cầu ngữ cảnh an toàn mà không phải triển khai TLS trên máy chủ theo giai đoạn.
-      Đặt một danh sách URL trong chính sách này có tác dụng tương tự như đặt cờ dòng lệnh '--unsafely-treat-insecure-origin-as-secure' cho một danh sách được phân tách bằng dấu phẩy gồm có các URL tương tự. Nếu bạn đặt chính sách, chính sách này sẽ ghi đè cờ dòng lệnh.
-      Để biết thêm thông tin về ngữ cảnh an toàn, hãy truy cập vào https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">Buộc bật tính năng kiểm tra chính tả ngôn ngữ. Các ngôn ngữ không xác định được trong danh sách đó sẽ bị bỏ qua.
 
       Nếu bạn bật chính sách này, tính năng kiểm tra chính tả sẽ được bật cho ngôn ngữ đã chỉ định ngoài ngôn ngữ mà người dùng đã bật tính năng kiểm tra chính tả.
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 0ba17e8..44e41c4 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -2642,11 +2642,6 @@
       如果您未指定此设置,用户则可自行决定是否要使用该功能。</translation>
 <translation id="8870318296973696995">主页</translation>
 <translation id="8882006618241293596">禁止这些网站运行 <ph name="FLASH_PLUGIN_NAME" /> 插件</translation>
-<translation id="8894962626537183708">
-      此政策会指定一系列将被视为安全上下文的来源(网址),意在允许相关组织设置临时服务器以用于开发内部网络,以便他们的开发者能够测试需要安全上下文但无需在临时服务器上部署 TLS 的功能。
-      在此政策中设置一系列网址与将“--unsafely-treat-insecure-origin-as-secure”命令行标记设为同一系列的网址(以英文逗号分隔)具有同样的效果。如果此政策已设置,则会替换上述命令行标记。
-      有关安全上下文的详情,请访问 https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">强制检查语言拼写。未在下方列表中列出的语言将被忽略。
 
       如果您启用了此政策,那么除了已由用户启用拼写检查的语言之外,系统还将为您所指定的语言启用拼写检查。
diff --git a/components/policy/resources/policy_templates_zh-TW.xtb b/components/policy/resources/policy_templates_zh-TW.xtb
index b937bda..dfdad29 100644
--- a/components/policy/resources/policy_templates_zh-TW.xtb
+++ b/components/policy/resources/policy_templates_zh-TW.xtb
@@ -2698,11 +2698,6 @@
       如果不指定這項設定,使用者則可自行決定是否要使用這項功能。</translation>
 <translation id="8870318296973696995">首頁</translation>
 <translation id="8882006618241293596">禁止在這些網站上執行 <ph name="FLASH_PLUGIN_NAME" /> 外掛程式</translation>
-<translation id="8894962626537183708">
-      這項政策可指定要視為安全內容的來源 (網址) 清單,以便機構設定內部網頁開發所需的暫存伺服器。這樣一來,機構的開發人員就能測試需要安全內容的功能,而不必在暫存伺服器上部署傳輸層安全標準 (TLS)。
-      你可以在這項政策中設定網址清單,或是將「--unsafely-treat-insecure-origin-as-secure」命令列標記設為相同的網址清單 (以逗號分隔),兩者的效果相同。如果設定這項政策,就會覆寫命令列標記。
-      如要進一步瞭解安全內容,請參閱 https://www.w3.org/TR/secure-contexts/
-      </translation>
 <translation id="890403179930035128">強制執行拼字檢查的語言。系統會忽略該清單中無法辨識的語言。
 
       如果啟用這項政策,那麼除了使用者已啟用拼字檢查功能的語言以外,系統還會針對指定的語言執行拼字檢查。
diff --git a/components/policy/tools/generate_policy_source.py b/components/policy/tools/generate_policy_source.py
index 5fd62a0..7d60f52 100755
--- a/components/policy/tools/generate_policy_source.py
+++ b/components/policy/tools/generate_policy_source.py
@@ -202,10 +202,6 @@
                     dest='chrome_settings_full_runtime_proto_path',
                     help='generate chrome settings full runtime protobuf',
                     metavar='FILE')
-  parser.add_option('--cpd', '--cloud-policy-decoder',
-                    dest='cloud_policy_decoder_path',
-                    help='generate C++ code decoding the cloud policy protobuf',
-                    metavar='FILE')
   parser.add_option('--ard', '--app-restrictions-definition',
                     dest='app_restrictions_path',
                     help='generate an XML file as specified by '
@@ -271,8 +267,6 @@
   if opts.chrome_settings_full_runtime_proto_path:
     GenerateFile(opts.chrome_settings_full_runtime_proto_path,
         _WriteChromeSettingsFullRuntimeProtobuf)
-  if opts.cloud_policy_decoder_path:
-    GenerateFile(opts.cloud_policy_decoder_path, _WriteCloudPolicyDecoder)
 
   if os == 'android' and opts.app_restrictions_path:
     GenerateFile(opts.app_restrictions_path, _WriteAppRestrictions, xml=True)
@@ -343,6 +337,7 @@
           '#include "base/values.h"\n'
           '#include "components/policy/core/common/policy_details.h"\n'
           '#include "components/policy/core/common/policy_map.h"\n'
+          '#include "components/policy/proto/cloud_policy.pb.h"\n'
           '\n'
           'namespace policy {\n'
           '\n'
@@ -376,10 +371,38 @@
     # so that these names can be conditional on 'policy.is_supported'.
     # http://crbug.com/223616
     f.write('extern const char k' + policy.name + '[];\n')
-  f.write('\n}  // namespace key\n\n'
-          '}  // namespace policy\n\n'
+  f.write('\n}  // namespace key\n\n')
+
+  f.write('enum class StringPolicyType {\n'
+          '  STRING,\n'
+          '  JSON,\n'
+          '  EXTERNAL,\n'
+          '};\n\n');
+
+  # User policy proto pointers, one struct for each protobuf type.
+  protobuf_types = _GetProtobufTypes(policies)
+  for protobuf_type in protobuf_types:
+    _WriteChromePolicyAccessHeader(f, protobuf_type)
+
+  f.write('\n}  // namespace policy\n\n'
           '#endif  // CHROME_COMMON_POLICY_CONSTANTS_H_\n')
 
+def _WriteChromePolicyAccessHeader(f, protobuf_type):
+  f.write('// Read access to the protobufs of all supported %s user policies.\n'
+          % protobuf_type.lower())
+  f.write('struct %sPolicyAccess {\n' %  protobuf_type)
+  f.write('  const char* policy_key;\n'
+          '  bool (enterprise_management::CloudPolicySettings::'
+          '*has_proto)() const;\n'
+          '  const enterprise_management::%sPolicyProto&\n'
+          '      (enterprise_management::CloudPolicySettings::'
+          '*get_proto)() const;\n' % protobuf_type)
+  if protobuf_type == 'String':
+    f.write('  const StringPolicyType type;\n')
+  f.write('};\n')
+  f.write('extern const %sPolicyAccess k%sPolicyAccess[];\n\n'
+          % (protobuf_type, protobuf_type))
+
 
 #------------------ policy constants source ------------------------#
 
@@ -754,8 +777,11 @@
           '#include "base/logging.h"\n'
           '#include "components/policy/core/common/policy_types.h"\n'
           '#include "components/policy/core/common/schema_internal.h"\n'
+          '#include "components/policy/proto/cloud_policy.pb.h"\n'
           '#include "components/policy/risk_tag.h"\n'
           '\n'
+          'namespace em = enterprise_management;\n\n'
+          '\n'
           'namespace policy {\n'
           '\n')
 
@@ -900,8 +926,44 @@
     # so that these names can be conditional on 'policy.is_supported'.
     # http://crbug.com/223616
     f.write('const char k{name}[] = "{name}";\n'.format(name=policy.name))
-  f.write('\n}  // namespace key\n\n'
-          '}  // namespace policy\n')
+  f.write('\n}  // namespace key\n\n')
+
+  supported_user_policies = [p for p in policies
+                             if p.is_supported and not p.is_device_only]
+  protobuf_types = _GetProtobufTypes(supported_user_policies)
+  for protobuf_type in protobuf_types:
+    _WriteChromePolicyAccessSource(supported_user_policies, f, protobuf_type)
+
+  f.write('\n}  // namespace policy\n')
+
+# Return the StringPolicyType enum value for a particular policy type.
+def _GetStringPolicyType(policy_type):
+  if policy_type == 'Type::STRING':
+    return 'StringPolicyType::STRING'
+  elif policy_type == 'Type::DICTIONARY':
+    return 'StringPolicyType::JSON'
+  elif policy_type == 'TYPE_EXTERNAL':
+    return 'StringPolicyType::EXTERNAL'
+  raise RuntimeError('Invalid string type: ' + policy_type + '!\n')
+
+# Writes an array that contains the pointers to the proto field for each policy
+# in |policies| of the given |protobuf_type|.
+def _WriteChromePolicyAccessSource(policies, f, protobuf_type):
+  f.write('const %sPolicyAccess k%sPolicyAccess[] = {\n'
+          % (protobuf_type, protobuf_type))
+  extra_args = ''
+  for policy in policies:
+    if policy.policy_protobuf_type == protobuf_type:
+      name = policy.name
+      if protobuf_type == 'String':
+          extra_args = ',\n   ' + _GetStringPolicyType(policy.policy_type)
+      f.write('  {key::k%s,\n'
+              '   &em::CloudPolicySettings::has_%s,\n'
+              '   &em::CloudPolicySettings::%s%s},\n'
+              % (name, name.lower(), name.lower(), extra_args))
+  # The list is nullptr-terminated.
+  f.write('  {nullptr, nullptr, nullptr},\n'
+          '};\n\n')
 
 
 #------------------ policy risk tag header -------------------------#
@@ -1139,171 +1201,6 @@
                policy.id + RESERVED_IDS))
   f.write('}\n\n')
 
-
-#------------------ protobuf decoder -------------------------------#
-
-# This code applies to both Active Directory and Google cloud management.
-
-CLOUD_POLICY_DECODER_CPP_HEAD = '''
-#include <limits>
-#include <memory>
-#include <utility>
-#include <string>
-
-#include "base/callback.h"
-#include "base/json/json_reader.h"
-#include "base/logging.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "components/policy/core/common/cloud/cloud_external_data_manager.h"
-#include "components/policy/core/common/external_data_fetcher.h"
-#include "components/policy/core/common/policy_map.h"
-#include "components/policy/core/common/policy_types.h"
-#include "components/policy/policy_constants.h"
-#include "components/policy/proto/cloud_policy.pb.h"
-
-using google::protobuf::RepeatedPtrField;
-
-namespace policy {
-
-namespace em = enterprise_management;
-
-namespace {
-
-std::unique_ptr<base::Value> DecodeIntegerValue(
-    google::protobuf::int64 value, std::string* error) {
-  if (value < std::numeric_limits<int>::min() ||
-      value > std::numeric_limits<int>::max()) {
-    LOG(WARNING) << "Integer value out of numeric limits: " << value;
-    *error = "Number out of range - invalid int32";
-    return std::make_unique<base::Value>(std::to_string(value));
-  }
-
-  return base::WrapUnique(
-      new base::Value(static_cast<int>(value)));
-}
-
-std::unique_ptr<base::ListValue> DecodeStringList(
-    const em::StringList& string_list) {
-  std::unique_ptr<base::ListValue> list_value(new base::ListValue);
-  for (const auto& entry : string_list.entries())
-    list_value->AppendString(entry);
-  return list_value;
-}
-
-std::unique_ptr<base::Value> DecodeJson(const std::string& json,
-                                        std::string* error) {
-
-  std::unique_ptr<base::Value> parsed_value =
-      base::JSONReader::ReadAndReturnError(
-          json, base::JSON_ALLOW_TRAILING_COMMAS, nullptr, error);
-
-  if (!parsed_value) {
-    // Can't parse as JSON so return it as a string for the handler to validate.
-    LOG(WARNING) << "Invalid JSON: " << json;
-    return std::make_unique<base::Value>(json);
-  }
-
-  // Accept any Value type that parsed as JSON, and leave it to the handler to
-  // convert and check the concrete type.
-  error->clear();
-  return parsed_value;
-}
-
-// Returns true and sets |level| to a PolicyLevel if the policy has been set
-// at that level. Returns false if the policy is not set, or has been set at
-// the level of PolicyOptions::UNSET.
-template <class AnyPolicyProto>
-bool GetPolicyLevel(const AnyPolicyProto& policy_proto, PolicyLevel* level) {
-  if (!policy_proto.has_value()) {
-    return false;
-  }
-  if (!policy_proto.has_policy_options()) {
-    *level = POLICY_LEVEL_MANDATORY;  // Default level.
-    return true;
-  }
-  switch (policy_proto.policy_options().mode()) {
-    case em::PolicyOptions::MANDATORY:
-      *level = POLICY_LEVEL_MANDATORY;
-      return true;
-    case em::PolicyOptions::RECOMMENDED:
-      *level = POLICY_LEVEL_RECOMMENDED;
-      return true;
-    case em::PolicyOptions::UNSET:
-      return false;
-  }
-}
-
-} // namespace
-
-void DecodePolicy(const em::CloudPolicySettings& policy,
-                  base::WeakPtr<CloudExternalDataManager> external_data_manager,
-                  PolicyMap* map,
-                  PolicyScope scope) {
-'''
-
-
-CLOUD_POLICY_DECODER_CPP_FOOT = '''}
-
-}  // namespace policy
-'''
-
-
-def _CreateValue(type, arg):
-  if type == 'Type::BOOLEAN':
-    return 'new base::Value(%s)' % arg
-  elif type == 'Type::INTEGER':
-    return 'DecodeIntegerValue(%s, &error)' % arg
-  elif type == 'Type::STRING':
-    return 'new base::Value(%s)' % arg
-  elif type == 'Type::LIST':
-    return 'DecodeStringList(%s)' % arg
-  elif type == 'Type::DICTIONARY' or type == 'TYPE_EXTERNAL':
-    return 'DecodeJson(%s, &error)' % arg
-  else:
-    raise NotImplementedError('Unknown type %s' % type)
-
-
-def _CreateExternalDataFetcher(type, name):
-  if type == 'TYPE_EXTERNAL':
-    return 'new ExternalDataFetcher(external_data_manager, key::k%s)' % name
-  return 'nullptr'
-
-
-def _WriteCloudPolicyDecoderCode(f, policy):
-  membername = policy.name.lower()
-  proto_type = '%sPolicyProto' % policy.policy_protobuf_type
-  f.write('  if (policy.has_%s()) {\n' % membername)
-  f.write('    const em::%s& policy_proto = policy.%s();\n' %
-          (proto_type, membername))
-  f.write('    PolicyLevel level;\n'
-          '    if (GetPolicyLevel(policy_proto, &level)) {\n'
-          '      std::string error;\n')
-  f.write('      std::unique_ptr<base::Value> value(%s);\n' %
-          (_CreateValue(policy.policy_type, 'policy_proto.value()')))
-  f.write('      std::unique_ptr<ExternalDataFetcher>\n')
-  f.write('          external_data_fetcher(%s);\n' %
-          _CreateExternalDataFetcher(policy.policy_type, policy.name))
-  f.write('      map->Set(key::k%s, \n' % policy.name)
-  f.write('               level, \n'
-          '               scope, \n'
-          '               POLICY_SOURCE_CLOUD, \n'
-          '               std::move(value), \n'
-          '               std::move(external_data_fetcher));\n')
-  f.write('      map->SetError(key::k%s, error);\n' % policy.name)
-  f.write('    }\n'
-          '  }\n')
-
-
-def _WriteCloudPolicyDecoder(policies, os, f, risk_tags):
-  f.write(CLOUD_POLICY_DECODER_CPP_HEAD)
-  for policy in policies:
-    if policy.is_supported and not policy.is_device_only:
-      _WriteCloudPolicyDecoderCode(f, policy)
-  f.write(CLOUD_POLICY_DECODER_CPP_FOOT)
-
-
 #------------------ Chrome OS policy constants header --------------#
 
 # This code applies to Active Directory management only.
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index dd012b4..312ababd 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -1063,7 +1063,7 @@
 <translation id="8790007591277257123">&amp;মুছে ফেলাকে আবার করুন</translation>
 <translation id="8792621596287649091">আপনি নিজের <ph name="ORG_NAME" /> অ্যাকাউন্টের অ্যাক্সেস হারাতে পারেন অথবা আপনার পরিচয় চুরি হয়ে যেতে পারে। Chromium এখনই আপনার পাসওয়ার্ড পরিবর্তন করার আর্জি জানাচ্ছে।</translation>
 <translation id="8800988563907321413">আপনার জন্য আশেপাশের প্রস্তাবনাগুলি এখানে দেখা যাবে</translation>
-<translation id="8820817407110198400">বুকমার্ক</translation>
+<translation id="8820817407110198400">বুকমার্কস</translation>
 <translation id="883848425547221593">অন্যান্য বুকমার্ক</translation>
 <translation id="884264119367021077">শিপিং ঠিকানা</translation>
 <translation id="884923133447025588">কোন প্রত্যাহার নির্মাণকৌশল পাওয়া যায় নি৷</translation>
diff --git a/components/sync/BUILD.gn b/components/sync/BUILD.gn
index 9732ee4..a82c6812 100644
--- a/components/sync/BUILD.gn
+++ b/components/sync/BUILD.gn
@@ -782,6 +782,8 @@
     "driver/sync_client_mock.h",
     "engine/fake_sync_engine.cc",
     "engine/fake_sync_engine.h",
+    "engine/mock_sync_engine.cc",
+    "engine/mock_sync_engine.h",
     "model/change_processor_mock.cc",
     "model/change_processor_mock.h",
   ]
diff --git a/components/sync/driver/about_sync_util.cc b/components/sync/driver/about_sync_util.cc
index 861cfb7..c7f78fc 100644
--- a/components/sync/driver/about_sync_util.cc
+++ b/components/sync/driver/about_sync_util.cc
@@ -10,6 +10,7 @@
 
 #include "base/i18n/time_formatting.h"
 #include "base/logging.h"
+#include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
@@ -174,6 +175,45 @@
   std::vector<std::unique_ptr<Section>> sections_;
 };
 
+std::string GetDisableReasonsString(int disable_reasons) {
+  std::vector<std::string> reason_strings;
+  if (disable_reasons & syncer::SyncService::DISABLE_REASON_PLATFORM_OVERRIDE)
+    reason_strings.push_back("Platform override");
+  if (disable_reasons & syncer::SyncService::DISABLE_REASON_ENTERPRISE_POLICY)
+    reason_strings.push_back("Enterprise policy");
+  if (disable_reasons & syncer::SyncService::DISABLE_REASON_NOT_SIGNED_IN)
+    reason_strings.push_back("Not signed in");
+  if (disable_reasons & syncer::SyncService::DISABLE_REASON_USER_CHOICE)
+    reason_strings.push_back("User choice");
+  if (disable_reasons & syncer::SyncService::DISABLE_REASON_UNRECOVERABLE_ERROR)
+    reason_strings.push_back("Unrecoverable error");
+  return base::JoinString(reason_strings, ", ");
+}
+
+std::string GetSummaryString(syncer::SyncService::State state,
+                             int disable_reasons) {
+  switch (state) {
+    case syncer::SyncService::State::DISABLED:
+      return "Disabled (" + GetDisableReasonsString(disable_reasons) + ")";
+    case syncer::SyncService::State::WAITING_FOR_START_REQUEST:
+      return "Waiting for start request";
+    case syncer::SyncService::State::START_DEFERRED:
+      return "Start deferred";
+    case syncer::SyncService::State::INITIALIZING:
+      return "Initializing";
+    case syncer::SyncService::State::AUTH_ERROR:
+      return "Auth error";
+    case syncer::SyncService::State::WAITING_FOR_CONSENT:
+      return "Waiting for initial setup";
+    case syncer::SyncService::State::CONFIGURING:
+      return "Configuring data types";
+    case syncer::SyncService::State::ACTIVE:
+      return "Active";
+  }
+  NOTREACHED();
+  return std::string();
+}
+
 // Returns a string describing the chrome version environment. Version format:
 // <Build Info> <OS> <Version number> (<Last change>)<channel or "-devel">
 // If version information is unavailable, returns "invalid."
@@ -292,8 +332,6 @@
   Stat<std::string>* last_synced = section_local->AddStringStat("Last Synced");
   Stat<bool>* is_setup_complete =
       section_local->AddBoolStat("Sync First-Time Setup Complete");
-  Stat<std::string>* engine_initialization_state =
-      section_local->AddStringStat("Sync Engine State");
   Stat<bool>* is_syncing = section_local->AddBoolStat("Sync Cycle Ongoing");
   Stat<bool>* is_local_sync_enabled =
       section_local->AddBoolStat("Local Sync Backend Enabled");
@@ -391,15 +429,15 @@
     return about_info;
   }
 
+  // Summary.
+  summary_string->Set(
+      GetSummaryString(service->GetState(), service->GetDisableReasons()));
+
   SyncStatus full_status;
   bool is_status_valid = service->QueryDetailedSyncStatus(&full_status);
   const SyncCycleSnapshot& snapshot = service->GetLastCycleSnapshot();
   const SyncTokenStatus& token_status = service->GetSyncTokenStatus();
 
-  // Summary.
-  if (is_status_valid)
-    summary_string->Set(service->QuerySyncStatusSummaryString());
-
   // Version Info.
   // |client_version| was already set above.
   server_url->Set(service->sync_service_url().spec());
@@ -423,8 +461,6 @@
   server_connection->Set(GetConnectionStatus(token_status));
   last_synced->Set(GetLastSyncedTimeString(service->GetLastSyncedTime()));
   is_setup_complete->Set(service->IsFirstSetupComplete());
-  engine_initialization_state->Set(
-      service->GetEngineInitializationStateString());
   if (is_status_valid)
     is_syncing->Set(full_status.syncing);
   is_local_sync_enabled->Set(service->IsLocalSyncEnabled());
diff --git a/components/sync/driver/about_sync_util_unittest.cc b/components/sync/driver/about_sync_util_unittest.cc
index 1958ff5..7a7a7c65 100644
--- a/components/sync/driver/about_sync_util_unittest.cc
+++ b/components/sync/driver/about_sync_util_unittest.cc
@@ -4,16 +4,11 @@
 
 #include "components/sync/driver/about_sync_util.h"
 
-#include "base/strings/utf_string_conversions.h"
 #include "components/sync/driver/fake_sync_service.h"
 #include "components/sync/engine/sync_status.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-using ::testing::NiceMock;
-using ::testing::Return;
-using ::testing::_;
-
 namespace syncer {
 namespace sync_ui_util {
 namespace {
@@ -21,8 +16,12 @@
 class SyncServiceMock : public FakeSyncService {
  public:
   bool IsFirstSetupComplete() const override { return true; }
+  bool CanSyncStart() const override { return true; }
 
   bool HasUnrecoverableError() const override { return true; }
+  int GetDisableReasons() const override {
+    return DISABLE_REASON_UNRECOVERABLE_ERROR;
+  }
 
   bool QueryDetailedSyncStatus(SyncStatus* result) override { return false; }
 
diff --git a/components/sync/driver/fake_sync_service.cc b/components/sync/driver/fake_sync_service.cc
index bbfadae..5d3102c7 100644
--- a/components/sync/driver/fake_sync_service.cc
+++ b/components/sync/driver/fake_sync_service.cc
@@ -192,10 +192,6 @@
   return syncer::SyncTokenStatus();
 }
 
-std::string FakeSyncService::QuerySyncStatusSummaryString() {
-  return "";
-}
-
 bool FakeSyncService::QueryDetailedSyncStatus(SyncStatus* result) {
   return false;
 }
@@ -204,10 +200,6 @@
   return base::Time();
 }
 
-std::string FakeSyncService::GetEngineInitializationStateString() const {
-  return std::string();
-}
-
 SyncCycleSnapshot FakeSyncService::GetLastCycleSnapshot() const {
   return SyncCycleSnapshot();
 }
diff --git a/components/sync/driver/fake_sync_service.h b/components/sync/driver/fake_sync_service.h
index d6b2ea41..6e70844 100644
--- a/components/sync/driver/fake_sync_service.h
+++ b/components/sync/driver/fake_sync_service.h
@@ -77,10 +77,8 @@
   const LocalDeviceInfoProvider* GetLocalDeviceInfoProvider() const override;
   void ReenableDatatype(ModelType type) override;
   SyncTokenStatus GetSyncTokenStatus() const override;
-  std::string QuerySyncStatusSummaryString() override;
   bool QueryDetailedSyncStatus(SyncStatus* result) override;
   base::Time GetLastSyncedTime() const override;
-  std::string GetEngineInitializationStateString() const override;
   SyncCycleSnapshot GetLastCycleSnapshot() const override;
   std::unique_ptr<base::Value> GetTypeStatusMap() override;
   const GURL& sync_service_url() const override;
diff --git a/components/sync/driver/sync_service.h b/components/sync/driver/sync_service.h
index 0ac2971..ec332d8 100644
--- a/components/sync/driver/sync_service.h
+++ b/components/sync/driver/sync_service.h
@@ -125,6 +125,10 @@
     // The Sync engine is initialized and the data types may or may not be
     // configured (i.e. any of the states below), but Sync has encountered an
     // auth error. Call GetAuthError for more details.
+    // TODO(crbug.com/839834): If we receive an auth error and then shut down,
+    // we can be in one of the previous states but still have an auth error. Can
+    // we clear the auth error on shutdown, since it's not persisted anyway?
+    // Otherwise this state might have to move to just after DISABLED.
     AUTH_ERROR,
     // The Sync engine is initialized, but the user hasn't completed the initial
     // Sync setup yet, so we won't actually configure the data types.
@@ -358,9 +362,6 @@
   // Return sync token status.
   virtual SyncTokenStatus GetSyncTokenStatus() const = 0;
 
-  // Get a description of the sync status for displaying in the user interface.
-  virtual std::string QuerySyncStatusSummaryString() = 0;
-
   // Initializes a struct of status indicators with data from the engine.
   // Returns false if the engine was not available for querying; in that case
   // the struct will be filled with default data.
@@ -369,9 +370,6 @@
   // Returns the last synced time.
   virtual base::Time GetLastSyncedTime() const = 0;
 
-  // Returns a human readable string describing engine initialization state.
-  virtual std::string GetEngineInitializationStateString() const = 0;
-
   virtual SyncCycleSnapshot GetLastCycleSnapshot() const = 0;
 
   // Returns a ListValue indicating the status of all registered types.
diff --git a/components/sync/engine/mock_sync_engine.cc b/components/sync/engine/mock_sync_engine.cc
new file mode 100644
index 0000000..95f05b2e
--- /dev/null
+++ b/components/sync/engine/mock_sync_engine.cc
@@ -0,0 +1,13 @@
+// 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 "components/sync/engine/mock_sync_engine.h"
+
+namespace syncer {
+
+MockSyncEngine::MockSyncEngine() {}
+
+MockSyncEngine::~MockSyncEngine() {}
+
+}  // namespace syncer
diff --git a/components/sync/engine/mock_sync_engine.h b/components/sync/engine/mock_sync_engine.h
new file mode 100644
index 0000000..d7d3856
--- /dev/null
+++ b/components/sync/engine/mock_sync_engine.h
@@ -0,0 +1,66 @@
+// 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 COMPONENTS_SYNC_ENGINE_MOCK_SYNC_ENGINE_H_
+#define COMPONENTS_SYNC_ENGINE_MOCK_SYNC_ENGINE_H_
+
+#include <memory>
+#include <string>
+
+#include "components/sync/engine/data_type_activation_response.h"
+#include "components/sync/engine/sync_engine.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+namespace syncer {
+
+// A mock of the SyncEngine.
+//
+// Note: If you don't really care about all the exact details, FakeSyncEngine is
+// probably better.
+class MockSyncEngine : public SyncEngine {
+ public:
+  MockSyncEngine();
+  ~MockSyncEngine() override;
+
+  // ModelTypeConfigurer:
+  MOCK_METHOD1(ConfigureDataTypes, void(ConfigureParams));
+  MOCK_METHOD2(RegisterDirectoryDataType, void(ModelType, ModelSafeGroup));
+  MOCK_METHOD1(UnregisterDirectoryDataType, void(ModelType));
+  MOCK_METHOD3(ActivateDirectoryDataType,
+               void(ModelType, ModelSafeGroup, ChangeProcessor*));
+  MOCK_METHOD1(DeactivateDirectoryDataType, void(ModelType));
+  MOCK_METHOD2(ActivateNonBlockingDataType,
+               void(ModelType, std::unique_ptr<DataTypeActivationResponse>));
+  MOCK_METHOD1(DeactivateNonBlockingDataType, void(ModelType));
+
+  // SyncEngine:
+  MOCK_METHOD1(Initialize, void(InitParams));
+  MOCK_METHOD1(TriggerRefresh, void(const ModelTypeSet&));
+  MOCK_METHOD1(UpdateCredentials, void(const SyncCredentials&));
+  MOCK_METHOD0(InvalidateCredentials, void());
+  MOCK_METHOD0(StartConfiguration, void());
+  MOCK_METHOD0(StartSyncingWithServer, void());
+  MOCK_METHOD2(SetEncryptionPassphrase, void(const std::string&, bool));
+  MOCK_METHOD1(SetDecryptionPassphrase, void(const std::string&));
+  MOCK_METHOD0(StopSyncingForShutdown, void());
+  MOCK_METHOD1(Shutdown, void(ShutdownReason));
+  MOCK_METHOD0(EnableEncryptEverything, void());
+  MOCK_CONST_METHOD0(GetUserShare, UserShare*());
+  MOCK_METHOD0(GetDetailedStatus, Status());
+  MOCK_CONST_METHOD1(HasUnsyncedItemsForTest,
+                     void(base::OnceCallback<void(bool)>));
+  MOCK_CONST_METHOD1(IsCryptographerReady, bool(const BaseTransaction*));
+  MOCK_CONST_METHOD1(GetModelSafeRoutingInfo, void(ModelSafeRoutingInfo*));
+  MOCK_CONST_METHOD0(FlushDirectory, void());
+  MOCK_METHOD0(RequestBufferedProtocolEventsAndEnableForwarding, void());
+  MOCK_METHOD0(DisableProtocolEventForwarding, void());
+  MOCK_METHOD0(EnableDirectoryTypeDebugInfoForwarding, void());
+  MOCK_METHOD0(DisableDirectoryTypeDebugInfoForwarding, void());
+  MOCK_METHOD1(ClearServerData, void(const base::Closure&));
+  MOCK_METHOD3(OnCookieJarChanged, void(bool, bool, const base::Closure&));
+};
+
+}  // namespace syncer
+
+#endif  // COMPONENTS_SYNC_ENGINE_MOCK_SYNC_ENGINE_H_
diff --git a/components/sync_bookmarks/bookmark_model_observer_impl.cc b/components/sync_bookmarks/bookmark_model_observer_impl.cc
index 4250ef6..c5af3577 100644
--- a/components/sync_bookmarks/bookmark_model_observer_impl.cc
+++ b/components/sync_bookmarks/bookmark_model_observer_impl.cc
@@ -17,6 +17,41 @@
 
 namespace sync_bookmarks {
 
+namespace {
+
+void UpdateBookmarkSpecificsMetaInfo(
+    const bookmarks::BookmarkNode::MetaInfoMap* metainfo_map,
+    sync_pb::BookmarkSpecifics* bm_specifics) {
+  // TODO(crbug.com/516866): update the implementation to be similar to the
+  // directory implementation
+  // https://cs.chromium.org/chromium/src/components/sync_bookmarks/bookmark_change_processor.cc?l=882&rcl=f38001d936d8b2abb5743e85cbc88c72746ae3d2
+  for (const std::pair<std::string, std::string>& pair : *metainfo_map) {
+    sync_pb::MetaInfo* meta_info = bm_specifics->add_meta_info();
+    meta_info->set_key(pair.first);
+    meta_info->set_value(pair.second);
+  }
+}
+
+sync_pb::EntitySpecifics CreateSpecificsFromBookmarkNode(
+    const bookmarks::BookmarkNode* node) {
+  sync_pb::EntitySpecifics specifics;
+  sync_pb::BookmarkSpecifics* bm_specifics = specifics.mutable_bookmark();
+  bm_specifics->set_url(node->url().spec());
+  // TODO(crbug.com/516866): Set the favicon.
+  bm_specifics->set_title(base::UTF16ToUTF8(node->GetTitle()));
+  bm_specifics->set_creation_time_us(
+      node->date_added().ToDeltaSinceWindowsEpoch().InMicroseconds());
+
+  bm_specifics->set_icon_url(node->icon_url() ? node->icon_url()->spec()
+                                              : std::string());
+  if (node->GetMetaInfoMap()) {
+    UpdateBookmarkSpecificsMetaInfo(node->GetMetaInfoMap(), bm_specifics);
+  }
+  return specifics;
+}
+
+}  // namespace
+
 BookmarkModelObserverImpl::BookmarkModelObserverImpl(
     const base::RepeatingClosure& nudge_for_commit_closure,
     SyncedBookmarkTracker* bookmark_tracker)
@@ -71,27 +106,8 @@
   const sync_pb::UniquePosition unique_position =
       ComputePosition(*parent, index, sync_id).ToProto();
 
-  sync_pb::EntitySpecifics specifics;
-  sync_pb::BookmarkSpecifics* bm_specifics = specifics.mutable_bookmark();
-  bm_specifics->set_url(node->url().spec());
-  // TODO(crbug.com/516866): Set the favicon.
-  bm_specifics->set_title(base::UTF16ToUTF8(node->GetTitle()));
-  bm_specifics->set_creation_time_us(
-      node->date_added().ToDeltaSinceWindowsEpoch().InMicroseconds());
+  sync_pb::EntitySpecifics specifics = CreateSpecificsFromBookmarkNode(node);
 
-  bm_specifics->set_icon_url(node->icon_url() ? node->icon_url()->spec()
-                                              : std::string());
-  // TODO(crbug.com/516866): update the implementation to be similar to the
-  // directory implementation
-  // https://cs.chromium.org/chromium/src/components/sync_bookmarks/bookmark_change_processor.cc?l=882&rcl=f38001d936d8b2abb5743e85cbc88c72746ae3d2
-  if (node->GetMetaInfoMap()) {
-    for (const std::pair<std::string, std::string>& pair :
-         *node->GetMetaInfoMap()) {
-      sync_pb::MetaInfo* meta_info = bm_specifics->add_meta_info();
-      meta_info->set_key(pair.first);
-      meta_info->set_value(pair.second);
-    }
-  }
   bookmark_tracker_->Add(sync_id, node, server_version, creation_time,
                          unique_position, specifics);
   // Mark the entity that it needs to be committed.
@@ -99,6 +115,62 @@
   nudge_for_commit_closure_.Run();
 }
 
+void BookmarkModelObserverImpl::BookmarkNodeRemoved(
+    bookmarks::BookmarkModel* model,
+    const bookmarks::BookmarkNode* parent,
+    int old_index,
+    const bookmarks::BookmarkNode* node,
+    const std::set<GURL>& removed_urls) {
+  NOTIMPLEMENTED();
+}
+
+void BookmarkModelObserverImpl::BookmarkAllUserNodesRemoved(
+    bookmarks::BookmarkModel* model,
+    const std::set<GURL>& removed_urls) {
+  NOTIMPLEMENTED();
+}
+
+void BookmarkModelObserverImpl::BookmarkNodeChanged(
+    bookmarks::BookmarkModel* model,
+    const bookmarks::BookmarkNode* node) {
+  // TODO(crbug.com/516866): continue only if
+  // model->client()->CanSyncNode(node).
+
+  // We shouldn't see changes to the top-level nodes.
+  DCHECK(!model->is_permanent_node(node));
+
+  const SyncedBookmarkTracker::Entity* entity =
+      bookmark_tracker_->GetEntityForBookmarkNode(node);
+  DCHECK(entity);
+  const std::string& sync_id = entity->metadata()->server_id();
+  const base::Time modification_time = base::Time::Now();
+  sync_pb::EntitySpecifics specifics = CreateSpecificsFromBookmarkNode(node);
+
+  bookmark_tracker_->Update(sync_id, entity->metadata()->server_version(),
+                            modification_time, specifics);
+  // Mark the entity that it needs to be committed.
+  bookmark_tracker_->IncrementSequenceNumber(sync_id);
+  nudge_for_commit_closure_.Run();
+}
+
+void BookmarkModelObserverImpl::BookmarkMetaInfoChanged(
+    bookmarks::BookmarkModel* model,
+    const bookmarks::BookmarkNode* node) {
+  BookmarkNodeChanged(model, node);
+}
+
+void BookmarkModelObserverImpl::BookmarkNodeFaviconChanged(
+    bookmarks::BookmarkModel* model,
+    const bookmarks::BookmarkNode* node) {
+  NOTIMPLEMENTED();
+}
+
+void BookmarkModelObserverImpl::BookmarkNodeChildrenReordered(
+    bookmarks::BookmarkModel* model,
+    const bookmarks::BookmarkNode* node) {
+  NOTIMPLEMENTED();
+}
+
 syncer::UniquePosition BookmarkModelObserverImpl::ComputePosition(
     const bookmarks::BookmarkNode& parent,
     int index,
@@ -151,37 +223,4 @@
       suffix);
 }
 
-void BookmarkModelObserverImpl::BookmarkNodeRemoved(
-    bookmarks::BookmarkModel* model,
-    const bookmarks::BookmarkNode* parent,
-    int old_index,
-    const bookmarks::BookmarkNode* node,
-    const std::set<GURL>& removed_urls) {
-  NOTIMPLEMENTED();
-}
-
-void BookmarkModelObserverImpl::BookmarkAllUserNodesRemoved(
-    bookmarks::BookmarkModel* model,
-    const std::set<GURL>& removed_urls) {
-  NOTIMPLEMENTED();
-}
-
-void BookmarkModelObserverImpl::BookmarkNodeChanged(
-    bookmarks::BookmarkModel* model,
-    const bookmarks::BookmarkNode* node) {
-  NOTIMPLEMENTED();
-}
-
-void BookmarkModelObserverImpl::BookmarkNodeFaviconChanged(
-    bookmarks::BookmarkModel* model,
-    const bookmarks::BookmarkNode* node) {
-  NOTIMPLEMENTED();
-}
-
-void BookmarkModelObserverImpl::BookmarkNodeChildrenReordered(
-    bookmarks::BookmarkModel* model,
-    const bookmarks::BookmarkNode* node) {
-  NOTIMPLEMENTED();
-}
-
 }  // namespace sync_bookmarks
diff --git a/components/sync_bookmarks/bookmark_model_observer_impl.h b/components/sync_bookmarks/bookmark_model_observer_impl.h
index 2d81d30..6a020b1 100644
--- a/components/sync_bookmarks/bookmark_model_observer_impl.h
+++ b/components/sync_bookmarks/bookmark_model_observer_impl.h
@@ -10,6 +10,7 @@
 
 #include "base/callback.h"
 #include "components/bookmarks/browser/bookmark_model_observer.h"
+#include "components/bookmarks/browser/bookmark_node.h"
 #include "url/gurl.h"
 
 namespace syncer {
@@ -52,6 +53,8 @@
                                    const std::set<GURL>& removed_urls) override;
   void BookmarkNodeChanged(bookmarks::BookmarkModel* model,
                            const bookmarks::BookmarkNode* node) override;
+  void BookmarkMetaInfoChanged(bookmarks::BookmarkModel* model,
+                               const bookmarks::BookmarkNode* node) override;
   void BookmarkNodeFaviconChanged(bookmarks::BookmarkModel* model,
                                   const bookmarks::BookmarkNode* node) override;
   void BookmarkNodeChildrenReordered(
diff --git a/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc b/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
index e3a9492..d920742c 100644
--- a/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
+++ b/components/sync_bookmarks/bookmark_model_observer_impl_unittest.cc
@@ -84,6 +84,83 @@
   EXPECT_THAT(local_changes[0]->bookmark_node(), Eq(bookmark_node));
 }
 
+TEST_F(BookmarkModelObserverImplTest,
+       BookmarkChangedShouldUpdateTheTrackerAndNudgeForCommit) {
+  const std::string kTitle1 = "title1";
+  const std::string kUrl1 = "http://www.url1.com";
+  const std::string kNewUrl1 = "http://www.new-url1.com";
+  const std::string kTitle2 = "title2";
+  const std::string kUrl2 = "http://www.url2.com";
+  const std::string kNewTitle2 = "new_title2";
+  const size_t kMaxEntries = 10;
+
+  const bookmarks::BookmarkNode* bookmark_bar_node =
+      bookmark_model()->bookmark_bar_node();
+  const bookmarks::BookmarkNode* bookmark_node1 = bookmark_model()->AddURL(
+      /*parent=*/bookmark_bar_node, /*index=*/0, base::UTF8ToUTF16(kTitle1),
+      GURL(kUrl1));
+  const bookmarks::BookmarkNode* bookmark_node2 = bookmark_model()->AddURL(
+      /*parent=*/bookmark_bar_node, /*index=*/0, base::UTF8ToUTF16(kTitle2),
+      GURL(kUrl2));
+  // Both bookmarks should be tracked now.
+  ASSERT_THAT(bookmark_tracker()->TrackedEntitiesCountForTest(), 3U);
+
+  const std::string id1 = bookmark_tracker()
+                              ->GetEntityForBookmarkNode(bookmark_node1)
+                              ->metadata()
+                              ->server_id();
+  const std::string id2 = bookmark_tracker()
+                              ->GetEntityForBookmarkNode(bookmark_node2)
+                              ->metadata()
+                              ->server_id();
+  // There should be two local changes now for both entities.
+  ASSERT_THAT(
+      bookmark_tracker()->GetEntitiesWithLocalChanges(kMaxEntries).size(), 2U);
+
+  // Record commits responses for both nodes (without change in ids for
+  // simplcitiy of this test).
+  bookmark_tracker()->UpdateUponCommitResponse(
+      id1, id1, /*acked_sequence_number=*/1, /*server_version=*/1);
+  bookmark_tracker()->UpdateUponCommitResponse(
+      id2, id2, /*acked_sequence_number=*/1, /*server_version=*/1);
+
+  // There should be no local changes now.
+  ASSERT_TRUE(
+      bookmark_tracker()->GetEntitiesWithLocalChanges(kMaxEntries).empty());
+
+  // Now update the title of the 2nd node.
+  EXPECT_CALL(*nudge_for_commit_closure(), Run());
+  bookmark_model()->SetTitle(bookmark_node2, base::UTF8ToUTF16(kNewTitle2));
+  // Node 2 should be in the local changes list.
+  std::vector<const SyncedBookmarkTracker::Entity*> local_changes =
+      bookmark_tracker()->GetEntitiesWithLocalChanges(kMaxEntries);
+  ASSERT_THAT(local_changes.size(), 1U);
+  EXPECT_THAT(local_changes[0]->bookmark_node(), Eq(bookmark_node2));
+
+  // Now update the url of the 1st node.
+  EXPECT_CALL(*nudge_for_commit_closure(), Run());
+  bookmark_model()->SetURL(bookmark_node1, GURL(kNewUrl1));
+
+  // Node 1 and 2 should be in the local changes list.
+  local_changes = bookmark_tracker()->GetEntitiesWithLocalChanges(kMaxEntries);
+  ASSERT_THAT(local_changes.size(), 2U);
+
+  // Constuct a set of the bookmark nodes in the local changes.
+  std::set<const bookmarks::BookmarkNode*> nodes_in_local_changes;
+  for (const SyncedBookmarkTracker::Entity* entity : local_changes) {
+    nodes_in_local_changes.insert(entity->bookmark_node());
+  }
+  // Both bookmarks should exist in the set.
+  EXPECT_TRUE(nodes_in_local_changes.find(bookmark_node1) !=
+              nodes_in_local_changes.end());
+  EXPECT_TRUE(nodes_in_local_changes.find(bookmark_node2) !=
+              nodes_in_local_changes.end());
+
+  // Now update metainfo of the 1st node.
+  EXPECT_CALL(*nudge_for_commit_closure(), Run());
+  bookmark_model()->SetNodeMetaInfo(bookmark_node1, "key", "value");
+}
+
 TEST_F(BookmarkModelObserverImplTest, ShouldPositionSiblings) {
   const std::string kTitle = "title";
   const std::string kUrl = "http://www.url.com";
diff --git a/components/viz/common/gl_helper_benchmark.cc b/components/viz/common/gl_helper_benchmark.cc
index 3cf84a9..a2ff1361 100644
--- a/components/viz/common/gl_helper_benchmark.cc
+++ b/components/viz/common/gl_helper_benchmark.cc
@@ -66,7 +66,7 @@
     attributes.bind_generates_resource = false;
     attributes.gpu_preference = gl::PreferDiscreteGpu;
 
-    context_ = gpu::GLInProcessContext::CreateWithoutInit();
+    context_ = std::make_unique<gpu::GLInProcessContext>();
     auto result =
         context_->Initialize(nullptr,                 /* service */
                              nullptr,                 /* surface */
diff --git a/components/viz/common/gl_helper_unittest.cc b/components/viz/common/gl_helper_unittest.cc
index 8a07533..0522776 100644
--- a/components/viz/common/gl_helper_unittest.cc
+++ b/components/viz/common/gl_helper_unittest.cc
@@ -64,7 +64,7 @@
     attributes.sample_buffers = 1;
     attributes.bind_generates_resource = false;
 
-    context_ = gpu::GLInProcessContext::CreateWithoutInit();
+    context_ = std::make_unique<gpu::GLInProcessContext>();
     auto result =
         context_->Initialize(nullptr,                 /* service */
                              nullptr,                 /* surface */
diff --git a/components/viz/common/yuv_readback_unittest.cc b/components/viz/common/yuv_readback_unittest.cc
index 25a320a..9bc57fc 100644
--- a/components/viz/common/yuv_readback_unittest.cc
+++ b/components/viz/common/yuv_readback_unittest.cc
@@ -43,7 +43,7 @@
     attributes.sample_buffers = 1;
     attributes.bind_generates_resource = false;
 
-    context_ = gpu::GLInProcessContext::CreateWithoutInit();
+    context_ = std::make_unique<gpu::GLInProcessContext>();
     auto result =
         context_->Initialize(nullptr,                 /* service */
                              nullptr,                 /* surface */
diff --git a/components/viz/service/display_embedder/gpu_display_provider.cc b/components/viz/service/display_embedder/gpu_display_provider.cc
index dc305cc..f1d013c 100644
--- a/components/viz/service/display_embedder/gpu_display_provider.cc
+++ b/components/viz/service/display_embedder/gpu_display_provider.cc
@@ -23,6 +23,7 @@
 #include "components/viz/service/gl/gpu_service_impl.h"
 #include "gpu/command_buffer/client/shared_memory_limits.h"
 #include "gpu/command_buffer/service/image_factory.h"
+#include "gpu/ipc/command_buffer_task_executor.h"
 #include "gpu/ipc/common/surface_handle.h"
 #include "gpu/ipc/service/gpu_channel_manager.h"
 #include "gpu/ipc/service/gpu_channel_manager_delegate.h"
@@ -71,14 +72,14 @@
 GpuDisplayProvider::GpuDisplayProvider(
     uint32_t restart_id,
     GpuServiceImpl* gpu_service_impl,
-    scoped_refptr<gpu::InProcessCommandBuffer::Service> gpu_service,
+    scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor,
     gpu::GpuChannelManager* gpu_channel_manager,
     ServerSharedBitmapManager* server_shared_bitmap_manager,
     bool headless,
     bool wait_for_all_pipeline_stages_before_draw)
     : restart_id_(restart_id),
       gpu_service_impl_(gpu_service_impl),
-      gpu_service_(std::move(gpu_service)),
+      task_executor_(std::move(task_executor)),
       gpu_channel_manager_delegate_(gpu_channel_manager->delegate()),
       gpu_memory_buffer_manager_(
           std::make_unique<InProcessGpuMemoryBufferManager>(
@@ -133,7 +134,7 @@
     gpu::ContextResult context_result = gpu::ContextResult::kTransientFailure;
     while (context_result != gpu::ContextResult::kSuccess) {
       context_provider = base::MakeRefCounted<VizProcessContextProvider>(
-          gpu_service_, surface_handle, gpu_memory_buffer_manager_.get(),
+          task_executor_, surface_handle, gpu_memory_buffer_manager_.get(),
           image_factory_, gpu_channel_manager_delegate_,
           gpu::SharedMemoryLimits());
       context_result = context_provider->BindToCurrentThread();
diff --git a/components/viz/service/display_embedder/gpu_display_provider.h b/components/viz/service/display_embedder/gpu_display_provider.h
index 53a21820..9cb1e1ff 100644
--- a/components/viz/service/display_embedder/gpu_display_provider.h
+++ b/components/viz/service/display_embedder/gpu_display_provider.h
@@ -25,6 +25,7 @@
 namespace gpu {
 class GpuChannelManager;
 class GpuChannelManagerDelegate;
+class CommandBufferTaskExecutor;
 class ImageFactory;
 }  // namespace gpu
 
@@ -38,14 +39,13 @@
 // In-process implementation of DisplayProvider.
 class VIZ_SERVICE_EXPORT GpuDisplayProvider : public DisplayProvider {
  public:
-  GpuDisplayProvider(
-      uint32_t restart_id,
-      GpuServiceImpl* gpu_service_impl,
-      scoped_refptr<gpu::InProcessCommandBuffer::Service> gpu_service,
-      gpu::GpuChannelManager* gpu_channel_manager,
-      ServerSharedBitmapManager* server_shared_bitmap_manager,
-      bool headless,
-      bool wait_for_all_pipeline_stages_before_draw);
+  GpuDisplayProvider(uint32_t restart_id,
+                     GpuServiceImpl* gpu_service_impl,
+                     scoped_refptr<gpu::CommandBufferTaskExecutor> gpu_service,
+                     gpu::GpuChannelManager* gpu_channel_manager,
+                     ServerSharedBitmapManager* server_shared_bitmap_manager,
+                     bool headless,
+                     bool wait_for_all_pipeline_stages_before_draw);
   ~GpuDisplayProvider() override;
 
   // DisplayProvider implementation.
@@ -67,7 +67,7 @@
 
   const uint32_t restart_id_;
   GpuServiceImpl* const gpu_service_impl_;
-  scoped_refptr<gpu::InProcessCommandBuffer::Service> gpu_service_;
+  scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor_;
   gpu::GpuChannelManagerDelegate* const gpu_channel_manager_delegate_;
   std::unique_ptr<gpu::GpuMemoryBufferManager> gpu_memory_buffer_manager_;
   gpu::ImageFactory* const image_factory_;
diff --git a/components/viz/service/display_embedder/viz_process_context_provider.cc b/components/viz/service/display_embedder/viz_process_context_provider.cc
index 1d192fa8..6e761a8 100644
--- a/components/viz/service/display_embedder/viz_process_context_provider.cc
+++ b/components/viz/service/display_embedder/viz_process_context_provider.cc
@@ -51,16 +51,16 @@
 }  // namespace
 
 VizProcessContextProvider::VizProcessContextProvider(
-    scoped_refptr<gpu::InProcessCommandBuffer::Service> service,
+    scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor,
     gpu::SurfaceHandle surface_handle,
     gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
     gpu::ImageFactory* image_factory,
     gpu::GpuChannelManagerDelegate* gpu_channel_manager_delegate,
     const gpu::SharedMemoryLimits& limits)
     : attributes_(CreateAttributes()),
-      context_(gpu::GLInProcessContext::CreateWithoutInit()),
+      context_(std::make_unique<gpu::GLInProcessContext>()),
       context_result_(
-          context_->Initialize(std::move(service),
+          context_->Initialize(std::move(task_executor),
                                nullptr,
                                (surface_handle == gpu::kNullSurfaceHandle),
                                surface_handle,
@@ -133,15 +133,6 @@
 
 void VizProcessContextProvider::RemoveObserver(ContextLostObserver* obs) {}
 
-uint32_t VizProcessContextProvider::GetCopyTextureInternalFormat() {
-  if (attributes_.alpha_size > 0)
-    return GL_RGBA;
-  DCHECK_NE(attributes_.red_size, 0);
-  DCHECK_NE(attributes_.green_size, 0);
-  DCHECK_NE(attributes_.blue_size, 0);
-  return GL_RGB;
-}
-
 void VizProcessContextProvider::SetUpdateVSyncParametersCallback(
     const gpu::InProcessCommandBuffer::UpdateVSyncParametersCallback&
         callback) {
diff --git a/components/viz/service/display_embedder/viz_process_context_provider.h b/components/viz/service/display_embedder/viz_process_context_provider.h
index a25423e..bd196f8 100644
--- a/components/viz/service/display_embedder/viz_process_context_provider.h
+++ b/components/viz/service/display_embedder/viz_process_context_provider.h
@@ -41,7 +41,7 @@
       public ContextProvider {
  public:
   VizProcessContextProvider(
-      scoped_refptr<gpu::InProcessCommandBuffer::Service> service,
+      scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor,
       gpu::SurfaceHandle surface_handle,
       gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager,
       gpu::ImageFactory* image_factory,
@@ -62,8 +62,6 @@
   void AddObserver(ContextLostObserver* obs) override;
   void RemoveObserver(ContextLostObserver* obs) override;
 
-  uint32_t GetCopyTextureInternalFormat();
-
   void SetUpdateVSyncParametersCallback(
       const gpu::InProcessCommandBuffer::UpdateVSyncParametersCallback&
           callback);
diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc
index 2e7b173..c0dd561 100644
--- a/components/viz/service/main/viz_main_impl.cc
+++ b/components/viz/service/main/viz_main_impl.cc
@@ -297,11 +297,11 @@
 
 void VizMainImpl::CreateFrameSinkManagerInternal(
     mojom::FrameSinkManagerParamsPtr params) {
-  DCHECK(!gpu_command_service_);
+  DCHECK(!task_executor_);
   DCHECK(gpu_service_);
   DCHECK(gpu_thread_task_runner_->BelongsToCurrentThread());
 
-  gpu_command_service_ = base::MakeRefCounted<gpu::GpuInProcessThreadService>(
+  task_executor_ = base::MakeRefCounted<gpu::GpuInProcessThreadService>(
       gpu_thread_task_runner_, gpu_service_->sync_point_manager(),
       gpu_service_->mailbox_manager(), gpu_service_->share_group(),
       gpu_service_->gpu_feature_info(),
@@ -326,7 +326,7 @@
       base::ThreadTaskRunnerHandle::Get());
 
   display_provider_ = std::make_unique<GpuDisplayProvider>(
-      params->restart_id, gpu_service_.get(), gpu_command_service_,
+      params->restart_id, gpu_service_.get(), task_executor_,
       gpu_service_->gpu_channel_manager(), server_shared_bitmap_manager_.get(),
       command_line->HasSwitch(switches::kHeadless),
       command_line->HasSwitch(switches::kRunAllCompositorStagesBeforeDraw));
diff --git a/components/viz/service/main/viz_main_impl.h b/components/viz/service/main/viz_main_impl.h
index ab71e3a..273c74c 100644
--- a/components/viz/service/main/viz_main_impl.h
+++ b/components/viz/service/main/viz_main_impl.h
@@ -159,8 +159,10 @@
   std::unique_ptr<gpu::GpuInit> gpu_init_;
   std::unique_ptr<GpuServiceImpl> gpu_service_;
 
-  // The InCommandCommandBuffer::Service used by the frame sink manager.
-  scoped_refptr<gpu::InProcessCommandBuffer::Service> gpu_command_service_;
+  // This is created for OOP-D only. It allows the display compositor to use
+  // InProcessCommandBuffer to send GPU commands to the GPU thread from the
+  // compositor thread.
+  scoped_refptr<gpu::CommandBufferTaskExecutor> task_executor_;
 
   // If the gpu service is not yet ready then we stash pending
   // FrameSinkManagerParams.
diff --git a/components/zucchini/BUILD.gn b/components/zucchini/BUILD.gn
index 232e6e7..77dc810 100644
--- a/components/zucchini/BUILD.gn
+++ b/components/zucchini/BUILD.gn
@@ -212,6 +212,7 @@
 group("zucchini_fuzzers") {
   testonly = true
   deps = [
+    "//components/zucchini/fuzzers:zucchini_disassembler_dex_fuzzer",
     "//components/zucchini/fuzzers:zucchini_disassembler_win32_fuzzer",
     "//components/zucchini/fuzzers:zucchini_patch_fuzzer",
   ]
@@ -221,6 +222,7 @@
   if (current_toolchain == host_toolchain && !is_win) {
     deps += [
       "//components/zucchini/fuzzers:zucchini_apply_fuzzer",
+      "//components/zucchini/fuzzers:zucchini_imposed_ensemble_matcher_fuzzer",
       "//components/zucchini/fuzzers:zucchini_raw_gen_fuzzer",
       "//components/zucchini/fuzzers:zucchini_ztf_gen_fuzzer",
     ]
diff --git a/components/zucchini/fuzzers/BUILD.gn b/components/zucchini/fuzzers/BUILD.gn
index 51680c3..12964f365 100644
--- a/components/zucchini/fuzzers/BUILD.gn
+++ b/components/zucchini/fuzzers/BUILD.gn
@@ -7,6 +7,20 @@
 
 # To download the corpus for local fuzzing use:
 # gsutil -m rsync \
+#   gs://clusterfuzz-corpus/libfuzzer/zucchini_disassembler_dex_fuzzer \
+#   components/zucchini/fuzzing/testdata/disassembler_dex_fuzzer
+fuzzer_test("zucchini_disassembler_dex_fuzzer") {
+  sources = [
+    "disassembler_dex_fuzzer.cc",
+  ]
+  deps = [
+    "//base",
+    "//components/zucchini:zucchini_lib",
+  ]
+}
+
+# To download the corpus for local fuzzing use:
+# gsutil -m rsync \
 #   gs://clusterfuzz-corpus/libfuzzer/zucchini_disassembler_win32_fuzzer \
 #   components/zucchini/fuzzing/testdata/disassembler_win32_fuzzer
 fuzzer_test("zucchini_disassembler_win32_fuzzer") {
@@ -123,7 +137,14 @@
     ]
   }
 
+  # For Gen fuzzers seeds can be created from this directory with:
+  # python create_seed_file_pair.py <protoc> <old file> <new file> <out file>
+  #   [--imposed=<imposed>]
+
   # Raw Gen Fuzzer:
+  # <old file>: testdata/old.ztf
+  # <new file>: testdata/new.ztf
+  # <out file>: testdata/raw_or_ztf_gen_fuzzer/seed.asciipb
   fuzzer_test("zucchini_raw_gen_fuzzer") {
     sources = [
       "raw_gen_fuzzer.cc",
@@ -138,6 +159,9 @@
   }
 
   # ZTF Gen Fuzzer:
+  # <old file>: testdata/old.ztf
+  # <new file>: testdata/new.ztf
+  # <out file>: testdata/raw_or_ztf_gen_fuzzer/seed.asciipb
   fuzzer_test("zucchini_ztf_gen_fuzzer") {
     sources = [
       "ztf_gen_fuzzer.cc",
@@ -150,4 +174,23 @@
     ]
     seed_corpus = "testdata/raw_or_ztf_gen_fuzzer"
   }
+
+  # Imposed Ensemble Match Fuzzer:
+  # <old file>: testdata/old_imposed_archive.txt
+  # <new file>: testdata/new_imposed_archive.txt
+  # <out file>: testdata/imposed_ensemble_matcher_fuzzer/seed.asciipb
+  # <imposed>: 17+420=388+347,452+420=27+347
+  # This is a mapping of regions old_offset+old_size=new_offset+new_size,...
+  fuzzer_test("zucchini_imposed_ensemble_matcher_fuzzer") {
+    sources = [
+      "imposed_ensemble_matcher_fuzzer.cc",
+    ]
+    deps = [
+      ":zucchini_file_pair_proto",
+      "//base",
+      "//components/zucchini:zucchini_lib",
+      "//third_party/libprotobuf-mutator",
+    ]
+    seed_corpus = "testdata/imposed_ensemble_matcher_fuzzer"
+  }
 }
diff --git a/components/zucchini/fuzzers/create_seed_file_pair.py b/components/zucchini/fuzzers/create_seed_file_pair.py
index a44db7b..4394801c 100755
--- a/components/zucchini/fuzzers/create_seed_file_pair.py
+++ b/components/zucchini/fuzzers/create_seed_file_pair.py
@@ -21,7 +21,6 @@
 
 ABS_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__)))
 PROTO_DEFINITION_FILE = 'file_pair.proto'
-OUTPUT_FORMAT = b'old_file: "{}"\nnew_or_patch_file: "{}"'
 
 def parse_args():
   """Parse commandline args."""
@@ -30,7 +29,11 @@
   parser.add_argument('old_file', help='Old file to generate/apply patch.')
   parser.add_argument('new_or_patch_file',
                       help='New file to generate or patch to apply.')
-  parser.add_argument('output_file', help='File to write binary protobuf to.')
+  parser.add_argument('output_file',
+                      help='File to write binary protobuf to.')
+  parser.add_argument('--imposed_matches',
+                      help='Equivalence matches to impose when generating '
+                      'the patch.')
   return parser.parse_args()
 
 
@@ -45,9 +48,13 @@
 def main():
   args = parse_args()
   # Create an ASCII string representing a protobuf.
-  content = OUTPUT_FORMAT.format(read_to_proto_escaped_string(args.old_file),
-                                 read_to_proto_escaped_string(
-                                     args.new_or_patch_file))
+  content = [b'old_file: "{}"'.format(read_to_proto_escaped_string(
+                                      args.old_file)),
+             b'new_or_patch_file: "{}"'.format(read_to_proto_escaped_string(
+                                               args.new_or_patch_file))]
+
+  if args.imposed_matches:
+    content.append('imposed_matches: "{}"'.format(args.imposed_matches))
 
   # Encode the ASCII protobuf as a binary protobuf.
   ps = subprocess.Popen([args.protoc_path, '--proto_path=%s' % ABS_PATH,
@@ -57,7 +64,7 @@
                         stdout=subprocess.PIPE)
   # Write the string to the subprocess. Single line IO is fine as protoc returns
   # a string.
-  output = ps.communicate(input=content)
+  output = ps.communicate(input=b'\n'.join(content))
   ps.wait()
   if ps.returncode:
     logging.error('Binary protobuf encoding failed.')
diff --git a/components/zucchini/fuzzers/disassembler_dex_fuzzer.cc b/components/zucchini/fuzzers/disassembler_dex_fuzzer.cc
new file mode 100644
index 0000000..5968c98
--- /dev/null
+++ b/components/zucchini/fuzzers/disassembler_dex_fuzzer.cc
@@ -0,0 +1,53 @@
+// 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 <stddef.h>
+#include <stdint.h>
+
+#include "base/logging.h"
+#include "components/zucchini/buffer_view.h"
+#include "components/zucchini/disassembler.h"
+#include "components/zucchini/disassembler_dex.h"
+
+namespace {
+
+struct Environment {
+  Environment() { logging::SetMinLogLevel(logging::LOG_FATAL); }
+};
+
+}  // namespace
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  static Environment env;
+  if (!size)
+    return 0;
+  // Prepare data.
+  std::vector<uint8_t> mutable_data(data, data + size);
+  zucchini::MutableBufferView mutable_image(mutable_data.data(),
+                                            mutable_data.size());
+
+  // Create disassembler. Early exit on failure.
+  auto disassembler_dex =
+      zucchini::Disassembler::Make<zucchini::DisassemblerDex>(
+          zucchini::ConstBufferView(mutable_image));
+  if (!disassembler_dex)
+    return 0;
+
+  std::vector<zucchini::Reference> references;
+  // Read all references in the file.
+  auto groups = disassembler_dex->MakeReferenceGroups();
+  for (const auto& group : groups) {
+    auto reader = group.GetReader(disassembler_dex.get());
+    for (auto ref = reader->GetNext(); ref.has_value();
+         ref = reader->GetNext()) {
+      references.push_back(ref.value());
+    }
+    reader.reset();
+    auto writer = group.GetWriter(mutable_image, disassembler_dex.get());
+    for (const auto& ref : references)
+      writer->PutNext(ref);
+    references.clear();
+  }
+  return 0;
+}
diff --git a/components/zucchini/fuzzers/file_pair.proto b/components/zucchini/fuzzers/file_pair.proto
index 2216381..7fdc908 100644
--- a/components/zucchini/fuzzers/file_pair.proto
+++ b/components/zucchini/fuzzers/file_pair.proto
@@ -6,10 +6,16 @@
 
 package zucchini.fuzzers;
 
-// NEXT_TAG = 3
+// NEXT_TAG = 4
 message FilePair {
   // File to generate patch from or apply patch to.
   required bytes old_file = 1;
   // New file to generate patch or the patch to apply.
   required bytes new_or_patch_file = 2;
+  // Imposed matches to apply to the equivalence matches.
+  // Should be of the format:
+  //   "#+#=#+#,#+#=#+#,..." (e.g., "1+2=3+4", "1+2=3+4,5+6=7+8"),
+  // where "#+#=#+#" encodes a match as 4 unsigned integers:
+  //   [offset in "old", size in "old", offset in "new", size in "new"].
+  optional string imposed_matches = 3;
 }
diff --git a/components/zucchini/fuzzers/imposed_ensemble_matcher_fuzzer.cc b/components/zucchini/fuzzers/imposed_ensemble_matcher_fuzzer.cc
new file mode 100644
index 0000000..5c129a3
--- /dev/null
+++ b/components/zucchini/fuzzers/imposed_ensemble_matcher_fuzzer.cc
@@ -0,0 +1,72 @@
+// 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 <stdint.h>
+
+#include <iostream>
+#include <memory>
+
+#include "base/environment.h"
+#include "base/logging.h"
+#include "components/zucchini/buffer_sink.h"
+#include "components/zucchini/buffer_view.h"
+#include "components/zucchini/fuzzers/file_pair.pb.h"
+#include "components/zucchini/patch_writer.h"
+#include "components/zucchini/zucchini.h"
+#include "testing/libfuzzer/proto/lpm_interface.h"
+
+namespace {
+
+constexpr size_t kMinImageSize = 16;
+constexpr size_t kMaxImageSize = 1024;
+
+}  // namespace
+
+struct Environment {
+  Environment() {
+    logging::SetMinLogLevel(logging::LOG_FATAL);  // Disable console spamming.
+  }
+};
+
+DEFINE_BINARY_PROTO_FUZZER(const zucchini::fuzzers::FilePair& file_pair) {
+  static Environment env;
+  // Dump code for debugging.
+  if (base::Environment::Create()->HasVar("LPM_DUMP_NATIVE_INPUT")) {
+    std::cout << "Imposed Matches: " << file_pair.imposed_matches() << std::endl
+              << "Old File: " << file_pair.old_file() << std::endl
+              << "New File: " << file_pair.new_or_patch_file() << std::endl;
+  }
+
+  // Prepare data.
+  zucchini::ConstBufferView old_image(
+      reinterpret_cast<const uint8_t*>(file_pair.old_file().data()),
+      file_pair.old_file().size());
+  zucchini::ConstBufferView new_image(
+      reinterpret_cast<const uint8_t*>(file_pair.new_or_patch_file().data()),
+      file_pair.new_or_patch_file().size());
+
+  // Restrict image sizes to speed up fuzzing.
+  if (old_image.size() < kMinImageSize || old_image.size() > kMaxImageSize ||
+      new_image.size() < kMinImageSize || new_image.size() > kMaxImageSize) {
+    return;
+  }
+
+  // Generate a patch writer.
+  zucchini::EnsemblePatchWriter patch_writer(old_image, new_image);
+
+  // Fuzz Target.
+  zucchini::GenerateBufferImposed(old_image, new_image,
+                                  file_pair.imposed_matches(), &patch_writer);
+
+  // Check that the patch size is sane. Crash the fuzzer if this isn't the case,
+  // as it is a failure in Zucchini's patch performance that is worth
+  // investigating.
+  size_t patch_size = patch_writer.SerializedSize();
+  CHECK_LE(patch_size, kMaxImageSize * 2);
+
+  // Write to buffer to avoid IO.
+  std::unique_ptr<uint8_t[]> patch_data(new uint8_t[patch_size]);
+  zucchini::BufferSink patch(patch_data.get(), patch_size);
+  patch_writer.SerializeInto(patch);
+}
diff --git a/components/zucchini/fuzzers/testdata/imposed_ensemble_matcher_fuzzer/seed.asciipb b/components/zucchini/fuzzers/testdata/imposed_ensemble_matcher_fuzzer/seed.asciipb
new file mode 100644
index 0000000..abbadd2
--- /dev/null
+++ b/components/zucchini/fuzzers/testdata/imposed_ensemble_matcher_fuzzer/seed.asciipb
@@ -0,0 +1,90 @@
+
+ˆABCDEFGHIJKLMNOP
+ZTxt
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{3,4} [4,5] (90,08)
+(1,4)
+[+001, +001]
+References {-004,-003}, <001,001>, [98,78]
+(+01,+00)
+AAAAAAAAA
+
+BLOCK2
+{06,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+Old bytes live here as this is reasonable.
+txTZ
+Hello, World!
+ZTxt
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{3,4} [4,5] (90,08)
+(1,4)
+[+001, +001]
+References {-004,-003}, <001,001>, [98,78]
+(+01,+00)
+AAAAAAAAA
+
+BLOCK2
+{06,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+Old bytes live here as this is reasonable.
+txTZ
+Yet another gap for Raw Zucchini
+„ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ZTxt
+BLOCK2
+{20,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{4,4} [5,8] (90,08)
+(1,4)
+[+001, +001]
+References {-005,-006}, <001,002>, [98,78]
+(+01,+04)
+AAAAAAAAA
+
+Other new bytes.
+
+Old bytes live here as this is reasonable.
+New bytes live here.
+txTZ
+Hello, World!
+ZTxt
+BLOCK2
+{20,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{4,4} [5,8] (90,08)
+(1,4)
+[+001, +001]
+References {-005,-006}, <001,002>, [98,78]
+(+01,+04)
+AAAAAAAAA
+
+Other new bytes.
+
+Old bytes live here as this is reasonable.
+New bytes live here.
+txTZ
+Yet yet another gap for Raw Zucchini
+17+420=388+347,452+420=27+347
\ No newline at end of file
diff --git a/components/zucchini/fuzzers/testdata/new_imposed_archive.txt b/components/zucchini/fuzzers/testdata/new_imposed_archive.txt
new file mode 100644
index 0000000..5ce6f709
--- /dev/null
+++ b/components/zucchini/fuzzers/testdata/new_imposed_archive.txt
@@ -0,0 +1,43 @@
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ZTxt
+BLOCK2
+{20,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{4,4} [5,8] (90,08)
+(1,4)
+[+001, +001]
+References {-005,-006}, <001,002>, [98,78]
+(+01,+04)
+AAAAAAAAA
+
+Other new bytes.
+
+Old bytes live here as this is reasonable.
+New bytes live here.
+txTZ
+Hello, World!
+ZTxt
+BLOCK2
+{20,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{4,4} [5,8] (90,08)
+(1,4)
+[+001, +001]
+References {-005,-006}, <001,002>, [98,78]
+(+01,+04)
+AAAAAAAAA
+
+Other new bytes.
+
+Old bytes live here as this is reasonable.
+New bytes live here.
+txTZ
+Yet yet another gap for Raw Zucchini
diff --git a/components/zucchini/fuzzers/testdata/old_imposed_archive.txt b/components/zucchini/fuzzers/testdata/old_imposed_archive.txt
new file mode 100644
index 0000000..e4daa3f
--- /dev/null
+++ b/components/zucchini/fuzzers/testdata/old_imposed_archive.txt
@@ -0,0 +1,45 @@
+ABCDEFGHIJKLMNOP
+ZTxt
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{3,4} [4,5] (90,08)
+(1,4)
+[+001, +001]
+References {-004,-003}, <001,001>, [98,78]
+(+01,+00)
+AAAAAAAAA
+
+BLOCK2
+{06,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+Old bytes live here as this is reasonable.
+txTZ
+Hello, World!
+ZTxt
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+ZucZucZucZucZucZucZucZucZuc
+BLOCK1
+Lorem Ipsum, Ipsum Lorem, Alpha Beta Gamma <1,1>
+{3,4} [4,5] (90,08)
+(1,4)
+[+001, +001]
+References {-004,-003}, <001,001>, [98,78]
+(+01,+00)
+AAAAAAAAA
+
+BLOCK2
+{06,01} Another block. Lorem Ipsum, Ipsum, Ipsum
+<><><><><>{}{}{}{}[][][]()()()()
+[4,1]
+
+Old bytes live here as this is reasonable.
+txTZ
+Yet another gap for Raw Zucchini
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc
index 4e4d681..24352338 100644
--- a/content/browser/loader/resource_loader.cc
+++ b/content/browser/loader/resource_loader.cc
@@ -818,7 +818,6 @@
                          TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
 
   DVLOG(1) << "ResponseCompleted: " << request_->url().spec();
-  RecordHistograms();
 
   ScopedDeferral scoped_deferral(this, DEFERRED_FINISH);
   handler_->OnResponseCompleted(request_->status(),
@@ -831,71 +830,6 @@
   delegate_->DidFinishLoading(this);
 }
 
-void ResourceLoader::RecordHistograms() {
-  ResourceRequestInfoImpl* info = GetRequestInfo();
-  if (request_->response_info().network_accessed) {
-    if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) {
-      UMA_HISTOGRAM_ENUMERATION("Net.HttpResponseInfo.ConnectionInfo.MainFrame",
-                                request_->response_info().connection_info,
-                                net::HttpResponseInfo::NUM_OF_CONNECTION_INFOS);
-    } else {
-      UMA_HISTOGRAM_ENUMERATION(
-          "Net.HttpResponseInfo.ConnectionInfo.SubResource",
-          request_->response_info().connection_info,
-          net::HttpResponseInfo::NUM_OF_CONNECTION_INFOS);
-    }
-  }
-
-  if (request_->load_flags() & net::LOAD_PREFETCH) {
-    // Note that RESOURCE_TYPE_PREFETCH requests are a subset of
-    // net::LOAD_PREFETCH requests. In the histograms below, "Prefetch" means
-    // RESOURCE_TYPE_PREFETCH and "LoadPrefetch" means net::LOAD_PREFETCH.
-    bool is_resource_type_prefetch =
-        info->GetResourceType() == RESOURCE_TYPE_PREFETCH;
-    PrefetchStatus prefetch_status = STATUS_UNDEFINED;
-    TimeDelta total_time = base::TimeTicks::Now() - request_->creation_time();
-
-    switch (request_->status().status()) {
-      case net::URLRequestStatus::SUCCESS:
-        if (request_->was_cached()) {
-          prefetch_status = request_->response_info().unused_since_prefetch
-                                ? STATUS_SUCCESS_ALREADY_PREFETCHED
-                                : STATUS_SUCCESS_FROM_CACHE;
-          if (is_resource_type_prefetch) {
-            UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentPrefetchingFromCache",
-                                total_time);
-          }
-        } else {
-          prefetch_status = STATUS_SUCCESS_FROM_NETWORK;
-          if (is_resource_type_prefetch) {
-            UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentPrefetchingFromNetwork",
-                                total_time);
-          }
-        }
-        break;
-      case net::URLRequestStatus::CANCELED:
-        prefetch_status = STATUS_CANCELED;
-        if (is_resource_type_prefetch)
-          UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeBeforeCancel", total_time);
-        break;
-      case net::URLRequestStatus::IO_PENDING:
-      case net::URLRequestStatus::FAILED:
-        prefetch_status = STATUS_UNDEFINED;
-        break;
-    }
-
-    UMA_HISTOGRAM_ENUMERATION("Net.LoadPrefetch.Pattern", prefetch_status,
-                              STATUS_MAX);
-    if (is_resource_type_prefetch) {
-      UMA_HISTOGRAM_ENUMERATION("Net.Prefetch.Pattern", prefetch_status,
-                                STATUS_MAX);
-    }
-  } else if (request_->response_info().unused_since_prefetch) {
-    TimeDelta total_time = base::TimeTicks::Now() - request_->creation_time();
-    UMA_HISTOGRAM_TIMES("Net.Prefetch.TimeSpentOnPrefetchHit", total_time);
-  }
-}
-
 void ResourceLoader::SetRawResponseHeaders(
     scoped_refptr<const net::HttpResponseHeaders> headers) {
   raw_response_headers_ = headers;
diff --git a/content/browser/loader/resource_loader.h b/content/browser/loader/resource_loader.h
index 9fef84a..bbd241e2 100644
--- a/content/browser/loader/resource_loader.h
+++ b/content/browser/loader/resource_loader.h
@@ -121,7 +121,6 @@
   void CompleteRead(int bytes_read);
   void ResponseCompleted();
   void CallDidFinishLoading();
-  void RecordHistograms();
   void SetRawResponseHeaders(
       scoped_refptr<const net::HttpResponseHeaders> headers);
 
diff --git a/content/browser/renderer_host/media/media_devices_manager.cc b/content/browser/renderer_host/media/media_devices_manager.cc
index 9b5318f..93c8f2b 100644
--- a/content/browser/renderer_host/media/media_devices_manager.cc
+++ b/content/browser/renderer_host/media/media_devices_manager.cc
@@ -804,6 +804,12 @@
   bool need_update_device_change_subscribers = false;
   MediaDeviceInfoArray& old_snapshot = current_snapshot_[type];
 
+  if (old_snapshot.size() != new_snapshot.size() &&
+      (type == MEDIA_DEVICE_TYPE_AUDIO_INPUT ||
+       type == MEDIA_DEVICE_TYPE_VIDEO_INPUT)) {
+    StopRemovedDevices(type, new_snapshot);
+  }
+
   // Update the cached snapshot and send notifications only if the device list
   // has changed.
   if (old_snapshot.size() != new_snapshot.size() ||
@@ -893,7 +899,7 @@
   DoEnumerateDevices(type);
 }
 
-void MediaDevicesManager::NotifyMediaStreamManager(
+void MediaDevicesManager::StopRemovedDevices(
     MediaDeviceType type,
     const MediaDeviceInfoArray& new_snapshot) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
@@ -914,6 +920,17 @@
     if (it == new_snapshot.end())
       media_stream_manager_->StopRemovedDevice(type, old_device_info);
   }
+}
+
+void MediaDevicesManager::NotifyMediaStreamManager(
+    MediaDeviceType type,
+    const MediaDeviceInfoArray& new_snapshot) {
+  DCHECK_CURRENTLY_ON(BrowserThread::IO);
+  DCHECK(type == MEDIA_DEVICE_TYPE_AUDIO_INPUT ||
+         type == MEDIA_DEVICE_TYPE_VIDEO_INPUT);
+
+  if (!media_stream_manager_)
+    return;
 
   media_stream_manager_->NotifyDevicesChanged(type, new_snapshot);
 }
diff --git a/content/browser/renderer_host/media/media_devices_manager.h b/content/browser/renderer_host/media/media_devices_manager.h
index a6696e0..c0f7ae126 100644
--- a/content/browser/renderer_host/media/media_devices_manager.h
+++ b/content/browser/renderer_host/media/media_devices_manager.h
@@ -223,6 +223,8 @@
 
   // Helpers to handle device-change notification.
   void HandleDevicesChanged(MediaDeviceType type);
+  void StopRemovedDevices(MediaDeviceType type,
+                          const MediaDeviceInfoArray& new_snapshot);
   void NotifyMediaStreamManager(MediaDeviceType type,
                                 const MediaDeviceInfoArray& new_snapshot);
   void NotifyDeviceChangeSubscribers(MediaDeviceType type,
diff --git a/content/renderer/loader/web_url_loader_impl_unittest.cc b/content/renderer/loader/web_url_loader_impl_unittest.cc
index f862bec34..9ce6164 100644
--- a/content/renderer/loader/web_url_loader_impl_unittest.cc
+++ b/content/renderer/loader/web_url_loader_impl_unittest.cc
@@ -39,6 +39,7 @@
 #include "services/network/public/mojom/request_context_frame_type.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
+#include "third_party/blink/public/platform/web_data.h"
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/public/platform/web_url_error.h"
 #include "third_party/blink/public/platform/web_url_loader_client.h"
diff --git a/content/renderer/loader/web_url_request_util.cc b/content/renderer/loader/web_url_request_util.cc
index 4202eb6b..bceb21b 100644
--- a/content/renderer/loader/web_url_request_util.cc
+++ b/content/renderer/loader/web_url_request_util.cc
@@ -30,6 +30,7 @@
 #include "third_party/blink/public/platform/modules/fetch/fetch_api_request.mojom-shared.h"
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/web_data.h"
+#include "third_party/blink/public/platform/web_http_body.h"
 #include "third_party/blink/public/platform/web_http_header_visitor.h"
 #include "third_party/blink/public/platform/web_mixed_content.h"
 #include "third_party/blink/public/platform/web_string.h"
diff --git a/content/renderer/media_recorder/media_recorder_handler.cc b/content/renderer/media_recorder/media_recorder_handler.cc
index 15f2d8f..8e5f6b1 100644
--- a/content/renderer/media_recorder/media_recorder_handler.cc
+++ b/content/renderer/media_recorder/media_recorder_handler.cc
@@ -123,8 +123,8 @@
     scoped_refptr<base::SingleThreadTaskRunner> task_runner)
     : video_bits_per_second_(0),
       audio_bits_per_second_(0),
-      video_codec_id_(VideoTrackRecorder::CodecId::VP8),
-      audio_codec_id_(AudioTrackRecorder::CodecId::OPUS),
+      video_codec_id_(VideoTrackRecorder::CodecId::LAST),
+      audio_codec_id_(AudioTrackRecorder::CodecId::LAST),
       recording_(false),
       client_(nullptr),
       task_runner_(std::move(task_runner)),
@@ -399,6 +399,72 @@
   scoped_callbacks.PassCallbacks()->OnSuccess(std::move(info));
 }
 
+blink::WebString MediaRecorderHandler::ActualMimeType() {
+  DCHECK(main_render_thread_checker_.CalledOnValidThread());
+  DCHECK(client_) << __func__ << " should be called after Initialize()";
+
+  const bool has_video_tracks = !media_stream_.VideoTracks().empty();
+  const bool has_audio_tracks = !media_stream_.AudioTracks().empty();
+  if (!has_video_tracks && !has_audio_tracks)
+    return blink::WebString();
+
+  std::string mime_type;
+  if (!has_video_tracks && has_audio_tracks) {
+    mime_type.append("audio/webm;codecs=");
+  } else {
+    switch (video_codec_id_) {
+      case VideoTrackRecorder::CodecId::VP8:
+      case VideoTrackRecorder::CodecId::VP9:
+        mime_type.append("video/webm;codecs=");
+        break;
+#if BUILDFLAG(RTC_USE_H264)
+      case VideoTrackRecorder::CodecId::H264:
+        mime_type.append("video/x-matroska;codecs=");
+        break;
+#endif
+      case VideoTrackRecorder::CodecId::LAST:
+        // Do nothing.
+        break;
+    }
+  }
+  if (has_video_tracks) {
+    switch (video_codec_id_) {
+      case VideoTrackRecorder::CodecId::VP8:
+        mime_type.append("vp8");
+        break;
+      case VideoTrackRecorder::CodecId::VP9:
+        mime_type.append("vp9");
+        break;
+#if BUILDFLAG(RTC_USE_H264)
+      case VideoTrackRecorder::CodecId::H264:
+        mime_type.append("avc1");
+        break;
+#endif
+      case VideoTrackRecorder::CodecId::LAST:
+        DCHECK_NE(audio_codec_id_, AudioTrackRecorder::CodecId::LAST);
+    }
+  }
+  if (has_video_tracks && has_audio_tracks) {
+    if (video_codec_id_ != VideoTrackRecorder::CodecId::LAST &&
+        audio_codec_id_ != AudioTrackRecorder::CodecId::LAST) {
+      mime_type.append(",");
+    }
+  }
+  if (has_audio_tracks) {
+    switch (audio_codec_id_) {
+      case AudioTrackRecorder::CodecId::OPUS:
+        mime_type.append("opus");
+        break;
+      case AudioTrackRecorder::CodecId::PCM:
+        mime_type.append("pcm");
+        break;
+      case AudioTrackRecorder::CodecId::LAST:
+        DCHECK_NE(video_codec_id_, VideoTrackRecorder::CodecId::LAST);
+    }
+  }
+  return blink::WebString::FromUTF8(mime_type);
+}
+
 void MediaRecorderHandler::OnEncodedVideo(
     const media::WebmMuxer::VideoParameters& params,
     std::unique_ptr<std::string> encoded_data,
diff --git a/content/renderer/media_recorder/media_recorder_handler.h b/content/renderer/media_recorder/media_recorder_handler.h
index bffe011..59381c54 100644
--- a/content/renderer/media_recorder/media_recorder_handler.h
+++ b/content/renderer/media_recorder/media_recorder_handler.h
@@ -67,6 +67,7 @@
   void EncodingInfo(
       const blink::WebMediaConfiguration& configuration,
       std::unique_ptr<blink::WebMediaCapabilitiesQueryCallbacks> cb) override;
+  blink::WebString ActualMimeType() override;
 
  private:
   friend class MediaRecorderHandlerTest;
diff --git a/content/renderer/media_recorder/media_recorder_handler_unittest.cc b/content/renderer/media_recorder/media_recorder_handler_unittest.cc
index 8297544..06d61dd 100644
--- a/content/renderer/media_recorder/media_recorder_handler_unittest.cc
+++ b/content/renderer/media_recorder/media_recorder_handler_unittest.cc
@@ -65,11 +65,12 @@
     {true, false, "video/webm", "vp8", true},
     {true, false, "video/webm", "vp9", true},
 #if BUILDFLAG(RTC_USE_H264)
-    {true, false, "video/webm", "h264", false},
+    {true, false, "video/x-matroska", "avc1", false},
 #endif
     {false, true, "audio/webm", "opus", true},
     {false, true, "audio/webm", "", true},  // Should default to opus.
     {false, true, "audio/webm", "pcm", true},
+    {true, true, "video/webm", "vp9,opus", true},
 };
 
 class MediaRecorderHandlerTest : public TestWithParam<MediaRecorderTestParams>,
@@ -429,6 +430,29 @@
     run_loop.Run();
   }
 
+  // Expect a last call on destruction, with size 0 and |lastInSlice| true.
+  EXPECT_CALL(*this, WriteData(nullptr, 0, true, _)).Times(1);
+  media_recorder_handler_.reset();
+}
+
+// Checks the ActualMimeType() versus the expected.
+TEST_P(MediaRecorderHandlerTest, ActualMimeType) {
+  AddTracks();
+  const WebString mime_type(WebString::FromASCII(GetParam().mime_type));
+  const WebString codecs(WebString::FromASCII(GetParam().codecs));
+  EXPECT_TRUE(media_recorder_handler_->Initialize(this, registry_.test_stream(),
+                                                  mime_type, codecs, 0, 0));
+
+  std::string actual_mime_type(GetParam().mime_type);
+  actual_mime_type.append(";codecs=");
+  if (strlen(GetParam().codecs) != 0u)
+    actual_mime_type.append(GetParam().codecs);
+  else if (GetParam().has_video)
+    actual_mime_type.append("vp8");
+  else if (GetParam().has_audio)
+    actual_mime_type.append("opus");
+
+  EXPECT_EQ(media_recorder_handler_->ActualMimeType().Utf8(), actual_mime_type);
 
   // Expect a last call on destruction, with size 0 and |lastInSlice| true.
   EXPECT_CALL(*this, WriteData(nullptr, 0, true, _)).Times(1);
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 69ec1808..065ac36a 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -180,6 +180,7 @@
 #include "third_party/blink/public/platform/url_conversion.h"
 #include "third_party/blink/public/platform/web_data.h"
 #include "third_party/blink/public/platform/web_focus_type.h"
+#include "third_party/blink/public/platform/web_http_body.h"
 #include "third_party/blink/public/platform/web_keyboard_event.h"
 #include "third_party/blink/public/platform/web_media_player.h"
 #include "third_party/blink/public/platform/web_media_player_source.h"
@@ -814,6 +815,10 @@
 
 // Creates a fully functional DocumentState in the case where we have
 // pending_navigation_params_ available in the RenderFrameImpl.
+// TODO(ahemery): This currently removes the callback from the pending params
+// which is a bit counterintuitive. We would like to leave
+// pending_navigation_params in a valid state. Callback should probably not be
+// a part of PendingNavigationParams.
 std::unique_ptr<DocumentState> BuildDocumentStateFromPending(
     PendingNavigationParams* pending_navigation_params) {
   std::unique_ptr<DocumentState> document_state(new DocumentState());
@@ -2528,10 +2533,8 @@
   // Make sure we never show errors in view source mode.
   frame_->EnableViewSourceMode(false);
 
-  DocumentState* document_state =
-      DocumentState::FromDocumentLoader(document_loader);
-  NavigationStateImpl* navigation_state =
-      static_cast<NavigationStateImpl*>(document_state->navigation_state());
+  NavigationStateImpl* navigation_state = static_cast<NavigationStateImpl*>(
+      DocumentState::FromDocumentLoader(document_loader)->navigation_state());
 
   // If this is a failed back/forward/reload navigation, then we need to do a
   // 'replace' load.  This is necessary to avoid messing up session history.
@@ -2548,9 +2551,13 @@
         CommitNavigationCallback()));
   }
 
-  // Load an error page.
+  std::unique_ptr<DocumentState> document_state;
+  if (pending_navigation_params_)
+    document_state =
+        BuildDocumentStateFromPending(pending_navigation_params_.get());
+
   LoadNavigationErrorPage(failed_request, error, replace, nullptr,
-                          error_page_content);
+                          error_page_content, std::move(document_state));
 }
 
 void RenderFrameImpl::LoadNavigationErrorPage(
@@ -2558,7 +2565,8 @@
     const WebURLError& error,
     bool replace,
     HistoryEntry* entry,
-    const base::Optional<std::string>& error_page_content) {
+    const base::Optional<std::string>& error_page_content,
+    std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data) {
   blink::WebFrameLoadType frame_load_type =
       entry ? blink::WebFrameLoadType::kBackForward
             : blink::WebFrameLoadType::kStandard;
@@ -2577,7 +2585,8 @@
     const blink::WebHistoryItem& blank_history_item = blink::WebHistoryItem();
     frame_load_type = blink::WebFrameLoadType::kStandard;
     LoadNavigationErrorPageInternal("", GURL("data:,"), WebURL(), replace,
-                                    frame_load_type, blank_history_item);
+                                    frame_load_type, blank_history_item,
+                                    std::move(navigation_data));
     return;
   }
 
@@ -2592,7 +2601,7 @@
   }
   LoadNavigationErrorPageInternal(error_html, GURL(kUnreachableWebDataURL),
                                   error.url(), replace, frame_load_type,
-                                  history_item);
+                                  history_item, std::move(navigation_data));
 }
 
 void RenderFrameImpl::LoadNavigationErrorPageForHttpStatusError(
@@ -2600,7 +2609,8 @@
     const GURL& unreachable_url,
     int http_status,
     bool replace,
-    HistoryEntry* entry) {
+    HistoryEntry* entry,
+    std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data) {
   blink::WebFrameLoadType frame_load_type =
       entry ? blink::WebFrameLoadType::kBackForward
             : blink::WebFrameLoadType::kStandard;
@@ -2610,9 +2620,10 @@
   std::string error_html;
   GetContentClient()->renderer()->PrepareErrorPageForHttpStatusError(
       this, failed_request, unreachable_url, http_status, &error_html, nullptr);
+  std::unique_ptr<DocumentState> document_state(BuildDocumentState());
   LoadNavigationErrorPageInternal(error_html, GURL(kUnreachableWebDataURL),
                                   unreachable_url, replace, frame_load_type,
-                                  history_item);
+                                  history_item, std::move(document_state));
 }
 
 void RenderFrameImpl::LoadNavigationErrorPageInternal(
@@ -2621,11 +2632,12 @@
     const GURL& error_url,
     bool replace,
     blink::WebFrameLoadType frame_load_type,
-    const blink::WebHistoryItem& history_item) {
+    const blink::WebHistoryItem& history_item,
+    std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data) {
   frame_->CommitDataNavigation(error_html, WebString::FromUTF8("text/html"),
                                WebString::FromUTF8("UTF-8"), error_page_url,
                                error_url, replace, frame_load_type,
-                               history_item, false);
+                               history_item, false, std::move(navigation_data));
 }
 
 void RenderFrameImpl::DidMeaningfulLayout(
@@ -3028,6 +3040,8 @@
       new PendingNavigationParams(common_params, request_params,
                                   base::TimeTicks::Now(), std::move(callback)));
   PrepareFrameForCommit();
+  std::unique_ptr<DocumentState> document_state(
+      BuildDocumentStateFromPending(pending_navigation_params_.get()));
 
   blink::WebFrameLoadType load_type = NavigationTypeToLoadType(
       common_params.navigation_type, common_params.should_replace_current_entry,
@@ -3063,14 +3077,15 @@
 #endif
     if (is_main_frame_ && should_load_data_url) {
       LoadDataURL(common_params, request_params, frame_, load_type,
-                  item_for_history_navigation, is_client_redirect);
+                  item_for_history_navigation, is_client_redirect,
+                  std::move(document_state));
     } else {
       WebURLRequest request = CreateURLRequestForCommit(
           common_params, request_params, std::move(url_loader_client_endpoints),
           head);
-
       frame_->CommitNavigation(request, load_type, item_for_history_navigation,
-                               is_client_redirect, devtools_navigation_token);
+                               is_client_redirect, devtools_navigation_token,
+                               std::move(document_state));
       // The commit can result in this frame being removed. Use a
       // WeakPtr as an easy way to detect whether this has occured. If so, this
       // method should return immediately and not touch any part of the object,
@@ -3230,8 +3245,10 @@
   // GetProvisionalDocumentLoader(), LoadNavigationErrorPage wasn't called, so
   // do it now.
   if (request_params.nav_entry_id != 0 || !had_provisional_document_loader) {
+    std::unique_ptr<DocumentState> document_state(
+        BuildDocumentStateFromPending(pending_navigation_params_.get()));
     LoadNavigationErrorPage(failed_request, error, replace, history_entry.get(),
-                            error_page_content);
+                            error_page_content, std::move(document_state));
     if (!weak_this)
       return;
   }
@@ -3930,15 +3947,13 @@
       std::move(pending_navigation_params_));
   bool has_pending_params = pending_navigation_params.get();
 
-  DCHECK(!DocumentState::FromDocumentLoader(document_loader));
-  std::unique_ptr<DocumentState> document_state;
-  if (has_pending_params) {
-    document_state =
-        BuildDocumentStateFromPending(pending_navigation_params.get());
-  } else {
-    document_state = BuildDocumentState();
+  DocumentState* document_state =
+      DocumentState::FromDocumentLoader(document_loader);
+  if (!document_state) {
+    // This is either a placeholder document loader or an initial empty
+    // document.
+    document_loader->SetExtraData(BuildDocumentState());
   }
-  document_loader->SetExtraData(std::move(document_state));
 
   // Set the navigation start time in blink.
   document_loader->SetNavigationStartTime(
@@ -4383,9 +4398,10 @@
   int http_status_code = internal_data->http_status_code();
   if (GetContentClient()->renderer()->HasErrorPage(http_status_code)) {
     // This call may run scripts, e.g. via the beforeunload event.
+    std::unique_ptr<DocumentState> document_state(BuildDocumentState());
     LoadNavigationErrorPageForHttpStatusError(
         frame_->GetDocumentLoader()->GetRequest(), frame_->GetDocument().Url(),
-        http_status_code, true, nullptr);
+        http_status_code, true, nullptr, std::move(document_state));
   }
   // Do not use |this| or |frame_| here without checking |weak_self|.
 }
@@ -6805,7 +6821,8 @@
     WebLocalFrame* frame,
     blink::WebFrameLoadType load_type,
     blink::WebHistoryItem item_for_history_navigation,
-    bool is_client_redirect) {
+    bool is_client_redirect,
+    std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data) {
   // A loadData request with a specified base URL.
   GURL data_url = params.url;
 #if defined(OS_ANDROID)
@@ -6835,7 +6852,8 @@
         WebString::FromUTF8(charset), base_url,
         // Needed so that history-url-only changes don't become reloads.
         params.history_url_for_data_url, replace, load_type,
-        item_for_history_navigation, is_client_redirect);
+        item_for_history_navigation, is_client_redirect,
+        std::move(navigation_data));
   } else {
     CHECK(false) << "Invalid URL passed: "
                  << params.url.possibly_invalid_spec();
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 3247ec5c..77e9f54 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -1136,20 +1136,23 @@
       const blink::WebURLError& error,
       bool replace,
       HistoryEntry* entry,
-      const base::Optional<std::string>& error_page_content);
+      const base::Optional<std::string>& error_page_content,
+      std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data);
   void LoadNavigationErrorPageForHttpStatusError(
       const blink::WebURLRequest& failed_request,
       const GURL& unreachable_url,
       int http_status,
       bool replace,
-      HistoryEntry* entry);
+      HistoryEntry* entry,
+      std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data);
   void LoadNavigationErrorPageInternal(
       const std::string& error_html,
       const GURL& error_page_url,
       const GURL& error_url,
       bool replace,
       blink::WebFrameLoadType frame_load_type,
-      const blink::WebHistoryItem& history_item);
+      const blink::WebHistoryItem& history_item,
+      std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data);
 
   void HandleJavascriptExecutionResult(const base::string16& javascript,
                                        int id,
@@ -1170,12 +1173,14 @@
   void BeginNavigation(const NavigationPolicyInfo& info);
 
   // Loads a data url.
-  void LoadDataURL(const CommonNavigationParams& params,
-                   const RequestNavigationParams& request_params,
-                   blink::WebLocalFrame* frame,
-                   blink::WebFrameLoadType load_type,
-                   blink::WebHistoryItem item_for_history_navigation,
-                   bool is_client_redirect);
+  void LoadDataURL(
+      const CommonNavigationParams& params,
+      const RequestNavigationParams& request_params,
+      blink::WebLocalFrame* frame,
+      blink::WebFrameLoadType load_type,
+      blink::WebHistoryItem item_for_history_navigation,
+      bool is_client_redirect,
+      std::unique_ptr<blink::WebDocumentLoader::ExtraData> navigation_data);
 
   // Sends a proper FrameHostMsg_DidFailProvisionalLoadWithError_Params IPC for
   // the failed request |request|.
diff --git a/content/renderer/service_worker/service_worker_context_client.cc b/content/renderer/service_worker/service_worker_context_client.cc
index 803f06ec..b037e53 100644
--- a/content/renderer/service_worker/service_worker_context_client.cc
+++ b/content/renderer/service_worker/service_worker_context_client.cc
@@ -77,6 +77,7 @@
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/url_conversion.h"
 #include "third_party/blink/public/platform/web_blob_registry.h"
+#include "third_party/blink/public/platform/web_http_body.h"
 #include "third_party/blink/public/platform/web_referrer_policy.h"
 #include "third_party/blink/public/platform/web_security_origin.h"
 #include "third_party/blink/public/platform/web_string.h"
diff --git a/content/renderer/service_worker/worker_fetch_context_impl.cc b/content/renderer/service_worker/worker_fetch_context_impl.cc
index 5de9b0a2..2e3524a 100644
--- a/content/renderer/service_worker/worker_fetch_context_impl.cc
+++ b/content/renderer/service_worker/worker_fetch_context_impl.cc
@@ -28,6 +28,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/mojom/service_worker/service_worker_object.mojom.h"
+#include "third_party/blink/public/platform/web_security_origin.h"
 
 namespace content {
 
diff --git a/content/shell/renderer/layout_test/blink_test_runner.cc b/content/shell/renderer/layout_test/blink_test_runner.cc
index 0e08354..ec69fb6 100644
--- a/content/shell/renderer/layout_test/blink_test_runner.cc
+++ b/content/shell/renderer/layout_test/blink_test_runner.cc
@@ -852,7 +852,7 @@
   main_frame->CommitNavigation(WebURLRequest(GURL(url::kAboutBlankURL)),
                                blink::WebFrameLoadType::kStandard,
                                blink::WebHistoryItem(), false,
-                               base::UnguessableToken::Create());
+                               base::UnguessableToken::Create(), nullptr);
   Send(new ShellViewHostMsg_ResetDone(routing_id()));
 }
 
diff --git a/device/fido/authenticator_supported_options.h b/device/fido/authenticator_supported_options.h
index 5aa5be7a..0c6bed03 100644
--- a/device/fido/authenticator_supported_options.h
+++ b/device/fido/authenticator_supported_options.h
@@ -72,7 +72,8 @@
   bool user_presence_required_ = true;
   // Represents whether client pin in set and stored in device. Set as null
   // optional if client pin capability is not supported by the authenticator.
-  ClientPinAvailability client_pin_availability_;
+  ClientPinAvailability client_pin_availability_ =
+      ClientPinAvailability::kNotSupported;
 
   DISALLOW_COPY_AND_ASSIGN(AuthenticatorSupportedOptions);
 };
diff --git a/extensions/browser/api/web_request/web_request_permissions.cc b/extensions/browser/api/web_request/web_request_permissions.cc
index d261e95f..d9ca827 100644
--- a/extensions/browser/api/web_request/web_request_permissions.cc
+++ b/extensions/browser/api/web_request/web_request_permissions.cc
@@ -102,7 +102,9 @@
       // https://crbug.com/831812
       origin.host() == "sync-confirmation" ||
       // https://crbug.com/831813
-      origin.host() == "inspect";
+      origin.host() == "inspect" ||
+      // https://crbug.com/859345
+      origin.host() == "downloads";
 }
 
 PermissionsData::PageAccess CanExtensionAccessURLInternal(
diff --git a/extensions/common/permissions/settings_override_permission.cc b/extensions/common/permissions/settings_override_permission.cc
index 00075e9..40308a35 100644
--- a/extensions/common/permissions/settings_override_permission.cc
+++ b/extensions/common/permissions/settings_override_permission.cc
@@ -50,14 +50,7 @@
     const base::Value* value,
     std::string* /*error*/,
     std::vector<std::string>* unhandled_permissions) {
-  // Ugly hack: |value| being null should be an error. But before M46 beta, we
-  // didn't store the parameter for settings override permissions in prefs.
-  // See crbug.com/533086 and crbug.com/619759.
-  // TODO(treib,devlin): Remove this for M56, when hopefully all users will have
-  // updated prefs.
-  // This should read:
-  // return value && value->GetAsString(&setting_value_);
-  return !value || value->GetAsString(&setting_value_);
+  return value && value->GetAsString(&setting_value_);
 }
 
 std::unique_ptr<base::Value> SettingsOverrideAPIPermission::ToValue() const {
diff --git a/gpu/command_buffer/client/client_test_helper.cc b/gpu/command_buffer/client/client_test_helper.cc
index 2acf5627..3034dd0 100644
--- a/gpu/command_buffer/client/client_test_helper.cc
+++ b/gpu/command_buffer/client/client_test_helper.cc
@@ -43,11 +43,10 @@
   return -1;
 }
 
-void FakeCommandBufferServiceBase::SetGetBufferHelper(int transfer_buffer_id,
-                                                      int32_t token) {
+void FakeCommandBufferServiceBase::SetGetBufferHelper(int transfer_buffer_id) {
   ++state_.set_get_buffer_count;
   state_.get_offset = 0;
-  state_.token = token;
+  state_.token = 10000;  // All token checks in the tests should pass.
 }
 
 scoped_refptr<gpu::Buffer>
@@ -132,7 +131,7 @@
 }
 
 void MockClientCommandBuffer::SetGetBuffer(int transfer_buffer_id) {
-  SetGetBufferHelper(transfer_buffer_id, token_);
+  SetGetBufferHelper(transfer_buffer_id);
 }
 
 scoped_refptr<gpu::Buffer> MockClientCommandBuffer::CreateTransferBuffer(
diff --git a/gpu/command_buffer/client/client_test_helper.h b/gpu/command_buffer/client/client_test_helper.h
index 9008bde..e401b248 100644
--- a/gpu/command_buffer/client/client_test_helper.h
+++ b/gpu/command_buffer/client/client_test_helper.h
@@ -44,7 +44,7 @@
   int32_t GetNextFreeTransferBufferId();
 
   void FlushHelper(int32_t put_offset);
-  void SetGetBufferHelper(int transfer_buffer_id, int32_t token);
+  void SetGetBufferHelper(int transfer_buffer_id);
   scoped_refptr<gpu::Buffer> CreateTransferBufferHelper(size_t size,
                                                         int32_t* id);
   void DestroyTransferBufferHelper(int32_t id);
@@ -80,11 +80,8 @@
 
   int32_t GetServicePutOffset() { return put_offset_; }
 
-  void SetTokenForSetGetBuffer(int32_t token) { token_ = token; }
-
  private:
   int32_t put_offset_ = 0;
-  int32_t token_ = 10000;  // All token checks in the tests should pass.
 };
 
 class MockClientCommandBufferMockFlush : public MockClientCommandBuffer {
diff --git a/gpu/command_buffer/client/gles2_implementation.cc b/gpu/command_buffer/client/gles2_implementation.cc
index 03c0960..5dae3bc 100644
--- a/gpu/command_buffer/client/gles2_implementation.cc
+++ b/gpu/command_buffer/client/gles2_implementation.cc
@@ -1546,12 +1546,12 @@
 GLint GLES2Implementation::GetAttribLocationHelper(
     GLuint program, const char* name) {
   typedef cmds::GetAttribLocation::Result Result;
-  SetBucketAsCString(kResultBucketId, name);
   Result* result = GetResultAs<Result*>();
   if (!result) {
     return -1;
   }
   *result = -1;
+  SetBucketAsCString(kResultBucketId, name);
   helper_->GetAttribLocation(
       program, kResultBucketId, GetResultShmId(), GetResultShmOffset());
   WaitForCmd();
@@ -1575,12 +1575,12 @@
 GLint GLES2Implementation::GetUniformLocationHelper(
     GLuint program, const char* name) {
   typedef cmds::GetUniformLocation::Result Result;
-  SetBucketAsCString(kResultBucketId, name);
   Result* result = GetResultAs<Result*>();
   if (!result) {
     return -1;
   }
   *result = -1;
+  SetBucketAsCString(kResultBucketId, name);
   helper_->GetUniformLocation(program, kResultBucketId,
                                     GetResultShmId(), GetResultShmOffset());
   WaitForCmd();
@@ -1662,12 +1662,12 @@
 GLint GLES2Implementation::GetFragDataIndexEXTHelper(GLuint program,
                                                      const char* name) {
   typedef cmds::GetFragDataIndexEXT::Result Result;
-  SetBucketAsCString(kResultBucketId, name);
   Result* result = GetResultAs<Result*>();
   if (!result) {
     return -1;
   }
   *result = -1;
+  SetBucketAsCString(kResultBucketId, name);
   helper_->GetFragDataIndexEXT(program, kResultBucketId, GetResultShmId(),
                                GetResultShmOffset());
   WaitForCmd();
@@ -1691,12 +1691,12 @@
 GLint GLES2Implementation::GetFragDataLocationHelper(
     GLuint program, const char* name) {
   typedef cmds::GetFragDataLocation::Result Result;
-  SetBucketAsCString(kResultBucketId, name);
   Result* result = GetResultAs<Result*>();
   if (!result) {
     return -1;
   }
   *result = -1;
+  SetBucketAsCString(kResultBucketId, name);
   helper_->GetFragDataLocation(
       program, kResultBucketId, GetResultShmId(), GetResultShmOffset());
   WaitForCmd();
@@ -1720,12 +1720,12 @@
 GLuint GLES2Implementation::GetUniformBlockIndexHelper(
     GLuint program, const char* name) {
   typedef cmds::GetUniformBlockIndex::Result Result;
-  SetBucketAsCString(kResultBucketId, name);
   Result* result = GetResultAs<Result*>();
   if (!result) {
     return GL_INVALID_INDEX;
   }
   *result = GL_INVALID_INDEX;
+  SetBucketAsCString(kResultBucketId, name);
   helper_->GetUniformBlockIndex(
       program, kResultBucketId, GetResultShmId(), GetResultShmOffset());
   WaitForCmd();
@@ -4956,12 +4956,12 @@
                  << feature << ")");
   TRACE_EVENT0("gpu", "GLES2::EnableFeatureCHROMIUM");
   typedef cmds::EnableFeatureCHROMIUM::Result Result;
-  SetBucketAsCString(kResultBucketId, feature);
   Result* result = GetResultAs<Result*>();
   if (!result) {
     return false;
   }
   *result = 0;
+  SetBucketAsCString(kResultBucketId, feature);
   helper_->EnableFeatureCHROMIUM(
       kResultBucketId, GetResultShmId(), GetResultShmOffset());
   WaitForCmd();
diff --git a/gpu/command_buffer/client/implementation_base.cc b/gpu/command_buffer/client/implementation_base.cc
index ce8dfcd..508cf129 100644
--- a/gpu/command_buffer/client/implementation_base.cc
+++ b/gpu/command_buffer/client/implementation_base.cc
@@ -156,7 +156,7 @@
   if (!transfer_buffer_->Initialize(
           limits.start_transfer_buffer_size, kStartingOffset,
           limits.min_transfer_buffer_size, limits.max_transfer_buffer_size,
-          kAlignment)) {
+          kAlignment, kSizeToFlush)) {
     // TransferBuffer::Initialize doesn't fail for transient reasons such as if
     // the context was lost. See http://crrev.com/c/720269
     LOG(ERROR) << "ContextResult::kFatalFailure: "
diff --git a/gpu/command_buffer/client/implementation_base.h b/gpu/command_buffer/client/implementation_base.h
index b38fab9..376ed98 100644
--- a/gpu/command_buffer/client/implementation_base.h
+++ b/gpu/command_buffer/client/implementation_base.h
@@ -51,6 +51,9 @@
   // used for testing only. If more things are reseved add them here.
   static const unsigned int kStartingOffset = kMaxSizeOfSimpleResult;
 
+  // Size in bytes to issue async flush for transfer buffer.
+  static const unsigned int kSizeToFlush = 256 * 1024;
+
   // Alignment of allocations.
   static const unsigned int kAlignment = 16;
 
diff --git a/gpu/command_buffer/client/mock_transfer_buffer.cc b/gpu/command_buffer/client/mock_transfer_buffer.cc
index 221e39c..f371c25 100644
--- a/gpu/command_buffer/client/mock_transfer_buffer.cc
+++ b/gpu/command_buffer/client/mock_transfer_buffer.cc
@@ -44,7 +44,8 @@
                                     unsigned int result_size,
                                     unsigned int /* min_buffer_size */,
                                     unsigned int /* max_buffer_size */,
-                                    unsigned int alignment) {
+                                    unsigned int alignment,
+                                    unsigned int /* size_to_flush */) {
   // Just check they match.
   return size_ == starting_buffer_size && result_size_ == result_size &&
          alignment_ == alignment && !initialize_fail_;
diff --git a/gpu/command_buffer/client/mock_transfer_buffer.h b/gpu/command_buffer/client/mock_transfer_buffer.h
index 5709e9e..a07e00f2 100644
--- a/gpu/command_buffer/client/mock_transfer_buffer.h
+++ b/gpu/command_buffer/client/mock_transfer_buffer.h
@@ -35,7 +35,8 @@
                   unsigned int result_size,
                   unsigned int /* min_buffer_size */,
                   unsigned int /* max_buffer_size */,
-                  unsigned int alignment) override;
+                  unsigned int alignment,
+                  unsigned int size_to_flush) override;
   int GetShmId() override;
   void* GetResultBuffer() override;
   int GetResultOffset() override;
diff --git a/gpu/command_buffer/client/ring_buffer.h b/gpu/command_buffer/client/ring_buffer.h
index 3b09125..0018cde 100644
--- a/gpu/command_buffer/client/ring_buffer.h
+++ b/gpu/command_buffer/client/ring_buffer.h
@@ -80,9 +80,6 @@
     return size_ - size_ % alignment_;
   }
 
-  // Total size minus usable size.
-  unsigned int GetUsedSize() { return size_ - GetLargestFreeSizeNoWaiting(); }
-
   // Gets a pointer to a memory block given the base memory and the offset.
   void* GetPointer(RingBuffer::Offset offset) const {
     return static_cast<int8_t*>(base_) + offset;
diff --git a/gpu/command_buffer/client/shared_memory_limits.h b/gpu/command_buffer/client/shared_memory_limits.h
index 0d76ad52..16da712 100644
--- a/gpu/command_buffer/client/shared_memory_limits.h
+++ b/gpu/command_buffer/client/shared_memory_limits.h
@@ -28,17 +28,17 @@
     // On memory constrained devices, switch to lower limits.
     if (base::SysInfo::AmountOfPhysicalMemoryMB() <= 512) {
       command_buffer_size = 512 * 1024;
-      start_transfer_buffer_size = 32 * 1024;
-      min_transfer_buffer_size = 32 * 1024;
+      start_transfer_buffer_size = 256 * 1024;
+      min_transfer_buffer_size = 128 * 1024;
       mapped_memory_chunk_size = 256 * 1024;
     }
 #endif
   }
 
   int32_t command_buffer_size = 1024 * 1024;
-  uint32_t start_transfer_buffer_size = 64 * 1024;
-  uint32_t min_transfer_buffer_size = 64 * 1024;
-  uint32_t max_transfer_buffer_size = 64 * 1024 * 1024;
+  uint32_t start_transfer_buffer_size = 1024 * 1024;
+  uint32_t min_transfer_buffer_size = 256 * 1024;
+  uint32_t max_transfer_buffer_size = 16 * 1024 * 1024;
 
   static constexpr uint32_t kNoLimit = 0;
   uint32_t mapped_memory_reclaim_limit = kNoLimit;
diff --git a/gpu/command_buffer/client/transfer_buffer.cc b/gpu/command_buffer/client/transfer_buffer.cc
index 926ae8b..d8b1feb 100644
--- a/gpu/command_buffer/client/transfer_buffer.cc
+++ b/gpu/command_buffer/client/transfer_buffer.cc
@@ -17,17 +17,21 @@
 
 namespace gpu {
 
-TransferBuffer::TransferBuffer(CommandBufferHelper* helper)
+TransferBuffer::TransferBuffer(
+    CommandBufferHelper* helper)
     : helper_(helper),
       result_size_(0),
       default_buffer_size_(0),
       min_buffer_size_(0),
       max_buffer_size_(0),
       alignment_(0),
+      size_to_flush_(0),
+      bytes_since_last_flush_(0),
       buffer_id_(-1),
       result_buffer_(NULL),
       result_shm_offset_(0),
-      usable_(true) {}
+      usable_(true) {
+}
 
 TransferBuffer::~TransferBuffer() {
   Free();
@@ -41,16 +45,19 @@
   return buffer_->backing()->shared_memory_handle();
 }
 
-bool TransferBuffer::Initialize(unsigned int default_buffer_size,
-                                unsigned int result_size,
-                                unsigned int min_buffer_size,
-                                unsigned int max_buffer_size,
-                                unsigned int alignment) {
+bool TransferBuffer::Initialize(
+    unsigned int default_buffer_size,
+    unsigned int result_size,
+    unsigned int min_buffer_size,
+    unsigned int max_buffer_size,
+    unsigned int alignment,
+    unsigned int size_to_flush) {
   result_size_ = result_size;
   default_buffer_size_ = default_buffer_size;
   min_buffer_size_ = min_buffer_size;
   max_buffer_size_ = max_buffer_size;
   alignment_ = alignment;
+  size_to_flush_ = size_to_flush;
   ReallocateRingBuffer(default_buffer_size_ - result_size);
   return HaveBuffer();
 }
@@ -64,10 +71,8 @@
     buffer_ = NULL;
     result_buffer_ = NULL;
     result_shm_offset_ = 0;
-    previous_ring_buffers_.push_back(std::move(ring_buffer_));
-    last_allocated_size_ = 0;
-    high_water_mark_ = GetPreviousRingBufferUsedBytes();
-    bytes_since_last_shrink_ = 0;
+    ring_buffer_.reset();
+    bytes_since_last_flush_ = 0;
   }
 }
 
@@ -86,6 +91,10 @@
 
 void TransferBuffer::FreePendingToken(void* p, unsigned int token) {
   ring_buffer_->FreePendingToken(p, token);
+  if (bytes_since_last_flush_ >= size_to_flush_ && size_to_flush_ > 0) {
+    helper_->Flush();
+    bytes_since_last_flush_ = 0;
+  }
 }
 
 unsigned int TransferBuffer::GetSize() const {
@@ -110,7 +119,6 @@
     scoped_refptr<gpu::Buffer> buffer =
         helper_->command_buffer()->CreateTransferBuffer(size, &id);
     if (id != -1) {
-      last_allocated_size_ = size;
       DCHECK(buffer.get());
       buffer_ = buffer;
       ring_buffer_ = std::make_unique<RingBuffer>(
@@ -119,7 +127,6 @@
       buffer_id_ = id;
       result_buffer_ = buffer_->memory();
       result_shm_offset_ = 0;
-      bytes_since_last_shrink_ = 0;
       return;
     }
     // we failed so don't try larger than this.
@@ -132,7 +139,7 @@
   return (dimension == 0) ? 0 : 1 << base::bits::Log2Ceiling(dimension);
 }
 
-void TransferBuffer::ReallocateRingBuffer(unsigned int size, bool shrink) {
+void TransferBuffer::ReallocateRingBuffer(unsigned int size) {
   // What size buffer would we ask for if we needed a new one?
   unsigned int needed_buffer_size = ComputePOTSize(size + result_size_);
   DCHECK_EQ(needed_buffer_size % alignment_, 0u)
@@ -141,11 +148,7 @@
   needed_buffer_size = std::max(needed_buffer_size, default_buffer_size_);
   needed_buffer_size = std::min(needed_buffer_size, max_buffer_size_);
 
-  unsigned int current_size = HaveBuffer() ? buffer_->size() : 0;
-  if (current_size == needed_buffer_size)
-    return;
-
-  if (usable_ && (shrink || needed_buffer_size > current_size)) {
+  if (usable_ && (!HaveBuffer() || needed_buffer_size > buffer_->size())) {
     if (HaveBuffer()) {
       Free();
     }
@@ -153,49 +156,11 @@
   }
 }
 
-unsigned int TransferBuffer::GetPreviousRingBufferUsedBytes() {
-  while (!previous_ring_buffers_.empty() &&
-         previous_ring_buffers_.front()->GetUsedSize() == 0) {
-    previous_ring_buffers_.pop_front();
-  }
-  unsigned int total = 0;
-  for (auto& buffer : previous_ring_buffers_) {
-    total += buffer->GetUsedSize();
-  }
-  return total;
-}
-
-void TransferBuffer::ShrinkOrExpandRingBufferIfNecessary(
-    unsigned int size_to_allocate) {
-  unsigned int available_size = GetFreeSize();
-  high_water_mark_ =
-      std::max(high_water_mark_, last_allocated_size_ - available_size +
-                                     size_to_allocate +
-                                     GetPreviousRingBufferUsedBytes());
-  if (size_to_allocate > available_size) {
-    // Try to expand the ring buffer.
-    ReallocateRingBuffer(high_water_mark_);
-  } else if (bytes_since_last_shrink_ > high_water_mark_ * kShrinkThreshold) {
-    // The intent of the above check is to limit the frequency of buffer shrink
-    // attempts. Unfortunately if an application uploads a large amount of data
-    // once and from then on uploads only a small amount per frame, it will be a
-    // very long time before we attempt to shrink (or forever, if no data is
-    // uploaded).
-    // TODO(jdarpinian): Change this heuristic to be based on frame number
-    // instead, and consider shrinking at the end of each frame (for clients
-    // that have a notion of frames).
-    bytes_since_last_shrink_ = 0;
-    ReallocateRingBuffer(high_water_mark_ + high_water_mark_ / 4,
-                         true /* shrink */);
-    high_water_mark_ = size_to_allocate + GetPreviousRingBufferUsedBytes();
-  }
-}
-
 void* TransferBuffer::AllocUpTo(
     unsigned int size, unsigned int* size_allocated) {
   DCHECK(size_allocated);
 
-  ShrinkOrExpandRingBufferIfNecessary(size);
+  ReallocateRingBuffer(size);
 
   if (!HaveBuffer()) {
     return NULL;
@@ -203,12 +168,12 @@
 
   unsigned int max_size = ring_buffer_->GetLargestFreeOrPendingSize();
   *size_allocated = std::min(max_size, size);
-  bytes_since_last_shrink_ += *size_allocated;
+  bytes_since_last_flush_ += *size_allocated;
   return ring_buffer_->Alloc(*size_allocated);
 }
 
 void* TransferBuffer::Alloc(unsigned int size) {
-  ShrinkOrExpandRingBufferIfNecessary(size);
+  ReallocateRingBuffer(size);
 
   if (!HaveBuffer()) {
     return NULL;
@@ -218,7 +183,8 @@
   if (size > max_size) {
     return NULL;
   }
-  bytes_since_last_shrink_ += size;
+
+  bytes_since_last_flush_ += size;
   return ring_buffer_->Alloc(size);
 }
 
diff --git a/gpu/command_buffer/client/transfer_buffer.h b/gpu/command_buffer/client/transfer_buffer.h
index 3179984..e5d0d332 100644
--- a/gpu/command_buffer/client/transfer_buffer.h
+++ b/gpu/command_buffer/client/transfer_buffer.h
@@ -11,7 +11,6 @@
 #include <memory>
 
 #include "base/compiler_specific.h"
-#include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "gpu/command_buffer/client/ring_buffer.h"
 #include "gpu/command_buffer/common/buffer.h"
@@ -37,11 +36,13 @@
   // Otherwise, this returns an invalid handle.
   virtual base::SharedMemoryHandle shared_memory_handle() const = 0;
 
-  virtual bool Initialize(unsigned int buffer_size,
-                          unsigned int result_size,
-                          unsigned int min_buffer_size,
-                          unsigned int max_buffer_size,
-                          unsigned int alignment) = 0;
+  virtual bool Initialize(
+      unsigned int buffer_size,
+      unsigned int result_size,
+      unsigned int min_buffer_size,
+      unsigned int max_buffer_size,
+      unsigned int alignment,
+      unsigned int size_to_flush) = 0;
 
   virtual int GetShmId() = 0;
   virtual void* GetResultBuffer() = 0;
@@ -85,7 +86,8 @@
                   unsigned int result_size,
                   unsigned int min_buffer_size,
                   unsigned int max_buffer_size,
-                  unsigned int alignment) override;
+                  unsigned int alignment,
+                  unsigned int size_to_flush) override;
   int GetShmId() override;
   void* GetResultBuffer() override;
   int GetResultOffset() override;
@@ -105,25 +107,14 @@
   unsigned int GetCurrentMaxAllocationWithoutRealloc() const;
   unsigned int GetMaxAllocation() const;
 
-  // We will attempt to shrink the ring buffer once the number of bytes
-  // allocated reaches this threshold times the high water mark.
-  static const int kShrinkThreshold = 120;
-
  private:
   // Tries to reallocate the ring buffer if it's not large enough for size.
-  void ReallocateRingBuffer(unsigned int size, bool shrink = false);
+  void ReallocateRingBuffer(unsigned int size);
 
   void AllocateRingBuffer(unsigned int size);
 
-  void ShrinkOrExpandRingBufferIfNecessary(unsigned int size);
-
-  // Returns the number of bytes that are still in use in ring buffers that we
-  // previously freed.
-  unsigned int GetPreviousRingBufferUsedBytes();
-
   CommandBufferHelper* helper_;
   std::unique_ptr<RingBuffer> ring_buffer_;
-  base::circular_deque<std::unique_ptr<RingBuffer>> previous_ring_buffers_;
 
   // size reserved for results
   unsigned int result_size_;
@@ -137,17 +128,14 @@
   // max size we'll let the buffer grow
   unsigned int max_buffer_size_;
 
-  // Size of the currently allocated ring buffer.
-  unsigned int last_allocated_size_ = 0;
-
-  // The size to shrink the ring buffer to next time shrinking happens.
-  unsigned int high_water_mark_ = 0;
-
   // alignment for allocations
   unsigned int alignment_;
 
-  // Number of bytes since we last attempted to shrink the ring buffer.
-  unsigned int bytes_since_last_shrink_ = 0;
+  // Size at which to do an async flush. 0 = never.
+  unsigned int size_to_flush_;
+
+  // Number of bytes since we last flushed.
+  unsigned int bytes_since_last_flush_;
 
   // the current buffer.
   scoped_refptr<gpu::Buffer> buffer_;
diff --git a/gpu/command_buffer/client/transfer_buffer_unittest.cc b/gpu/command_buffer/client/transfer_buffer_unittest.cc
index 2bc0f5f..92a0d3b 100644
--- a/gpu/command_buffer/client/transfer_buffer_unittest.cc
+++ b/gpu/command_buffer/client/transfer_buffer_unittest.cc
@@ -44,10 +44,14 @@
   void SetUp() override;
   void TearDown() override;
 
-  virtual void Initialize() {
+  virtual void Initialize(unsigned int size_to_flush) {
     ASSERT_TRUE(transfer_buffer_->Initialize(
-        kTransferBufferSize, kStartingOffset, kTransferBufferSize,
-        kTransferBufferSize, kAlignment));
+        kTransferBufferSize,
+        kStartingOffset,
+        kTransferBufferSize,
+        kTransferBufferSize,
+        kAlignment,
+        size_to_flush));
   }
 
   MockClientCommandBufferMockFlush* command_buffer() const {
@@ -97,7 +101,7 @@
 #endif
 
 TEST_F(TransferBufferTest, Basic) {
-  Initialize();
+  Initialize(0);
   EXPECT_TRUE(transfer_buffer_->HaveBuffer());
   EXPECT_EQ(transfer_buffer_id_, transfer_buffer_->GetShmId());
   EXPECT_EQ(
@@ -108,7 +112,7 @@
 }
 
 TEST_F(TransferBufferTest, Free) {
-  Initialize();
+  Initialize(0);
   EXPECT_TRUE(transfer_buffer_->HaveBuffer());
   EXPECT_EQ(transfer_buffer_id_, transfer_buffer_->GetShmId());
   EXPECT_NE(base::UnguessableToken(),
@@ -210,7 +214,7 @@
 }
 
 TEST_F(TransferBufferTest, TooLargeAllocation) {
-  Initialize();
+  Initialize(0);
   // Check that we can't allocate large than max size.
   void* ptr = transfer_buffer_->Alloc(kTransferBufferSize + 1);
   EXPECT_TRUE(ptr == NULL);
@@ -224,7 +228,7 @@
 }
 
 TEST_F(TransferBufferTest, MemoryAlignmentAfterZeroAllocation) {
-  Initialize();
+  Initialize(32u);
   void* ptr = transfer_buffer_->Alloc(0);
   EXPECT_EQ((reinterpret_cast<uintptr_t>(ptr) & (kAlignment - 1)), 0u);
   transfer_buffer_->FreePendingToken(ptr, helper_->InsertToken());
@@ -234,6 +238,32 @@
   transfer_buffer_->FreePendingToken(ptr, helper_->InsertToken());
 }
 
+TEST_F(TransferBufferTest, Flush) {
+  Initialize(16u);
+  unsigned int size_allocated = 0;
+  for (int i = 0; i < 8; ++i) {
+    void* ptr = transfer_buffer_->AllocUpTo(8u, &size_allocated);
+    ASSERT_TRUE(ptr != NULL);
+    EXPECT_EQ(8u, size_allocated);
+    if (i % 2) {
+      EXPECT_CALL(*command_buffer(), Flush(_))
+          .Times(1)
+          .RetiresOnSaturation();
+    }
+    transfer_buffer_->FreePendingToken(ptr, helper_->InsertToken());
+  }
+  for (int i = 0; i < 8; ++i) {
+    void* ptr = transfer_buffer_->Alloc(8u);
+    ASSERT_TRUE(ptr != NULL);
+    if (i % 2) {
+      EXPECT_CALL(*command_buffer(), Flush(_))
+          .Times(1)
+          .RetiresOnSaturation();
+    }
+    transfer_buffer_->FreePendingToken(ptr, helper_->InsertToken());
+  }
+}
+
 class MockClientCommandBufferCanFail : public MockClientCommandBufferMockFlush {
  public:
   MockClientCommandBufferCanFail() = default;
@@ -278,7 +308,6 @@
 
 void TransferBufferExpandContractTest::SetUp() {
   command_buffer_.reset(new StrictMock<MockClientCommandBufferCanFail>());
-  command_buffer_->SetTokenForSetGetBuffer(0);
 
   EXPECT_CALL(*command_buffer(),
               CreateTransferBuffer(kCommandBufferSizeBytes, _))
@@ -302,8 +331,12 @@
 
   transfer_buffer_.reset(new TransferBuffer(helper_.get()));
   ASSERT_TRUE(transfer_buffer_->Initialize(
-      kStartTransferBufferSize, kStartingOffset, kMinTransferBufferSize,
-      kMaxTransferBufferSize, kAlignment));
+      kStartTransferBufferSize,
+      kStartingOffset,
+      kMinTransferBufferSize,
+      kMaxTransferBufferSize,
+      kAlignment,
+      0));
 }
 
 void TransferBufferExpandContractTest::TearDown() {
@@ -337,153 +370,62 @@
 const size_t TransferBufferExpandContractTest::kMinTransferBufferSize;
 #endif
 
-TEST_F(TransferBufferExpandContractTest, ExpandWithSmallAllocations) {
-  int32_t token = helper_->InsertToken();
-  EXPECT_FALSE(helper_->HasTokenPassed(token));
-
-  auto ExpectCreateTransferBuffer = [&](int size) {
-    EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_))
-        .Times(1)
-        .RetiresOnSaturation();
-    EXPECT_CALL(*command_buffer(), OrderingBarrier(_))
-        .Times(1)
-        .RetiresOnSaturation();
-    EXPECT_CALL(*command_buffer(), CreateTransferBuffer(size, _))
-        .WillOnce(
-            Invoke(command_buffer(),
-                   &MockClientCommandBufferCanFail::RealCreateTransferBuffer))
-        .RetiresOnSaturation();
-  };
-
+TEST_F(TransferBufferExpandContractTest, Expand) {
   // Check it starts at starting size.
   EXPECT_EQ(
       kStartTransferBufferSize - kStartingOffset,
       transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
 
-  // Fill the free space.
+  EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_))
+      .Times(1)
+      .RetiresOnSaturation();
+  EXPECT_CALL(*command_buffer(), OrderingBarrier(_))
+      .Times(1)
+      .RetiresOnSaturation();
+  EXPECT_CALL(*command_buffer(),
+              CreateTransferBuffer(kStartTransferBufferSize * 2, _))
+      .WillOnce(Invoke(
+          command_buffer(),
+          &MockClientCommandBufferCanFail::RealCreateTransferBuffer))
+      .RetiresOnSaturation();
+
+  // Try next power of 2.
+  const size_t kSize1 = 512 - kStartingOffset;
   unsigned int size_allocated = 0;
-  void* ptr = transfer_buffer_->AllocUpTo(transfer_buffer_->GetFreeSize(),
-                                          &size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
-
-  // Allocate one more byte to force expansion.
-  ExpectCreateTransferBuffer(kStartTransferBufferSize * 2);
-  ptr = transfer_buffer_->AllocUpTo(1, &size_allocated);
+  void* ptr = transfer_buffer_->AllocUpTo(kSize1, &size_allocated);
   ASSERT_TRUE(ptr != NULL);
-  EXPECT_EQ(1u, size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
+  EXPECT_EQ(kSize1, size_allocated);
+  EXPECT_EQ(kSize1, transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
+  transfer_buffer_->FreePendingToken(ptr, 1);
 
-  // Fill free space and expand again.
-  ptr = transfer_buffer_->AllocUpTo(transfer_buffer_->GetFreeSize(),
-                                    &size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
-  ExpectCreateTransferBuffer(kStartTransferBufferSize * 4);
-  ptr = transfer_buffer_->AllocUpTo(1, &size_allocated);
+  EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_))
+      .Times(1)
+      .RetiresOnSaturation();
+  EXPECT_CALL(*command_buffer(), OrderingBarrier(_))
+      .Times(1)
+      .RetiresOnSaturation();
+  EXPECT_CALL(*command_buffer(),
+              CreateTransferBuffer(kMaxTransferBufferSize, _))
+      .WillOnce(Invoke(
+          command_buffer(),
+          &MockClientCommandBufferCanFail::RealCreateTransferBuffer))
+      .RetiresOnSaturation();
+
+  // Try next power of 2.
+  const size_t kSize2 = 1024 - kStartingOffset;
+  ptr = transfer_buffer_->AllocUpTo(kSize2, &size_allocated);
   ASSERT_TRUE(ptr != NULL);
-  EXPECT_EQ(1u, size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
+  EXPECT_EQ(kSize2, size_allocated);
+  EXPECT_EQ(kSize2, transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
+  transfer_buffer_->FreePendingToken(ptr, 1);
 
-  // Try to expand again, no expansion should occur because we are at max.
-  ptr = transfer_buffer_->AllocUpTo(transfer_buffer_->GetFreeSize(),
-                                    &size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
-  EXPECT_CALL(*command_buffer(), Flush(_)).Times(1).RetiresOnSaturation();
-  ptr = transfer_buffer_->AllocUpTo(1, &size_allocated);
-  ASSERT_TRUE(ptr != NULL);
-  EXPECT_EQ(1u, size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
-  EXPECT_EQ(kMaxTransferBufferSize - kStartingOffset,
-            transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
-}
-
-TEST_F(TransferBufferExpandContractTest, ExpandWithLargeAllocations) {
-  int32_t token = helper_->InsertToken();
-  EXPECT_FALSE(helper_->HasTokenPassed(token));
-
-  auto ExpectCreateTransferBuffer = [&](int size) {
-    EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_))
-        .Times(1)
-        .RetiresOnSaturation();
-    EXPECT_CALL(*command_buffer(), OrderingBarrier(_))
-        .Times(1)
-        .RetiresOnSaturation();
-    EXPECT_CALL(*command_buffer(), CreateTransferBuffer(size, _))
-        .WillOnce(
-            Invoke(command_buffer(),
-                   &MockClientCommandBufferCanFail::RealCreateTransferBuffer))
-        .RetiresOnSaturation();
-  };
-
-  // Check it starts at starting size.
-  EXPECT_EQ(kStartTransferBufferSize - kStartingOffset,
-            transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
-
-  // Allocate one byte more than the free space to force expansion.
-  unsigned int size_allocated = 0;
-  ExpectCreateTransferBuffer(kStartTransferBufferSize * 2);
-  void* ptr = transfer_buffer_->AllocUpTo(transfer_buffer_->GetFreeSize() + 1,
-                                          &size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
-
-  // Expand again.
-  ExpectCreateTransferBuffer(kStartTransferBufferSize * 4);
-  unsigned int size_requested = transfer_buffer_->GetFreeSize() + 1;
-  ptr = transfer_buffer_->AllocUpTo(size_requested, &size_allocated);
-  ASSERT_TRUE(ptr != NULL);
-  EXPECT_EQ(size_requested, size_allocated);
-  transfer_buffer_->FreePendingToken(ptr, token);
-
-  // Try to expand again, no expansion should occur because we are at max.
-  EXPECT_CALL(*command_buffer(), Flush(_)).Times(1).RetiresOnSaturation();
-  size_requested =
-      transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc() + 1;
-  ptr = transfer_buffer_->AllocUpTo(size_requested, &size_allocated);
-  EXPECT_LT(size_allocated, size_requested);
-  transfer_buffer_->FreePendingToken(ptr, token);
-  EXPECT_EQ(kMaxTransferBufferSize - kStartingOffset,
-            transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
-}
-
-TEST_F(TransferBufferExpandContractTest, ShrinkRingBuffer) {
-  int32_t token = helper_->InsertToken();
-  // For this test we want all allocations to be freed immediately.
-  command_buffer_->SetToken(token);
-  EXPECT_TRUE(helper_->HasTokenPassed(token));
-
-  auto ExpectCreateTransferBuffer = [&](int size) {
-    EXPECT_CALL(*command_buffer(), DestroyTransferBuffer(_))
-        .Times(1)
-        .RetiresOnSaturation();
-    EXPECT_CALL(*command_buffer(), OrderingBarrier(_))
-        .Times(1)
-        .RetiresOnSaturation();
-    EXPECT_CALL(*command_buffer(), CreateTransferBuffer(size, _))
-        .WillOnce(
-            Invoke(command_buffer(),
-                   &MockClientCommandBufferCanFail::RealCreateTransferBuffer))
-        .RetiresOnSaturation();
-  };
-
-  // Expand the ring buffer to the maximum size.
-  ExpectCreateTransferBuffer(kMaxTransferBufferSize);
-  void* ptr = transfer_buffer_->Alloc(kMaxTransferBufferSize - kStartingOffset);
-  EXPECT_TRUE(ptr != NULL);
-  transfer_buffer_->FreePendingToken(ptr, token);
-
-  // We shouldn't shrink before we reach the allocation threshold.
-  for (size_t allocated = kMaxTransferBufferSize - kStartingOffset;
-       allocated < (kStartTransferBufferSize + kStartingOffset) *
-                       (TransferBuffer::kShrinkThreshold);) {
-    ptr = transfer_buffer_->Alloc(kStartTransferBufferSize);
-    EXPECT_TRUE(ptr != NULL);
-    transfer_buffer_->FreePendingToken(ptr, token);
-    allocated += kStartTransferBufferSize;
-  }
-  // The next allocation should trip the threshold and shrink.
-  ExpectCreateTransferBuffer(kStartTransferBufferSize * 2);
-  ptr = transfer_buffer_->Alloc(1);
-  EXPECT_TRUE(ptr != NULL);
-  transfer_buffer_->FreePendingToken(ptr, token);
+  // Try next one more. Should not go past max.
+  size_allocated = 0;
+  const size_t kSize3 = kSize2 + 1;
+  ptr = transfer_buffer_->AllocUpTo(kSize3, &size_allocated);
+  EXPECT_EQ(kSize2, size_allocated);
+  EXPECT_EQ(kSize2, transfer_buffer_->GetCurrentMaxAllocationWithoutRealloc());
+  transfer_buffer_->FreePendingToken(ptr, 1);
 }
 
 TEST_F(TransferBufferExpandContractTest, Contract) {
diff --git a/gpu/ipc/BUILD.gn b/gpu/ipc/BUILD.gn
index 63c018bb..5d99902 100644
--- a/gpu/ipc/BUILD.gn
+++ b/gpu/ipc/BUILD.gn
@@ -6,6 +6,8 @@
 
 component("gl_in_process_context") {
   sources = [
+    "command_buffer_task_executor.cc",
+    "command_buffer_task_executor.h",
     "gl_in_process_context.cc",
     "gl_in_process_context.h",
     "gl_in_process_context_export.h",
diff --git a/gpu/ipc/client/gpu_in_process_context_tests.cc b/gpu/ipc/client/gpu_in_process_context_tests.cc
index ae71c31..f5bd950 100644
--- a/gpu/ipc/client/gpu_in_process_context_tests.cc
+++ b/gpu/ipc/client/gpu_in_process_context_tests.cc
@@ -34,7 +34,7 @@
     attributes.sample_buffers = 1;
     attributes.bind_generates_resource = false;
 
-    auto context = gpu::GLInProcessContext::CreateWithoutInit();
+    auto context = std::make_unique<gpu::GLInProcessContext>();
     auto result = context->Initialize(
         nullptr,                 /* service */
         nullptr,                 /* surface */
diff --git a/gpu/ipc/command_buffer_task_executor.cc b/gpu/ipc/command_buffer_task_executor.cc
new file mode 100644
index 0000000..4c4bb8e
--- /dev/null
+++ b/gpu/ipc/command_buffer_task_executor.cc
@@ -0,0 +1,65 @@
+// 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 "gpu/ipc/command_buffer_task_executor.h"
+
+#include "gpu/command_buffer/service/gpu_tracer.h"
+#include "gpu/command_buffer/service/mailbox_manager_factory.h"
+#include "gpu/command_buffer/service/memory_program_cache.h"
+#include "gpu/command_buffer/service/program_cache.h"
+#include "ui/gl/gl_share_group.h"
+
+namespace gpu {
+
+CommandBufferTaskExecutor::CommandBufferTaskExecutor(
+    const GpuPreferences& gpu_preferences,
+    const GpuFeatureInfo& gpu_feature_info,
+    MailboxManager* mailbox_manager,
+    scoped_refptr<gl::GLShareGroup> share_group)
+    : gpu_preferences_(gpu_preferences),
+      gpu_feature_info_(gpu_feature_info),
+      mailbox_manager_(mailbox_manager),
+      share_group_(share_group),
+      shader_translator_cache_(gpu_preferences_) {
+  if (!mailbox_manager_) {
+    // TODO(piman): have embedders own the mailbox manager.
+    owned_mailbox_manager_ = gles2::CreateMailboxManager(gpu_preferences_);
+    mailbox_manager_ = owned_mailbox_manager_.get();
+  }
+}
+
+CommandBufferTaskExecutor::~CommandBufferTaskExecutor() = default;
+
+scoped_refptr<gl::GLShareGroup> CommandBufferTaskExecutor::share_group() {
+  if (!share_group_)
+    share_group_ = base::MakeRefCounted<gl::GLShareGroup>();
+  return share_group_;
+}
+
+gles2::Outputter* CommandBufferTaskExecutor::outputter() {
+  if (!outputter_) {
+    outputter_ =
+        std::make_unique<gles2::TraceOutputter>("InProcessCommandBuffer Trace");
+  }
+  return outputter_.get();
+}
+
+gles2::ProgramCache* CommandBufferTaskExecutor::program_cache() {
+  if (!program_cache_ &&
+      (gl::g_current_gl_driver->ext.b_GL_ARB_get_program_binary ||
+       gl::g_current_gl_driver->ext.b_GL_OES_get_program_binary) &&
+      !gpu_preferences().disable_gpu_program_cache) {
+    bool disable_disk_cache =
+        gpu_preferences_.disable_gpu_shader_disk_cache ||
+        gpu_feature_info_.IsWorkaroundEnabled(gpu::DISABLE_PROGRAM_DISK_CACHE);
+    program_cache_ = std::make_unique<gles2::MemoryProgramCache>(
+        gpu_preferences_.gpu_program_cache_size, disable_disk_cache,
+        gpu_feature_info_.IsWorkaroundEnabled(
+            gpu::DISABLE_PROGRAM_CACHING_FOR_TRANSFORM_FEEDBACK),
+        &activity_flags_);
+  }
+  return program_cache_.get();
+}
+
+}  // namespace gpu
diff --git a/gpu/ipc/command_buffer_task_executor.h b/gpu/ipc/command_buffer_task_executor.h
new file mode 100644
index 0000000..6a28081
--- /dev/null
+++ b/gpu/ipc/command_buffer_task_executor.h
@@ -0,0 +1,101 @@
+// 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 GPU_IPC_COMMAND_BUFFER_TASK_EXECUTOR_H_
+#define GPU_IPC_COMMAND_BUFFER_TASK_EXECUTOR_H_
+
+#include <memory>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "base/memory/ref_counted.h"
+#include "gpu/command_buffer/common/activity_flags.h"
+#include "gpu/command_buffer/service/framebuffer_completeness_cache.h"
+#include "gpu/command_buffer/service/image_manager.h"
+#include "gpu/command_buffer/service/service_discardable_manager.h"
+#include "gpu/command_buffer/service/shader_translator_cache.h"
+#include "gpu/config/gpu_feature_info.h"
+#include "gpu/config/gpu_preferences.h"
+#include "gpu/ipc/gl_in_process_context_export.h"
+
+namespace gl {
+class GLShareGroup;
+}
+
+namespace gpu {
+class MailboxManager;
+class SyncPointManager;
+
+namespace gles2 {
+class Outputter;
+class ProgramCache;
+}  // namespace gles2
+
+// Provides accessors for GPU service objects and the serializer interface to
+// the GPU thread used by InProcessCommandBuffer.
+class GL_IN_PROCESS_CONTEXT_EXPORT CommandBufferTaskExecutor
+    : public base::RefCountedThreadSafe<CommandBufferTaskExecutor> {
+ public:
+  CommandBufferTaskExecutor(const GpuPreferences& gpu_preferences,
+                            const GpuFeatureInfo& gpu_feature_info,
+                            MailboxManager* mailbox_manager,
+                            scoped_refptr<gl::GLShareGroup> share_group);
+
+  // Queues a task to run as soon as possible.
+  virtual void ScheduleTask(base::OnceClosure task) = 0;
+
+  // Schedules |callback| to run at an appropriate time for performing delayed
+  // work.
+  virtual void ScheduleDelayedWork(base::OnceClosure task) = 0;
+
+  // Always use virtualized GL contexts if this returns true.
+  virtual bool ForceVirtualizedGLContexts() = 0;
+
+  virtual bool BlockThreadOnWaitSyncToken() const = 0;
+  virtual SyncPointManager* sync_point_manager() = 0;
+
+  const GpuPreferences& gpu_preferences() const { return gpu_preferences_; }
+  const GpuFeatureInfo& gpu_feature_info() const { return gpu_feature_info_; }
+  scoped_refptr<gl::GLShareGroup> share_group();
+  MailboxManager* mailbox_manager() { return mailbox_manager_; }
+  gles2::Outputter* outputter();
+  gles2::ProgramCache* program_cache();
+  gles2::ImageManager* image_manager() { return &image_manager_; }
+  ServiceDiscardableManager* discardable_manager() {
+    return &discardable_manager_;
+  }
+  gles2::ShaderTranslatorCache* shader_translator_cache() {
+    return &shader_translator_cache_;
+  }
+  gles2::FramebufferCompletenessCache* framebuffer_completeness_cache() {
+    return &framebuffer_completeness_cache_;
+  }
+
+ protected:
+  friend class base::RefCountedThreadSafe<CommandBufferTaskExecutor>;
+
+  virtual ~CommandBufferTaskExecutor();
+
+ private:
+  const GpuPreferences gpu_preferences_;
+  const GpuFeatureInfo gpu_feature_info_;
+  std::unique_ptr<MailboxManager> owned_mailbox_manager_;
+  MailboxManager* mailbox_manager_ = nullptr;
+  std::unique_ptr<gles2::Outputter> outputter_;
+  scoped_refptr<gl::GLShareGroup> share_group_;
+  std::unique_ptr<gles2::ProgramCache> program_cache_;
+  gles2::ImageManager image_manager_;
+  ServiceDiscardableManager discardable_manager_;
+  gles2::ShaderTranslatorCache shader_translator_cache_;
+  gles2::FramebufferCompletenessCache framebuffer_completeness_cache_;
+
+  // No-op default initialization is used in in-process mode.
+  GpuProcessActivityFlags activity_flags_;
+
+  DISALLOW_COPY_AND_ASSIGN(CommandBufferTaskExecutor);
+};
+
+}  // namespace gpu
+
+#endif  // GPU_IPC_COMMAND_BUFFER_TASK_EXECUTOR_H_
diff --git a/gpu/ipc/gl_in_process_context.cc b/gpu/ipc/gl_in_process_context.cc
index 8769832..bd6a40b5 100644
--- a/gpu/ipc/gl_in_process_context.cc
+++ b/gpu/ipc/gl_in_process_context.cc
@@ -11,12 +11,10 @@
 #include <GLES2/gl2ext.h>
 #include <GLES2/gl2extchromium.h>
 
-#include <memory>
 #include <utility>
 
 #include "base/logging.h"
 #include "base/macros.h"
-#include "base/memory/weak_ptr.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "gpu/command_buffer/client/gles2_cmd_helper.h"
 #include "gpu/command_buffer/client/shared_memory_limits.h"
@@ -34,47 +32,9 @@
 
 namespace gpu {
 
-namespace {
+GLInProcessContext::GLInProcessContext() = default;
 
-class GLInProcessContextImpl
-    : public GLInProcessContext,
-      public base::SupportsWeakPtr<GLInProcessContextImpl> {
- public:
-  GLInProcessContextImpl();
-  ~GLInProcessContextImpl() override;
-
-  // GLInProcessContext implementation:
-  ContextResult Initialize(
-      scoped_refptr<InProcessCommandBuffer::Service> service,
-      scoped_refptr<gl::GLSurface> surface,
-      bool is_offscreen,
-      SurfaceHandle window,
-      const ContextCreationAttribs& attribs,
-      const SharedMemoryLimits& mem_limits,
-      GpuMemoryBufferManager* gpu_memory_buffer_manager,
-      ImageFactory* image_factory,
-      GpuChannelManagerDelegate* gpu_channel_manager_delegate,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner) override;
-  const Capabilities& GetCapabilities() const override;
-  const GpuFeatureInfo& GetGpuFeatureInfo() const override;
-  gles2::GLES2Implementation* GetImplementation() override;
-  void SetUpdateVSyncParametersCallback(
-      const InProcessCommandBuffer::UpdateVSyncParametersCallback& callback)
-      override;
-  void SetLock(base::Lock* lock) override;
-
- private:
-  std::unique_ptr<gles2::GLES2CmdHelper> gles2_helper_;
-  std::unique_ptr<TransferBuffer> transfer_buffer_;
-  std::unique_ptr<gles2::GLES2Implementation> gles2_implementation_;
-  std::unique_ptr<InProcessCommandBuffer> command_buffer_;
-
-  DISALLOW_COPY_AND_ASSIGN(GLInProcessContextImpl);
-};
-
-GLInProcessContextImpl::GLInProcessContextImpl() = default;
-
-GLInProcessContextImpl::~GLInProcessContextImpl() {
+GLInProcessContext::~GLInProcessContext() {
   if (gles2_implementation_) {
     // First flush the context to ensure that any pending frees of resources
     // are completed. Otherwise, if this context is part of a share group,
@@ -91,29 +51,25 @@
   command_buffer_.reset();
 }
 
-const Capabilities& GLInProcessContextImpl::GetCapabilities() const {
+const Capabilities& GLInProcessContext::GetCapabilities() const {
   return command_buffer_->GetCapabilities();
 }
 
-const GpuFeatureInfo& GLInProcessContextImpl::GetGpuFeatureInfo() const {
+const GpuFeatureInfo& GLInProcessContext::GetGpuFeatureInfo() const {
   return command_buffer_->GetGpuFeatureInfo();
 }
 
-gles2::GLES2Implementation* GLInProcessContextImpl::GetImplementation() {
+gles2::GLES2Implementation* GLInProcessContext::GetImplementation() {
   return gles2_implementation_.get();
 }
 
-void GLInProcessContextImpl::SetUpdateVSyncParametersCallback(
+void GLInProcessContext::SetUpdateVSyncParametersCallback(
     const InProcessCommandBuffer::UpdateVSyncParametersCallback& callback) {
   command_buffer_->SetUpdateVSyncParametersCallback(callback);
 }
 
-void GLInProcessContextImpl::SetLock(base::Lock* lock) {
-  NOTREACHED();
-}
-
-ContextResult GLInProcessContextImpl::Initialize(
-    scoped_refptr<InProcessCommandBuffer::Service> service,
+ContextResult GLInProcessContext::Initialize(
+    scoped_refptr<CommandBufferTaskExecutor> task_executor,
     scoped_refptr<gl::GLSurface> surface,
     bool is_offscreen,
     SurfaceHandle window,
@@ -133,7 +89,8 @@
   DCHECK_GE(attribs.offscreen_framebuffer_size.width(), 0);
   DCHECK_GE(attribs.offscreen_framebuffer_size.height(), 0);
 
-  command_buffer_ = std::make_unique<InProcessCommandBuffer>(service);
+  command_buffer_ =
+      std::make_unique<InProcessCommandBuffer>(std::move(task_executor));
 
   auto result = command_buffer_->Initialize(
       surface, is_offscreen, window, attribs, /*share_command_buffer=*/nullptr,
@@ -172,11 +129,4 @@
   return result;
 }
 
-}  // anonymous namespace
-
-// static
-std::unique_ptr<GLInProcessContext> GLInProcessContext::CreateWithoutInit() {
-  return std::make_unique<GLInProcessContextImpl>();
-}
-
 }  // namespace gpu
diff --git a/gpu/ipc/gl_in_process_context.h b/gpu/ipc/gl_in_process_context.h
index ac154358..a7eb07d6 100644
--- a/gpu/ipc/gl_in_process_context.h
+++ b/gpu/ipc/gl_in_process_context.h
@@ -9,26 +9,28 @@
 
 #include "base/single_thread_task_runner.h"
 #include "gpu/command_buffer/common/context_creation_attribs.h"
+#include "gpu/ipc/command_buffer_task_executor.h"
 #include "gpu/ipc/gl_in_process_context_export.h"
 #include "gpu/ipc/in_process_command_buffer.h"
 #include "ui/gfx/native_widget_types.h"
 #include "ui/gl/gl_surface.h"
 
 namespace gpu {
+class TransferBuffer;
 struct GpuFeatureInfo;
 struct SharedMemoryLimits;
 
 namespace gles2 {
+class GLES2CmdHelper;
 class GLES2Implementation;
 }
 
+// Wraps everything needed to use an in process GL context.
 class GL_IN_PROCESS_CONTEXT_EXPORT GLInProcessContext {
  public:
-  virtual ~GLInProcessContext() = default;
-
-  // TODO(danakj): Devirtualize this class and remove this, just call the
-  // constructor.
-  static std::unique_ptr<GLInProcessContext> CreateWithoutInit();
+  // You must call Initialize() before using the context.
+  GLInProcessContext();
+  ~GLInProcessContext();
 
   // Initialize the GLInProcessContext, if |is_offscreen| is true, renders to an
   // offscreen context. |attrib_list| must be null or a NONE-terminated list
@@ -39,8 +41,8 @@
   // not thread safe. If |surface| is null, then the other parameters are used
   // to correctly create a surface.
   // |gpu_channel_manager| should be non-null when used in the GPU process.
-  virtual ContextResult Initialize(
-      scoped_refptr<InProcessCommandBuffer::Service> service,
+  ContextResult Initialize(
+      scoped_refptr<CommandBufferTaskExecutor> task_executor,
       scoped_refptr<gl::GLSurface> surface,
       bool is_offscreen,
       SurfaceHandle window,
@@ -49,20 +51,25 @@
       GpuMemoryBufferManager* gpu_memory_buffer_manager,
       ImageFactory* image_factory,
       GpuChannelManagerDelegate* gpu_channel_manager_delegate,
-      scoped_refptr<base::SingleThreadTaskRunner> task_runner) = 0;
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
 
-  virtual const Capabilities& GetCapabilities() const = 0;
-  virtual const GpuFeatureInfo& GetGpuFeatureInfo() const = 0;
+  const Capabilities& GetCapabilities() const;
+  const GpuFeatureInfo& GetGpuFeatureInfo() const;
 
   // Allows direct access to the GLES2 implementation so a GLInProcessContext
   // can be used without making it current.
-  virtual gles2::GLES2Implementation* GetImplementation() = 0;
+  gles2::GLES2Implementation* GetImplementation();
 
-  virtual void SetLock(base::Lock* lock) = 0;
+  void SetUpdateVSyncParametersCallback(
+      const InProcessCommandBuffer::UpdateVSyncParametersCallback& callback);
 
-  virtual void SetUpdateVSyncParametersCallback(
-      const InProcessCommandBuffer::UpdateVSyncParametersCallback&
-          callback) = 0;
+ private:
+  std::unique_ptr<gles2::GLES2CmdHelper> gles2_helper_;
+  std::unique_ptr<TransferBuffer> transfer_buffer_;
+  std::unique_ptr<gles2::GLES2Implementation> gles2_implementation_;
+  std::unique_ptr<InProcessCommandBuffer> command_buffer_;
+
+  DISALLOW_COPY_AND_ASSIGN(GLInProcessContext);
 };
 
 }  // namespace gpu
diff --git a/gpu/ipc/gpu_in_process_thread_service.cc b/gpu/ipc/gpu_in_process_thread_service.cc
index db40eb3..9a383de 100644
--- a/gpu/ipc/gpu_in_process_thread_service.cc
+++ b/gpu/ipc/gpu_in_process_thread_service.cc
@@ -4,7 +4,6 @@
 
 #include "gpu/ipc/gpu_in_process_thread_service.h"
 
-#include "base/lazy_instance.h"
 #include "base/threading/thread_task_runner_handle.h"
 
 namespace gpu {
@@ -16,10 +15,10 @@
     scoped_refptr<gl::GLShareGroup> share_group,
     const GpuFeatureInfo& gpu_feature_info,
     const GpuPreferences& gpu_preferences)
-    : gpu::InProcessCommandBuffer::Service(gpu_preferences,
-                                           mailbox_manager,
-                                           share_group,
-                                           gpu_feature_info),
+    : gpu::CommandBufferTaskExecutor(gpu_preferences,
+                                     gpu_feature_info,
+                                     mailbox_manager,
+                                     share_group),
       task_runner_(task_runner),
       sync_point_manager_(sync_point_manager) {}
 
@@ -40,14 +39,6 @@
   return sync_point_manager_;
 }
 
-void GpuInProcessThreadService::AddRef() const {
-  base::RefCountedThreadSafe<GpuInProcessThreadService>::AddRef();
-}
-
-void GpuInProcessThreadService::Release() const {
-  base::RefCountedThreadSafe<GpuInProcessThreadService>::Release();
-}
-
 bool GpuInProcessThreadService::BlockThreadOnWaitSyncToken() const {
   return false;
 }
diff --git a/gpu/ipc/gpu_in_process_thread_service.h b/gpu/ipc/gpu_in_process_thread_service.h
index d16ba65..e756a52 100644
--- a/gpu/ipc/gpu_in_process_thread_service.h
+++ b/gpu/ipc/gpu_in_process_thread_service.h
@@ -8,6 +8,7 @@
 #include "base/compiler_specific.h"
 #include "base/single_thread_task_runner.h"
 #include "gpu/command_buffer/service/mailbox_manager.h"
+#include "gpu/ipc/command_buffer_task_executor.h"
 #include "gpu/ipc/gl_in_process_context_export.h"
 #include "gpu/ipc/in_process_command_buffer.h"
 #include "ui/gl/gl_share_group.h"
@@ -17,8 +18,7 @@
 // Default Service class when no service is specified. GpuInProcessThreadService
 // is used by Mus and unit tests.
 class GL_IN_PROCESS_CONTEXT_EXPORT GpuInProcessThreadService
-    : public gpu::InProcessCommandBuffer::Service,
-      public base::RefCountedThreadSafe<GpuInProcessThreadService> {
+    : public gpu::CommandBufferTaskExecutor {
  public:
   GpuInProcessThreadService(
       scoped_refptr<base::SingleThreadTaskRunner> task_runner,
@@ -28,18 +28,14 @@
       const GpuFeatureInfo& gpu_feature_info,
       const GpuPreferences& gpu_preferences);
 
-  // gpu::InProcessCommandBuffer::Service implementation.
+  // gpu::CommandBufferTaskExecutor implementation.
   void ScheduleTask(base::OnceClosure task) override;
   void ScheduleDelayedWork(base::OnceClosure task) override;
   bool ForceVirtualizedGLContexts() override;
   gpu::SyncPointManager* sync_point_manager() override;
-  void AddRef() const override;
-  void Release() const override;
   bool BlockThreadOnWaitSyncToken() const override;
 
  private:
-  friend class base::RefCountedThreadSafe<GpuInProcessThreadService>;
-
   ~GpuInProcessThreadService() override;
 
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
diff --git a/gpu/ipc/in_process_command_buffer.cc b/gpu/ipc/in_process_command_buffer.cc
index 05e6076..bc3b627 100644
--- a/gpu/ipc/in_process_command_buffer.cc
+++ b/gpu/ipc/in_process_command_buffer.cc
@@ -23,6 +23,7 @@
 #include "base/numerics/safe_conversions.h"
 #include "base/sequence_checker.h"
 #include "base/single_thread_task_runner.h"
+#include "base/threading/thread.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "build/build_config.h"
 #include "gpu/command_buffer/client/gpu_control_client.h"
@@ -51,6 +52,7 @@
 #include "gpu/config/gpu_feature_info.h"
 #include "gpu/config/gpu_preferences.h"
 #include "gpu/config/gpu_switches.h"
+#include "gpu/ipc/command_buffer_task_executor.h"
 #include "gpu/ipc/gpu_in_process_thread_service.h"
 #include "gpu/ipc/host/gpu_memory_buffer_support.h"
 #include "gpu/ipc/service/gpu_channel_manager_delegate.h"
@@ -91,7 +93,8 @@
 class GpuInProcessThreadHolder : public base::Thread {
  public:
   GpuInProcessThreadHolder()
-      : base::Thread("GpuThread"), sync_point_manager_(new SyncPointManager()) {
+      : base::Thread("GpuThread"),
+        sync_point_manager_(std::make_unique<SyncPointManager>()) {
     Start();
   }
 
@@ -102,7 +105,7 @@
     gpu_feature_info_ = gpu_feature_info;
   }
 
-  const scoped_refptr<InProcessCommandBuffer::Service>& GetGpuThreadService() {
+  scoped_refptr<CommandBufferTaskExecutor> GetGpuThreadService() {
     if (!gpu_thread_service_) {
       DCHECK(base::CommandLine::InitializedForCurrentProcess());
       const base::CommandLine* command_line =
@@ -119,12 +122,12 @@
 
  private:
   std::unique_ptr<SyncPointManager> sync_point_manager_;
-  scoped_refptr<InProcessCommandBuffer::Service> gpu_thread_service_;
+  scoped_refptr<CommandBufferTaskExecutor> gpu_thread_service_;
   GpuFeatureInfo gpu_feature_info_;
 };
 
 base::LazyInstance<GpuInProcessThreadHolder>::DestructorAtExit
-    g_default_service = LAZY_INSTANCE_INITIALIZER;
+    g_default_task_executer = LAZY_INSTANCE_INITIALIZER;
 
 class ScopedEvent {
  public:
@@ -135,10 +138,12 @@
   base::WaitableEvent* event_;
 };
 
-scoped_refptr<InProcessCommandBuffer::Service> GetInitialService(
-    const scoped_refptr<InProcessCommandBuffer::Service>& service) {
-  if (service)
-    return service;
+// If |task_executer| is passed in then it will be returned, otherwise a default
+// task_executer will be constructed and returned.
+scoped_refptr<CommandBufferTaskExecutor> MaybeGetDefaultTaskExecutor(
+    scoped_refptr<CommandBufferTaskExecutor> task_executer) {
+  if (task_executer)
+    return task_executer;
 
   // Call base::ThreadTaskRunnerHandle::IsSet() to ensure that it is
   // instantiated before we create the GPU thread, otherwise shutdown order will
@@ -147,7 +152,7 @@
   // ThreadTaskRunnerHandle, which will re-add a new task to the, AtExitManager,
   // which causes a deadlock because it's already locked.
   base::ThreadTaskRunnerHandle::IsSet();
-  return g_default_service.Get().GetGpuThreadService();
+  return g_default_task_executer.Get().GetGpuThreadService();
 }
 
 }  // anonyous namespace
@@ -155,70 +160,18 @@
 const int InProcessCommandBuffer::kGpuClientId =
     std::numeric_limits<int>::max();
 
-InProcessCommandBuffer::Service::Service(
-    const GpuPreferences& gpu_preferences,
-    MailboxManager* mailbox_manager,
-    scoped_refptr<gl::GLShareGroup> share_group,
-    const GpuFeatureInfo& gpu_feature_info)
-    : gpu_preferences_(gpu_preferences),
-      gpu_feature_info_(gpu_feature_info),
-      mailbox_manager_(mailbox_manager),
-      share_group_(share_group),
-      shader_translator_cache_(gpu_preferences_) {
-  if (!mailbox_manager_) {
-    // TODO(piman): have embedders own the mailbox manager.
-    owned_mailbox_manager_ = gles2::CreateMailboxManager(gpu_preferences_);
-    mailbox_manager_ = owned_mailbox_manager_.get();
-  }
-}
-
-InProcessCommandBuffer::Service::~Service() = default;
-
-const GpuPreferences& InProcessCommandBuffer::Service::gpu_preferences() {
-  return gpu_preferences_;
-}
-
-scoped_refptr<gl::GLShareGroup> InProcessCommandBuffer::Service::share_group() {
-  if (!share_group_.get())
-    share_group_ = new gl::GLShareGroup();
-  return share_group_;
-}
-
-gles2::Outputter* InProcessCommandBuffer::Service::outputter() {
-  if (!outputter_)
-    outputter_.reset(new gles2::TraceOutputter("InProcessCommandBuffer Trace"));
-  return outputter_.get();
-}
-
-gles2::ProgramCache* InProcessCommandBuffer::Service::program_cache() {
-  if (!program_cache_.get() &&
-      (gl::g_current_gl_driver->ext.b_GL_ARB_get_program_binary ||
-       gl::g_current_gl_driver->ext.b_GL_OES_get_program_binary) &&
-      !gpu_preferences().disable_gpu_program_cache) {
-    bool disable_disk_cache =
-        gpu_preferences_.disable_gpu_shader_disk_cache ||
-        gpu_feature_info_.IsWorkaroundEnabled(gpu::DISABLE_PROGRAM_DISK_CACHE);
-    program_cache_.reset(new gles2::MemoryProgramCache(
-        gpu_preferences_.gpu_program_cache_size, disable_disk_cache,
-        gpu_feature_info_.IsWorkaroundEnabled(
-            gpu::DISABLE_PROGRAM_CACHING_FOR_TRANSFORM_FEEDBACK),
-        &activity_flags_));
-  }
-  return program_cache_.get();
-}
-
 InProcessCommandBuffer::InProcessCommandBuffer(
-    const scoped_refptr<Service>& service)
+    scoped_refptr<CommandBufferTaskExecutor> task_executer)
     : command_buffer_id_(CommandBufferId::FromUnsafeValue(
           g_next_command_buffer_id.GetNext() + 1)),
       flush_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
                    base::WaitableEvent::InitialState::NOT_SIGNALED),
-      service_(GetInitialService(service)),
+      task_executor_(MaybeGetDefaultTaskExecutor(std::move(task_executer))),
       fence_sync_wait_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
                              base::WaitableEvent::InitialState::NOT_SIGNALED),
       client_thread_weak_ptr_factory_(this),
       gpu_thread_weak_ptr_factory_(this) {
-  DCHECK(service_.get());
+  DCHECK(task_executor_.get());
 }
 
 InProcessCommandBuffer::~InProcessCommandBuffer() {
@@ -235,7 +188,7 @@
   // ThreadTaskRunnerHandle, which will re-add a new task to the, AtExitManager,
   // which causes a deadlock because it's already locked.
   base::ThreadTaskRunnerHandle::IsSet();
-  g_default_service.Get().SetGpuFeatureInfo(gpu_feature_info);
+  g_default_task_executer.Get().SetGpuFeatureInfo(gpu_feature_info);
 }
 
 gpu::ServiceTransferCache* InProcessCommandBuffer::GetTransferCacheForTest()
@@ -270,7 +223,8 @@
     ImageFactory* image_factory,
     GpuChannelManagerDelegate* gpu_channel_manager_delegate,
     scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
-  DCHECK(!share_group || service_.get() == share_group->service_.get());
+  DCHECK(!share_group ||
+         task_executor_.get() == share_group->task_executor_.get());
 
   gpu_memory_buffer_manager_ = gpu_memory_buffer_manager;
   gpu_channel_manager_delegate_ = gpu_channel_manager_delegate;
@@ -325,19 +279,20 @@
     context_group_ = params.share_command_buffer->context_group_;
   } else {
     GpuDriverBugWorkarounds workarounds(
-        service_->gpu_feature_info().enabled_gpu_driver_bug_workarounds);
+        task_executor_->gpu_feature_info().enabled_gpu_driver_bug_workarounds);
     auto feature_info = base::MakeRefCounted<gles2::FeatureInfo>(
-        workarounds, service_->gpu_feature_info());
+        workarounds, task_executor_->gpu_feature_info());
 
     context_group_ = base::MakeRefCounted<gles2::ContextGroup>(
-        service_->gpu_preferences(),
+        task_executor_->gpu_preferences(),
         gles2::PassthroughCommandDecoderSupported(),
-        service_->mailbox_manager(), nullptr /* memory_tracker */,
-        service_->shader_translator_cache(),
-        service_->framebuffer_completeness_cache(), feature_info,
-        params.attribs.bind_generates_resource, service_->image_manager(),
+        task_executor_->mailbox_manager(), nullptr /* memory_tracker */,
+        task_executor_->shader_translator_cache(),
+        task_executor_->framebuffer_completeness_cache(), feature_info,
+        params.attribs.bind_generates_resource, task_executor_->image_manager(),
         params.image_factory, nullptr /* progress_reporter */,
-        service_->gpu_feature_info(), service_->discardable_manager());
+        task_executor_->gpu_feature_info(),
+        task_executor_->discardable_manager());
   }
 
 #if defined(OS_MACOSX)
@@ -347,11 +302,11 @@
       (params.attribs.gpu_preference == gl::PreferIntegratedGpu);
 #endif
 
-  use_virtualized_gl_context_ |= service_->ForceVirtualizedGLContexts();
+  use_virtualized_gl_context_ |= task_executor_->ForceVirtualizedGLContexts();
 
   // MailboxManagerSync synchronization correctness currently depends on having
   // only a single context. See https://crbug.com/510243 for details.
-  use_virtualized_gl_context_ |= service_->mailbox_manager()->UsesSync();
+  use_virtualized_gl_context_ |= task_executor_->mailbox_manager()->UsesSync();
 
   use_virtualized_gl_context_ |=
       context_group_->feature_info()->workarounds().use_virtualized_gl_contexts;
@@ -360,18 +315,18 @@
       this, transfer_buffer_manager_.get());
 
   bool supports_oop_rasterization =
-      service_->gpu_feature_info()
+      task_executor_->gpu_feature_info()
           .status_values[GPU_FEATURE_TYPE_OOP_RASTERIZATION] ==
       kGpuFeatureStatusEnabled;
   if (supports_oop_rasterization && params.attribs.enable_oop_rasterization &&
       params.attribs.enable_raster_interface &&
       !params.attribs.enable_gles2_interface) {
     decoder_.reset(raster::RasterDecoder::Create(this, command_buffer_.get(),
-                                                 service_->outputter(),
+                                                 task_executor_->outputter(),
                                                  context_group_.get()));
   } else {
     decoder_.reset(gles2::GLES2Decoder::Create(this, command_buffer_.get(),
-                                               service_->outputter(),
+                                               task_executor_->outputter(),
                                                context_group_.get()));
   }
 
@@ -417,9 +372,9 @@
   // TODO(crbug.com/832243): InProcessCommandBuffer should support using the GPU
   // scheduler for non-WebView cases.
   sync_point_order_data_ =
-      service_->sync_point_manager()->CreateSyncPointOrderData();
+      task_executor_->sync_point_manager()->CreateSyncPointOrderData();
   sync_point_client_state_ =
-      service_->sync_point_manager()->CreateSyncPointClientState(
+      task_executor_->sync_point_manager()->CreateSyncPointClientState(
           GetNamespaceID(), GetCommandBufferID(),
           sync_point_order_data_->sequence_id());
 
@@ -434,7 +389,7 @@
   } else {
     // When using the validating command decoder, always use the global share
     // group.
-    gl_share_group_ = service_->share_group();
+    gl_share_group_ = task_executor_->share_group();
   }
 
   // TODO(sunnyps): Should this use ScopedCrashKey instead?
@@ -463,7 +418,7 @@
       DCHECK(real_context->share_group() == gl_share_group_.get());
       gl_share_group_->SetSharedContext(surface_.get(), real_context.get());
 
-      service_->gpu_feature_info().ApplyToGLContext(real_context.get());
+      task_executor_->gpu_feature_info().ApplyToGLContext(real_context.get());
     }
 
     context_ = base::MakeRefCounted<GLContextVirtual>(
@@ -488,7 +443,7 @@
       LOG(ERROR) << "ContextResult::kFatalFailure: Failed to create context.";
       return gpu::ContextResult::kFatalFailure;
     }
-    service_->gpu_feature_info().ApplyToGLContext(context_.get());
+    task_executor_->gpu_feature_info().ApplyToGLContext(context_.get());
   }
 
   if (!context_->MakeCurrent(surface_.get())) {
@@ -506,7 +461,7 @@
 
   if (!context_group_->has_program_cache() &&
       !context_group_->feature_info()->workarounds().disable_program_cache) {
-    context_group_->set_program_cache(service_->program_cache());
+    context_group_->set_program_cache(task_executor_->program_cache());
   }
 
   gles2::DisallowedFeatures disallowed_features;
@@ -518,7 +473,7 @@
     return result;
   }
 
-  if (service_->gpu_preferences().enable_gpu_service_logging)
+  if (task_executor_->gpu_preferences().enable_gpu_service_logging)
     decoder_->SetLogCommands(true);
 
   if (use_virtualized_gl_context_) {
@@ -631,7 +586,7 @@
 void InProcessCommandBuffer::QueueOnceTask(bool out_of_order,
                                            base::OnceClosure task) {
   if (out_of_order) {
-    service_->ScheduleTask(std::move(task));
+    task_executor_->ScheduleTask(std::move(task));
     return;
   }
   // Release the |task_queue_lock_| before calling ScheduleTask because
@@ -643,7 +598,7 @@
         std::make_unique<GpuTask>(std::move(task), order_num);
     task_queue_.push(std::move(gpu_task));
   }
-  service_->ScheduleTask(base::BindOnce(
+  task_executor_->ScheduleTask(base::BindOnce(
       &InProcessCommandBuffer::ProcessTasksOnGpuThread, gpu_thread_weak_ptr_));
 }
 
@@ -657,7 +612,7 @@
         std::make_unique<GpuTask>(std::move(task), order_num);
     task_queue_.push(std::move(gpu_task));
   }
-  service_->ScheduleTask(base::Bind(
+  task_executor_->ScheduleTask(base::BindOnce(
       &InProcessCommandBuffer::ProcessTasksOnGpuThread, gpu_thread_weak_ptr_));
 }
 
@@ -673,7 +628,7 @@
     sync_point_order_data_->BeginProcessingOrderNumber(task->order_number());
     task->Run();
     if (!command_buffer_->scheduled() &&
-        !service_->BlockThreadOnWaitSyncToken()) {
+        !task_executor_->BlockThreadOnWaitSyncToken()) {
       sync_point_order_data_->PauseProcessingOrderNumber(task->order_number());
       // Don't pop the task if it was preempted - it may have been preempted, so
       // we need to execute it again later.
@@ -742,7 +697,7 @@
   if (delayed_work_pending_)
     return;
   delayed_work_pending_ = true;
-  service_->ScheduleDelayedWork(
+  task_executor_->ScheduleDelayedWork(
       base::Bind(&InProcessCommandBuffer::PerformDelayedWorkOnGpuThread,
                  gpu_thread_weak_ptr_));
 }
@@ -852,7 +807,7 @@
 }
 
 const GpuFeatureInfo& InProcessCommandBuffer::GetGpuFeatureInfo() const {
-  return service_->gpu_feature_info();
+  return task_executor_->gpu_feature_info();
 }
 
 int32_t InProcessCommandBuffer::CreateImage(ClientBuffer buffer,
@@ -915,7 +870,7 @@
     gfx::BufferFormat format,
     uint32_t internalformat,
     uint64_t fence_sync) {
-  gles2::ImageManager* image_manager = service_->image_manager();
+  gles2::ImageManager* image_manager = task_executor_->image_manager();
   DCHECK(image_manager);
   if (image_manager->LookupImage(id)) {
     LOG(ERROR) << "Image already exists with same ID.";
@@ -972,7 +927,7 @@
 }
 
 void InProcessCommandBuffer::DestroyImageOnGpuThread(int32_t id) {
-  gles2::ImageManager* image_manager = service_->image_manager();
+  gles2::ImageManager* image_manager = task_executor_->image_manager();
   DCHECK(image_manager);
   if (!image_manager->LookupImage(id)) {
     LOG(ERROR) << "Image with ID doesn't exist.";
@@ -1003,13 +958,13 @@
 
 bool InProcessCommandBuffer::OnWaitSyncToken(const SyncToken& sync_token) {
   DCHECK(!waiting_for_sync_point_);
-  SyncPointManager* sync_point_manager = service_->sync_point_manager();
+  SyncPointManager* sync_point_manager = task_executor_->sync_point_manager();
   DCHECK(sync_point_manager);
 
   MailboxManager* mailbox_manager = context_group_->mailbox_manager();
   DCHECK(mailbox_manager);
 
-  if (service_->BlockThreadOnWaitSyncToken()) {
+  if (task_executor_->BlockThreadOnWaitSyncToken()) {
     // Wait if sync point wait is valid.
     if (sync_point_client_state_->Wait(
             sync_token,
@@ -1041,12 +996,12 @@
   context_group_->mailbox_manager()->PullTextureUpdates(sync_token);
   waiting_for_sync_point_ = false;
   command_buffer_->SetScheduled(true);
-  service_->ScheduleTask(base::Bind(
+  task_executor_->ScheduleTask(base::BindOnce(
       &InProcessCommandBuffer::ProcessTasksOnGpuThread, gpu_thread_weak_ptr_));
 }
 
 void InProcessCommandBuffer::OnDescheduleUntilFinished() {
-  if (!service_->BlockThreadOnWaitSyncToken()) {
+  if (!task_executor_->BlockThreadOnWaitSyncToken()) {
     DCHECK(command_buffer_->scheduled());
     DCHECK(decoder_->HasPollingWork());
 
@@ -1055,7 +1010,7 @@
 }
 
 void InProcessCommandBuffer::OnRescheduleAfterFinished() {
-  if (!service_->BlockThreadOnWaitSyncToken()) {
+  if (!task_executor_->BlockThreadOnWaitSyncToken()) {
     DCHECK(!command_buffer_->scheduled());
 
     command_buffer_->SetScheduled(true);
diff --git a/gpu/ipc/in_process_command_buffer.h b/gpu/ipc/in_process_command_buffer.h
index 2d2e0fa..a74500f 100644
--- a/gpu/ipc/in_process_command_buffer.h
+++ b/gpu/ipc/in_process_command_buffer.h
@@ -17,21 +17,18 @@
 #include "base/compiler_specific.h"
 #include "base/containers/queue.h"
 #include "base/macros.h"
-#include "base/memory/ref_counted.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/threading/thread.h"
 #include "gpu/command_buffer/client/gpu_control.h"
-#include "gpu/command_buffer/common/activity_flags.h"
 #include "gpu/command_buffer/common/command_buffer.h"
 #include "gpu/command_buffer/common/context_result.h"
 #include "gpu/command_buffer/service/command_buffer_service.h"
 #include "gpu/command_buffer/service/context_group.h"
 #include "gpu/command_buffer/service/decoder_client.h"
 #include "gpu/command_buffer/service/decoder_context.h"
-#include "gpu/command_buffer/service/image_manager.h"
 #include "gpu/command_buffer/service/service_discardable_manager.h"
 #include "gpu/command_buffer/service/service_transfer_cache.h"
 #include "gpu/config/gpu_feature_info.h"
@@ -50,7 +47,6 @@
 namespace gl {
 class GLContext;
 class GLShareGroup;
-class GLSurface;
 }
 
 namespace gfx {
@@ -59,26 +55,15 @@
 }
 
 namespace gpu {
-
-struct ContextCreationAttribs;
-class MailboxManager;
-class ServiceDiscardableManager;
-class SyncPointClientState;
-class SyncPointOrderData;
-class SyncPointManager;
-struct SwapBuffersCompleteParams;
-
-namespace gles2 {
-class FramebufferCompletenessCache;
-class Outputter;
-class ProgramCache;
-class ShaderTranslatorCache;
-}
-
 class GpuChannelManagerDelegate;
+class CommandBufferTaskExecutor;
 class GpuMemoryBufferManager;
 class ImageFactory;
+class SyncPointClientState;
+class SyncPointOrderData;
 class TransferBufferManager;
+struct ContextCreationAttribs;
+struct SwapBuffersCompleteParams;
 
 // This class provides a thread-safe interface to the global GPU service (for
 // example GPU thread) when being run in single process mode.
@@ -91,9 +76,8 @@
       public DecoderClient,
       public ImageTransportSurfaceDelegate {
  public:
-  class Service;
-
-  explicit InProcessCommandBuffer(const scoped_refptr<Service>& service);
+  explicit InProcessCommandBuffer(
+      scoped_refptr<CommandBufferTaskExecutor> task_executer);
   ~InProcessCommandBuffer() override;
 
   // If |surface| is not null, use it directly; in this case, the command
@@ -202,64 +186,9 @@
 
   static const int kGpuClientId;
 
-  // The serializer interface to the GPU service (i.e. thread).
-  class Service {
-   public:
-    Service(const GpuPreferences& gpu_preferences,
-            MailboxManager* mailbox_manager,
-            scoped_refptr<gl::GLShareGroup> share_group,
-            const GpuFeatureInfo& gpu_feature_info);
-
-    virtual ~Service();
-
-    virtual void AddRef() const = 0;
-    virtual void Release() const = 0;
-
-    // Queues a task to run as soon as possible.
-    virtual void ScheduleTask(base::OnceClosure task) = 0;
-
-    // Schedules |callback| to run at an appropriate time for performing delayed
-    // work.
-    virtual void ScheduleDelayedWork(base::OnceClosure task) = 0;
-
-    virtual bool ForceVirtualizedGLContexts() = 0;
-    virtual SyncPointManager* sync_point_manager() = 0;
-    virtual bool BlockThreadOnWaitSyncToken() const = 0;
-
-    const GpuPreferences& gpu_preferences();
-    const GpuFeatureInfo& gpu_feature_info() { return gpu_feature_info_; }
-    scoped_refptr<gl::GLShareGroup> share_group();
-    MailboxManager* mailbox_manager() { return mailbox_manager_; }
-    gles2::Outputter* outputter();
-    gles2::ProgramCache* program_cache();
-    gles2::ImageManager* image_manager() { return &image_manager_; }
-    ServiceDiscardableManager* discardable_manager() {
-      return &discardable_manager_;
-    }
-    gles2::ShaderTranslatorCache* shader_translator_cache() {
-      return &shader_translator_cache_;
-    }
-    gles2::FramebufferCompletenessCache* framebuffer_completeness_cache() {
-      return &framebuffer_completeness_cache_;
-    }
-
-   protected:
-    const GpuPreferences gpu_preferences_;
-    const GpuFeatureInfo gpu_feature_info_;
-    std::unique_ptr<MailboxManager> owned_mailbox_manager_;
-    MailboxManager* mailbox_manager_ = nullptr;
-    std::unique_ptr<gles2::Outputter> outputter_;
-    scoped_refptr<gl::GLShareGroup> share_group_;
-    std::unique_ptr<gles2::ProgramCache> program_cache_;
-    // No-op default initialization is used in in-process mode.
-    GpuProcessActivityFlags activity_flags_;
-    gles2::ImageManager image_manager_;
-    ServiceDiscardableManager discardable_manager_;
-    gles2::ShaderTranslatorCache shader_translator_cache_;
-    gles2::FramebufferCompletenessCache framebuffer_completeness_cache_;
-  };
-
-  Service* service_for_testing() const { return service_.get(); }
+  CommandBufferTaskExecutor* service_for_testing() const {
+    return task_executor_.get();
+  }
 
  private:
   struct InitializeOnGpuThreadParams {
@@ -361,7 +290,7 @@
   std::unique_ptr<CommandBufferService> command_buffer_;
   base::Lock command_buffer_lock_;
   base::WaitableEvent flush_event_;
-  scoped_refptr<Service> service_;
+  scoped_refptr<CommandBufferTaskExecutor> task_executor_;
 
   // The group of contexts that share namespaces with this context.
   scoped_refptr<gles2::ContextGroup> context_group_;
diff --git a/gpu/ipc/raster_in_process_context.cc b/gpu/ipc/raster_in_process_context.cc
index 8f00e5e1..7100f551 100644
--- a/gpu/ipc/raster_in_process_context.cc
+++ b/gpu/ipc/raster_in_process_context.cc
@@ -41,7 +41,7 @@
 }
 
 ContextResult RasterInProcessContext::Initialize(
-    scoped_refptr<InProcessCommandBuffer::Service> service,
+    scoped_refptr<CommandBufferTaskExecutor> task_executor,
     const ContextCreationAttribs& attribs,
     const SharedMemoryLimits& memory_limits,
     GpuMemoryBufferManager* gpu_memory_buffer_manager,
@@ -57,7 +57,8 @@
   }
 
   client_task_runner_ = base::MakeRefCounted<base::TestSimpleTaskRunner>();
-  command_buffer_ = std::make_unique<InProcessCommandBuffer>(service);
+  command_buffer_ =
+      std::make_unique<InProcessCommandBuffer>(std::move(task_executor));
   auto result = command_buffer_->Initialize(
       nullptr /* surface */, true /* is_offscreen */, kNullSurfaceHandle,
       attribs, nullptr /* share_command_buffer */, gpu_memory_buffer_manager,
diff --git a/gpu/ipc/raster_in_process_context.h b/gpu/ipc/raster_in_process_context.h
index 7f1bb12..149d0e5d 100644
--- a/gpu/ipc/raster_in_process_context.h
+++ b/gpu/ipc/raster_in_process_context.h
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/single_thread_task_runner.h"
+#include "gpu/ipc/command_buffer_task_executor.h"
 #include "gpu/ipc/in_process_command_buffer.h"
 
 namespace base {
@@ -40,7 +41,7 @@
   // pairs. |gpu_channel_manager| should be non-null when used in the GPU
   // process.
   ContextResult Initialize(
-      scoped_refptr<InProcessCommandBuffer::Service> service,
+      scoped_refptr<CommandBufferTaskExecutor> task_executor,
       const ContextCreationAttribs& attribs,
       const SharedMemoryLimits& memory_limits,
       GpuMemoryBufferManager* gpu_memory_buffer_manager,
diff --git a/gpu/vulkan/vulkan_implementation.h b/gpu/vulkan/vulkan_implementation.h
index 064841f..5b42ab4 100644
--- a/gpu/vulkan/vulkan_implementation.h
+++ b/gpu/vulkan/vulkan_implementation.h
@@ -12,6 +12,10 @@
 #include "gpu/vulkan/vulkan_export.h"
 #include "ui/gfx/native_widget_types.h"
 
+namespace gfx {
+class GpuFence;
+}
+
 namespace gpu {
 
 class VulkanDeviceQueue;
@@ -39,6 +43,16 @@
 
   virtual std::vector<const char*> GetRequiredDeviceExtensions() = 0;
 
+  // Creates a VkFence that is exportable to a gfx::GpuFence.
+  virtual VkFence CreateVkFenceForGpuFence(VkDevice vk_device) = 0;
+
+  // Exports a VkFence to a gfx::GpuFence.
+  //
+  // The fence should have been created via CreateVkFenceForGpuFence().
+  virtual std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
+      VkDevice vk_device,
+      VkFence vk_fence) = 0;
+
  private:
   DISALLOW_COPY_AND_ASSIGN(VulkanImplementation);
 };
diff --git a/gpu/vulkan/vulkan_implementation_android.cc b/gpu/vulkan/vulkan_implementation_android.cc
index de343b6..282d149 100644
--- a/gpu/vulkan/vulkan_implementation_android.cc
+++ b/gpu/vulkan/vulkan_implementation_android.cc
@@ -80,4 +80,17 @@
   return {VK_KHR_SWAPCHAIN_EXTENSION_NAME};
 }
 
+VkFence VulkanImplementationAndroid::CreateVkFenceForGpuFence(
+    VkDevice vk_device) {
+  NOTREACHED();
+  return VK_NULL_HANDLE;
+}
+
+std::unique_ptr<gfx::GpuFence>
+VulkanImplementationAndroid::ExportVkFenceToGpuFence(VkDevice vk_device,
+                                                     VkFence vk_fence) {
+  NOTREACHED();
+  return nullptr;
+}
+
 }  // namespace gpu
diff --git a/gpu/vulkan/vulkan_implementation_android.h b/gpu/vulkan/vulkan_implementation_android.h
index efb0f584..fc9815d 100644
--- a/gpu/vulkan/vulkan_implementation_android.h
+++ b/gpu/vulkan/vulkan_implementation_android.h
@@ -29,6 +29,10 @@
       const std::vector<VkQueueFamilyProperties>& queue_family_properties,
       uint32_t queue_family_index) override;
   std::vector<const char*> GetRequiredDeviceExtensions() override;
+  VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override;
+  virtual std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
+      VkDevice vk_device,
+      VkFence vk_fence) override;
 
  private:
   VulkanInstance vulkan_instance_;
diff --git a/gpu/vulkan/x/BUILD.gn b/gpu/vulkan/x/BUILD.gn
index 119e84c..a3227ec 100644
--- a/gpu/vulkan/x/BUILD.gn
+++ b/gpu/vulkan/x/BUILD.gn
@@ -26,6 +26,7 @@
   configs += [ "//build/config/linux:x11" ]
 
   deps = [
+    "//ui/gfx",
     "//ui/gfx/x",
   ]
 
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.cc b/gpu/vulkan/x/vulkan_implementation_x11.cc
index a32f96a2..402e2d87 100644
--- a/gpu/vulkan/x/vulkan_implementation_x11.cc
+++ b/gpu/vulkan/x/vulkan_implementation_x11.cc
@@ -8,6 +8,7 @@
 #include "gpu/vulkan/vulkan_function_pointers.h"
 #include "gpu/vulkan/vulkan_instance.h"
 #include "gpu/vulkan/vulkan_surface.h"
+#include "ui/gfx/gpu_fence.h"
 #include "ui/gfx/x/x11_types.h"
 
 namespace gpu {
@@ -96,4 +97,16 @@
   return {VK_KHR_SWAPCHAIN_EXTENSION_NAME};
 }
 
+VkFence VulkanImplementationX11::CreateVkFenceForGpuFence(VkDevice vk_device) {
+  NOTREACHED();
+  return VK_NULL_HANDLE;
+}
+
+std::unique_ptr<gfx::GpuFence> VulkanImplementationX11::ExportVkFenceToGpuFence(
+    VkDevice vk_device,
+    VkFence vk_fence) {
+  NOTREACHED();
+  return nullptr;
+}
+
 }  // namespace gpu
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.h b/gpu/vulkan/x/vulkan_implementation_x11.h
index 5d4f96aa..49ed244 100644
--- a/gpu/vulkan/x/vulkan_implementation_x11.h
+++ b/gpu/vulkan/x/vulkan_implementation_x11.h
@@ -31,6 +31,10 @@
       const std::vector<VkQueueFamilyProperties>& queue_family_properties,
       uint32_t queue_family_index) override;
   std::vector<const char*> GetRequiredDeviceExtensions() override;
+  VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override;
+  std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
+      VkDevice vk_device,
+      VkFence vk_fence) override;
 
  private:
   XDisplay* const x_display_;
diff --git a/headless/test/DEPS b/headless/test/DEPS
index 77c0dd46..cb553ed 100644
--- a/headless/test/DEPS
+++ b/headless/test/DEPS
@@ -4,5 +4,10 @@
     "+components/viz/common/features.h",
     "+components/viz/common/switches.h",
     "+third_party/skia/include",
+  ],
+  "headless_protocol_browsertest.cc": [
+    "+cc/base/switches.h",
+    "+components/viz/common/features.h",
+    "+components/viz/common/switches.h",
   ]
 }
diff --git a/headless/test/data/protocol/emulation/compositor-basic-raf-expected.txt b/headless/test/data/protocol/emulation/compositor-basic-raf-expected.txt
new file mode 100644
index 0000000..ba9193c
--- /dev/null
+++ b/headless/test/data/protocol/emulation/compositor-basic-raf-expected.txt
@@ -0,0 +1,23 @@
+Tests compositor basic rAF operation.
+Advanced to 10ms
+Advanced to 510ms
+Advanced to 1000ms
+Elasped time: 1000
+Requesting first animation frame
+Animation frame callback #1
+Advanced to 1100ms
+Elasped time: 1100
+Animation frame callback #2
+Advanced to 1200ms
+Elasped time: 1200
+Animation frame callback #3
+Advanced to 1300ms
+Elasped time: 1300
+Animation frame callback #4
+Advanced to 1400ms
+Elasped time: 1400
+Animation frame count: 4
+
+Animation frame callback #5
+Screenshot size: 800 x 600
+Screenshot rgba: 0,0,50,255
\ No newline at end of file
diff --git a/headless/test/data/protocol/emulation/compositor-basic-raf.js b/headless/test/data/protocol/emulation/compositor-basic-raf.js
new file mode 100644
index 0000000..b0b75bd
--- /dev/null
+++ b/headless/test/data/protocol/emulation/compositor-basic-raf.js
@@ -0,0 +1,115 @@
+// 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.
+
+(async function(testRunner) {
+  var {page, session, dp} = await testRunner.startBlank(
+      'Tests compositor basic rAF operation.');
+  await dp.Target.enable();
+
+  // Open the test page in a new tab with BeginFrameControl enabled.
+  await testTargetPage(await testRunner.createTargetInNewContext(
+      session, 800, 600, 'about:blank', true));
+
+  // This runs requestAnimationFrame five times without updating display then
+  // takes a screenshotin in a newly created tab with BeginFrame control.
+  async function testTargetPage(session) {
+    dp = session.protocol;
+    await dp.Runtime.enable();
+    await dp.HeadlessExperimental.enable();
+
+    dp.Runtime.onConsoleAPICalled(data => {
+      const text = data.params.args[0].value;
+      testRunner.log(text);
+    });
+
+    dp.Emulation.onVirtualTimeAdvanced(data => {
+      // Debug chrome schedules stray tasks that break this test.
+      // Our numbers are round, so we prevent this flake 999 times of 1000.
+      const time = data.params.virtualTimeElapsed;
+      if (time !== Math.round(time))
+        return;
+      testRunner.log(`Advanced to ${time}ms`);
+    });
+
+    let virtualTimeBase = 0;
+    let totalElapsedTime = 0;
+    let frameTimeTicks = 0;
+    let lastGrantedChunk = 0;
+
+    dp.Emulation.onVirtualTimePaused(data => {
+      // Remember the base time for frame time calculation.
+      virtualTimeBase = data.params.virtualTimeElapsed;
+    });
+
+    await dp.Emulation.setVirtualTimePolicy({policy: 'pause'});
+    lastGrantedChunk = 1000;
+    await dp.Emulation.setVirtualTimePolicy({
+        policy: 'pauseIfNetworkFetchesPending',
+        budget: lastGrantedChunk, waitForNavigation: true});
+
+    dp.Page.navigate(
+        {url: testRunner.url('/resources/compositor-basic-raf.html')});
+
+    // Renderer wants the very first frame to be fully updated.
+    await AdvanceTime();
+    await session.evaluate('startRAF()');
+    await dp.HeadlessExperimental.beginFrame({frameTimeTicks});
+    await GrantMoreTime(100);
+
+    // Send 3 updateless frames.
+    for (var n = 0; n < 3; ++n) {
+      await AdvanceTime();
+      await dp.HeadlessExperimental.beginFrame({frameTimeTicks,
+          noDisplayUpdates: true});
+      await GrantMoreTime(100);
+    }
+
+    // Grab screenshot, expected size 800x600, rgba: 0,0,50,255.
+    await AdvanceTime();
+    testRunner.log(await session.evaluate('displayRAFCount();'));
+    const screenshotData =
+        (await dp.HeadlessExperimental.beginFrame(
+            {frameTimeTicks, screenshot: {format: 'png'}}))
+        .result.screenshotData;
+    await logScreenShotInfo(screenshotData);
+
+    testRunner.completeTest();
+
+    async function AdvanceTime() {
+      await dp.Emulation.onceVirtualTimeBudgetExpired();
+      totalElapsedTime += lastGrantedChunk;
+      testRunner.log(`Elasped time: ${totalElapsedTime}`);
+      frameTimeTicks = virtualTimeBase + totalElapsedTime;
+    }
+
+    async function GrantMoreTime(budget) {
+      lastGrantedChunk = budget;
+      await dp.Emulation.setVirtualTimePolicy({
+          policy: 'pauseIfNetworkFetchesPending', budget});
+    }
+
+    function logScreenShotInfo(pngBase64) {
+      const image = new Image();
+
+      let callback;
+      let promise = new Promise(fulfill => callback = fulfill);
+      image.onload = function() {
+        testRunner.log(`Screenshot size: `
+            + `${image.naturalWidth} x ${image.naturalHeight}`);
+        const canvas = document.createElement('canvas');
+        canvas.width = image.naturalWidth;
+        canvas.height = image.naturalHeight;
+        const ctx = canvas.getContext('2d');
+        ctx.drawImage(image, 0, 0);
+        const rgba = ctx.getImageData(0, 0, 1, 1).data;
+        testRunner.log(`Screenshot rgba: ${rgba}`);
+        callback();
+      }
+
+      image.src = `data:image/png;base64,${pngBase64}`;
+
+      return promise;
+    }
+  }
+})
diff --git a/headless/test/data/protocol/emulation/compositor-css-animation-test-expected.txt b/headless/test/data/protocol/emulation/compositor-css-animation-test-expected.txt
new file mode 100644
index 0000000..5e0d8b0d
--- /dev/null
+++ b/headless/test/data/protocol/emulation/compositor-css-animation-test-expected.txt
@@ -0,0 +1,22 @@
+Tests compositor animated css handling.
+Expired count: 1, elaspedTime: 500
+Expired count: 2, elaspedTime: 1000
+Event [animationstart] at 0 sec
+Screenshot rgba: 255,0,0,255
+Expired count: 3, elaspedTime: 1500
+Event [animationiteration] at 1 sec
+Screenshot rgba: 1,0,254,255
+Expired count: 4, elaspedTime: 2000
+Expired count: 5, elaspedTime: 2500
+Event [animationiteration] at 2 sec
+Expired count: 6, elaspedTime: 3000
+Expired count: 7, elaspedTime: 3500
+Event [animationiteration] at 3 sec
+Screenshot rgba: 1,0,254,255
+Expired count: 8, elaspedTime: 4000
+Screenshot rgba: 255,0,0,255
+Expired count: 9, elaspedTime: 4500
+Event [animationend] at 4 sec
+Screenshot rgba: 0,0,255,255
+Expired count: 10, elaspedTime: 5000
+Screenshot rgba: 0,0,255,255
\ No newline at end of file
diff --git a/headless/test/data/protocol/emulation/compositor-css-animation-test.js b/headless/test/data/protocol/emulation/compositor-css-animation-test.js
new file mode 100644
index 0000000..668db17
--- /dev/null
+++ b/headless/test/data/protocol/emulation/compositor-css-animation-test.js
@@ -0,0 +1,118 @@
+// 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.
+
+(async function(testRunner) {
+  var {page, session, dp} = await testRunner.startBlank(
+      'Tests compositor animated css handling.');
+  await dp.Target.enable();
+
+  // Open the test page in a new tab with BeginFrameControl enabled.
+  await testTargetPage(await testRunner.createTargetInNewContext(
+      session, 800, 600, 'about:blank', true));
+
+  // Loads a page with css animation into a a newly created tab with BeginFrame
+  // control and verifies that animation is advanced according to virtual time.
+  async function testTargetPage(session) {
+    dp = session.protocol;
+    await dp.Runtime.enable();
+    await dp.HeadlessExperimental.enable();
+
+    dp.Runtime.onConsoleAPICalled(data => {
+      const text = data.params.args[0].value;
+      testRunner.log(text);
+    });
+
+    let virtualTimeBase = 0;
+    let totalElapsedTime = 0;
+    let lastGrantedChunk = 0;
+    let expiredCount = 0;
+
+    dp.Emulation.onVirtualTimeBudgetExpired(async data => {
+      ++expiredCount;
+      totalElapsedTime += lastGrantedChunk;
+      testRunner.log(`Expired count: ${expiredCount}`
+          + `, elaspedTime: ${totalElapsedTime}`);
+
+      let grantVirtualTime = 500;
+      let frameTimeTicks = virtualTimeBase + totalElapsedTime;
+
+      if (expiredCount == 1) {
+        // Renderer wants the very first frame to be fully updated.
+        await dp.HeadlessExperimental.beginFrame({frameTimeTicks});
+      } else {
+        if (expiredCount >= 4 && expiredCount <= 6) {
+          // Issue updateless frames.
+          await dp.HeadlessExperimental.beginFrame(
+              {frameTimeTicks, noDisplayUpdates: true});
+        } else {
+          // Update frame and grab a screenshot, logging background color.
+          const {result: {screenshotData}} =
+              await dp.HeadlessExperimental.beginFrame(
+                  {frameTimeTicks, screenshot: {format: 'png'}});
+          await logScreenShotInfo(screenshotData);
+        }
+      }
+
+      // Grant more time or quit test.
+      if (expiredCount < 10) {
+        await dp.Emulation.setVirtualTimePolicy({
+          policy: 'pauseIfNetworkFetchesPending',
+          budget: grantVirtualTime});
+        lastGrantedChunk = grantVirtualTime;
+      } else {
+        testRunner.completeTest();
+      }
+    });
+
+    // Pause for the first time and remember base virtual time.
+    const {result: {virtualTimeTicksBase}} =
+        await dp.Emulation.setVirtualTimePolicy({policy: 'pause'});
+    virtualTimeBase = virtualTimeTicksBase;
+
+    lastGrantedChunk = 500;
+    await dp.Emulation.setVirtualTimePolicy({
+        policy: 'pauseIfNetworkFetchesPending',
+        budget: lastGrantedChunk, waitForNavigation: true});
+
+    // Animates opacity of a blue 100px square on red blackground over 4
+    // seconds (1.0 -> 0 -> 1.0 four times). Logs events to console.
+    //
+    // Timeline:
+    //      0 ms:  --- animation starts at 500ms ---
+    //    500 ms:  1.0 opacity  -> blue background.
+    //   1000 ms:    0 opacity  ->  red background.
+    //   1500 ms:  1.0 opacity  -> blue background.
+    //   2000 ms:    0 opacity  ->  red background.
+    //   2500 ms:  1.0 opacity  -> blue background.
+    //   3000 ms:    0 opacity  ->  red background.
+    //   3500 ms:  1.0 opacity  -> blue background.
+    //   4000 ms:    0 opacity  ->  red background.
+    //   4500 ms:  1.0 opacity  -> blue background.
+    //
+    // The animation will start with the first BeginFrame after load.
+    dp.Page.navigate(
+        {url: testRunner.url('/resources/compositor-css-animation.html')});
+
+    function logScreenShotInfo(pngBase64) {
+      const image = new Image();
+
+      let callback;
+      let promise = new Promise(fulfill => callback = fulfill);
+      image.onload = function() {
+        const canvas = document.createElement('canvas');
+        canvas.width = image.naturalWidth;
+        canvas.height = image.naturalHeight;
+        const ctx = canvas.getContext('2d');
+        ctx.drawImage(image, 0, 0);
+        const rgba = ctx.getImageData(0, 0, 1, 1).data;
+        testRunner.log(`Screenshot rgba: ${rgba}`);
+        callback();
+      }
+
+      image.src = `data:image/png;base64,${pngBase64}`;
+
+      return promise;
+    }
+  }
+})
diff --git a/headless/test/data/protocol/emulation/compositor-image-animation-test-expected.txt b/headless/test/data/protocol/emulation/compositor-image-animation-test-expected.txt
new file mode 100644
index 0000000..47494d2
--- /dev/null
+++ b/headless/test/data/protocol/emulation/compositor-image-animation-test-expected.txt
@@ -0,0 +1,24 @@
+Tests compositor animated image handling.
+Expired count: 1, elaspedTime: 500
+Expired count: 2, elaspedTime: 1000
+Expired count: 3, elaspedTime: 1500
+Expired count: 4, elaspedTime: 2000
+Expired count: 5, elaspedTime: 2500
+Expired count: 6, elaspedTime: 3000
+Expired count: 7, elaspedTime: 3500
+Expired count: 8, elaspedTime: 4000
+Screenshot rgba: 0,0,255,255
+Expired count: 9, elaspedTime: 4500
+Expired count: 10, elaspedTime: 5000
+Expired count: 11, elaspedTime: 5500
+Expired count: 12, elaspedTime: 6000
+Expired count: 13, elaspedTime: 6500
+Screenshot rgba: 255,255,0,255
+Expired count: 14, elaspedTime: 7000
+Expired count: 15, elaspedTime: 7500
+Expired count: 16, elaspedTime: 8000
+Expired count: 17, elaspedTime: 8500
+Expired count: 18, elaspedTime: 9000
+Expired count: 19, elaspedTime: 9500
+Screenshot rgba: 255,255,0,255
+Expired count: 20, elaspedTime: 10000
\ No newline at end of file
diff --git a/headless/test/data/protocol/emulation/compositor-image-animation-test.js b/headless/test/data/protocol/emulation/compositor-image-animation-test.js
new file mode 100644
index 0000000..ef3d193
--- /dev/null
+++ b/headless/test/data/protocol/emulation/compositor-image-animation-test.js
@@ -0,0 +1,130 @@
+// 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.
+
+(async function(testRunner) {
+  var {page, session, dp} = await testRunner.startBlank(
+      'Tests compositor animated image handling.');
+  await dp.Target.enable();
+
+  // Open the test page in a new tab with BeginFrameControl enabled.
+  await testTargetPage(await testRunner.createTargetInNewContext(
+      session, 800, 600, 'about:blank', true));
+
+  // Loads an animated GIF into a a newly created tab with BeginFrame control
+  // and verifies that:
+  // - animate_only BeginFrames don't produce CompositorFrames,
+  // - first screenshot starts the GIF animation,
+  // - animation is advanced according to virtual time.
+  // - the animation is not resynced after the first iteration.
+  async function testTargetPage(session) {
+    dp = session.protocol;
+    await dp.Runtime.enable();
+    await dp.HeadlessExperimental.enable();
+
+    dp.Runtime.onConsoleAPICalled(data => {
+      const text = data.params.args[0].value;
+      testRunner.log(text);
+    });
+
+    let virtualTimeBase = 0;
+    let totalElapsedTime = 0;
+    let lastGrantedChunk = 0;
+    let expiredCount = 0;
+
+    dp.Emulation.onVirtualTimeBudgetExpired(async data => {
+      ++expiredCount;
+      totalElapsedTime += lastGrantedChunk;
+      testRunner.log(`Expired count: ${expiredCount}, `
+          + `elaspedTime: ${totalElapsedTime}`);
+
+      let grantVirtualTime = 500;
+      let frameTimeTicks = virtualTimeBase + totalElapsedTime;
+
+      if (expiredCount === 1 + 7
+        || expiredCount === 1 + 7 + 5
+        || expiredCount === 1 + 7 + 5 + 6) {
+        // Animation starts when first screenshot is taken, so the first
+        // screenshot should be blue. Screenshot #2 is taken on the third second
+        // of the animation, so it should be yellow. Screenshot #3 is taken two
+        // animation cycles later, so it should be yelloe again.
+        const {result: {screenshotData}} =
+            await dp.HeadlessExperimental.beginFrame(
+                {frameTimeTicks, screenshot: {format: 'png'}});
+        await logScreenShotInfo(screenshotData);
+      } else {
+        await dp.HeadlessExperimental.beginFrame(
+            {frameTimeTicks, noDisplayUpdates: true});
+      }
+
+      // Grant more time or quit test.
+      if (expiredCount < 20) {
+        await dp.Emulation.setVirtualTimePolicy({
+          policy: 'pauseIfNetworkFetchesPending',
+          budget: grantVirtualTime});
+        lastGrantedChunk = grantVirtualTime;
+      } else {
+        testRunner.completeTest();
+      }
+    });
+
+    // Pause for the first time and remember base virtual time.
+    const {result: {virtualTimeTicksBase}} =
+        await dp.Emulation.setVirtualTimePolicy(
+              {initialVirtualTime: 100, policy: 'pause'});
+    virtualTimeBase = virtualTimeTicksBase;
+
+    // Renderer wants the very first frame to be fully updated.
+    await dp.HeadlessExperimental.beginFrame({noDisplayUpdates: false});
+
+    // Grant initial time.
+    lastGrantedChunk = 500;
+    await dp.Emulation.setVirtualTimePolicy({
+        policy: 'pauseIfNetworkFetchesPending',
+        budget: lastGrantedChunk, waitForNavigation: true});
+
+    // The loaded GIF is 100x100px and has 1 second of blue, 1 second of red and
+    // 1 second of yellow.
+    dp.Page.navigate(
+          {url: testRunner.url('/resources/compositor-image-animation.html')});
+
+    async function AdvanceTime() {
+      await dp.Emulation.onceVirtualTimeBudgetExpired();
+      totalElapsedTime += lastGrantedChunk;
+      testRunner.log(`Elasped time: ${totalElapsedTime}`);
+      frameTimeTicks = virtualTimeBase + totalElapsedTime;
+    }
+
+    async function GrantMoreTime(budget) {
+      lastGrantedChunk = budget;
+      await dp.Emulation.setVirtualTimePolicy({
+          policy: 'pauseIfNetworkFetchesPending', budget});
+    }
+
+    function logScreenShotInfo(pngBase64) {
+      const image = new Image();
+
+      let callback;
+      let promise = new Promise(fulfill => callback = fulfill);
+      image.onload = function() {
+        const canvas = document.createElement('canvas');
+        canvas.width = image.naturalWidth;
+        canvas.height = image.naturalHeight;
+        const ctx = canvas.getContext('2d');
+        ctx.drawImage(image, 0, 0);
+        const rgba = ctx.getImageData(0, 0, 1, 1).data;
+        testRunner.log(`Screenshot rgba: ${rgba}`);
+        callback();
+      }
+
+      image.src = `data:image/png;base64,${pngBase64}`;
+
+      return promise;
+    }
+
+    setTimeout(() => {
+      testRunner.log('Forced test termination');
+      testRunner.completeTest();
+    }, 10 * 1000);
+  }
+})
diff --git a/headless/test/data/protocol/emulation/resources/animated_square.gif b/headless/test/data/protocol/emulation/resources/animated_square.gif
new file mode 100644
index 0000000..c990dec
--- /dev/null
+++ b/headless/test/data/protocol/emulation/resources/animated_square.gif
Binary files differ
diff --git a/headless/test/data/protocol/emulation/resources/compositor-basic-raf.html b/headless/test/data/protocol/emulation/resources/compositor-basic-raf.html
new file mode 100644
index 0000000..e5480405
--- /dev/null
+++ b/headless/test/data/protocol/emulation/resources/compositor-basic-raf.html
@@ -0,0 +1,22 @@
+<html>
+<script>
+  window.rafCount = 0;
+  function animationCallback() {
+    ++window.rafCount;
+    console.log(`Animation frame callback #${window.rafCount}`);
+    // Change document body background in a predictable manner.
+    document.body.style.background = '#0000' + (window.rafCount * 10).toString(16);
+    window.requestAnimationFrame(animationCallback);
+  }
+
+  function startRAF() {
+    console.log('Requesting first animation frame');
+    window.requestAnimationFrame(animationCallback);
+  }
+
+  function displayRAFCount() {
+    console.log(`Animation frame count: ${window.rafCount}`);
+  }
+</script>
+<body></body>
+</html>
diff --git a/headless/test/data/protocol/emulation/resources/compositor-css-animation.html b/headless/test/data/protocol/emulation/resources/compositor-css-animation.html
new file mode 100644
index 0000000..868bcb6
--- /dev/null
+++ b/headless/test/data/protocol/emulation/resources/compositor-css-animation.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<style>
+* {
+  margin: 0px;
+  background-color: red;
+}
+
+#box {
+  width: 100px;
+  height: 100px;
+  background-color: blue;
+
+  animation: flash 1s steps(1, end) 4;
+}
+
+@keyframes flash {
+  0% { opacity: 1; }
+  50% { opacity: 0; }
+  100% { opacity: 1; }
+}
+</style>
+<div id="box"></div>
+<script>
+  var baseTime = Date.now();
+
+  var box = document.getElementById("box");
+  box.addEventListener("animationstart", onAnimationEvent, false);
+  box.addEventListener("animationiteration", onAnimationEvent, false);
+  box.addEventListener("animationend", onAnimationEvent, false);
+
+  function onAnimationEvent(event) {
+    console.log(`Event [${event.type}]`
+      + ` at ${event.elapsedTime} sec`);
+  }
+
+</script>
diff --git a/headless/test/data/protocol/emulation/resources/compositor-image-animation.html b/headless/test/data/protocol/emulation/resources/compositor-image-animation.html
new file mode 100644
index 0000000..ba32a4a3
--- /dev/null
+++ b/headless/test/data/protocol/emulation/resources/compositor-image-animation.html
@@ -0,0 +1,3 @@
+<!doctype html>
+<style>* { margin: 0; }</style>
+<img id='image' src='animated_square.gif'>
diff --git a/headless/test/headless_protocol_browsertest.cc b/headless/test/headless_protocol_browsertest.cc
index d38cce38..342194e 100644
--- a/headless/test/headless_protocol_browsertest.cc
+++ b/headless/test/headless_protocol_browsertest.cc
@@ -10,8 +10,13 @@
 #include "base/files/file_util.h"
 #include "base/json/json_reader.h"
 #include "base/path_service.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/threading/thread_restrictions.h"
 #include "build/build_config.h"
+#include "cc/base/switches.h"
+#include "components/viz/common/features.h"
+#include "components/viz/common/switches.h"
+#include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test.h"
 #include "headless/public/devtools/domains/runtime.h"
 #include "headless/public/headless_browser.h"
@@ -174,10 +179,45 @@
     builder.SetHostResolverRules("MAP *.test 127.0.0.1");
   }
 
+  void SetUpCommandLine(base::CommandLine* command_line) override {
+    HeadlessAsyncDevTooledBrowserTest::SetUpCommandLine(command_line);
+    // The following switches are recommended for BeginFrameControl required by
+    // compositor tests, see https://goo.gl/3zHXhB for details
+    static const char* const compositor_switches[] = {
+        // We control BeginFrames ourselves and need all compositing stages to
+        // run.
+        switches::kRunAllCompositorStagesBeforeDraw,
+        switches::kDisableNewContentRenderingTimeout,
+
+        // Animtion-only BeginFrames are only supported when updates from the
+        // impl-thread are disabled, see go/headless-rendering.
+        cc::switches::kDisableThreadedAnimation,
+        cc::switches::kDisableCheckerImaging,
+        switches::kDisableThreadedScrolling,
+
+        // Ensure that image animations don't resync their animation timestamps
+        // when looping back around.
+        switches::kDisableImageAnimationResync,
+    };
+
+    for (auto* compositor_switch : compositor_switches) {
+      command_line->AppendSwitch(compositor_switch);
+    }
+
+    // In surface synchronization, child surface IDs are allocated by
+    // parents and new CompositorFrames only activate once all their child
+    // surfaces exist. In --run-all-compositor-stages-before-draw mode, this
+    // means that child surface initialization and resize fully propagates
+    // within a single BeginFrame.
+    scoped_feature_list_.InitAndEnableFeature(
+        features::kEnableSurfaceSynchronization);
+  }
+
  protected:
   bool test_finished_ = false;
   std::string test_folder_;
   std::string script_name_;
+  base::test::ScopedFeatureList scoped_feature_list_;
 };
 
 #define HEADLESS_PROTOCOL_TEST(TEST_NAME, SCRIPT_NAME)             \
@@ -222,6 +262,28 @@
 HEADLESS_PROTOCOL_TEST(DISABLED_VirtualTimeHistoryNavigation,
                        "emulation/virtual-time-history-navigation.js");
 
+// BeginFrameControl is not supported on MacOS yet, see: https://cs.chromium.org
+// chromium/src/headless/lib/browser/protocol/target_handler.cc?
+// rcl=5811aa08e60ba5ac7622f029163213cfbdb682f7&l=32
+#if defined(OS_MACOSX)
+#define MAYBE_CompositorBasicRaf DISABLED_CompositorBasicRaf
+#define MAYBE_CompositorImageAnimation DISABLED_CompositorImageAnimation
+#define MAYBE_CompositorCssAnimation DISABLED_CompositorCssAnimation
+#else
+#define MAYBE_CompositorBasicRaf CompositorBasicRaf
+#define MAYBE_CompositorImageAnimation CompositorImageAnimation
+#define MAYBE_CompositorCssAnimation CompositorCssAnimation
+#endif
+HEADLESS_PROTOCOL_TEST(MAYBE_CompositorBasicRaf,
+                       "emulation/compositor-basic-raf.js");
+HEADLESS_PROTOCOL_TEST(MAYBE_CompositorImageAnimation,
+                       "emulation/compositor-image-animation-test.js");
+HEADLESS_PROTOCOL_TEST(MAYBE_CompositorCssAnimation,
+                       "emulation/compositor-css-animation-test.js");
+#undef MAYBE_CompositorBasicRaf
+#undef MAYBE_CompositorImageAnimation
+#undef MAYBE_CompositorCssAnimation
+
 // http://crbug.com/633321
 #if defined(OS_ANDROID)
 #define MAYBE_VirtualTimeTimerOrder DISABLED_VirtualTimeTimerOrder
diff --git a/infra/config/global/luci-milo-dev.cfg b/infra/config/global/luci-milo-dev.cfg
index 98d10ff..21510c9 100644
--- a/infra/config/global/luci-milo-dev.cfg
+++ b/infra/config/global/luci-milo-dev.cfg
@@ -238,7 +238,7 @@
   id: "main"
   name: "Chromium Main Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -636,7 +636,7 @@
   id: "chromium.win"
   name: "chromium.win"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -696,7 +696,7 @@
   id: "chromium.mac"
   name: "chromium.mac"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -766,7 +766,7 @@
   id: "chromium.linux"
   name: "chromium.linux"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -856,7 +856,7 @@
   id: "chromium.chromiumos"
   name: "chromium.chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -891,7 +891,7 @@
   id: "chromium.chrome"
   name: "chromium.chrome"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -917,7 +917,7 @@
   id: "chromium.memory"
   name: "chromium.memory"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -997,7 +997,7 @@
   id: "chromium.webkit"
   name: "chromium.webkit"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1053,7 +1053,7 @@
   id: "chromium.perf"
   name: "chromium.perf"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1163,7 +1163,7 @@
   id: "chromium.lkgr"
   name: "chromium.lkgr"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1262,7 +1262,7 @@
   id: "migration-side-by-side"
   name: "LUCI CI Migration Comparison Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   include_experimental_builds: true
@@ -1306,7 +1306,7 @@
   id: "chromium"
   name: "chromium"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1338,7 +1338,7 @@
   id: "chromium.android"
   name: "chromium.android"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1493,7 +1493,7 @@
   id: "chromium.android.fyi"
   name: "chromium.android.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1588,7 +1588,7 @@
   id: "chromium.chromedriver"
   name: "chromium.chromedriver"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1610,7 +1610,7 @@
   id: "chromium.clang"
   name: "chromium.clang"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1808,7 +1808,7 @@
   id: "chromium.fyi.goma"
   name: "chromium.fyi.goma"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -1872,7 +1872,7 @@
   id: "chromium.fyi"
   name: "chromium.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2135,7 +2135,7 @@
   id: "chromium.gatekeeper"
   name: "chromium.gatekeeper"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2151,7 +2151,7 @@
   id: "chromium.goma"
   name: "chromium.goma"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2201,7 +2201,7 @@
   id: "chromium.gpu"
   name: "chromium.gpu"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2273,7 +2273,7 @@
   id: "chromium.gpu.fyi"
   name: "chromium.gpu.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2553,7 +2553,7 @@
   id: "chromium.infra"
   name: "chromium.infra"
   repo_url: "https://chromium.googlesource.com/infra/infra"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2644,7 +2644,7 @@
   id: "chromium.infra.codesearch"
   name: "chromium.infra.codesearch"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2669,7 +2669,7 @@
   id: "chromium.infra.cron"
   name: "chromium.infra.cron"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2730,7 +2730,7 @@
   id: "chromium.perf.fyi"
   name: "chromium.perf.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2784,7 +2784,7 @@
   id: "chromium.swarm"
   name: "chromium.swarm"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2815,7 +2815,7 @@
   id: "chromium.tools.build"
   name: "chromium.tools.build"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2849,7 +2849,7 @@
   id: "chromium.webrtc"
   name: "chromium.webrtc"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -2909,7 +2909,7 @@
   id: "chromium.webrtc.fyi"
   name: "chromium.webrtc.fyi"
   repo_url: "https://webrtc.googlesource.com/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
 
@@ -3082,7 +3082,7 @@
   id: "chromiumos-Closers"
   name: "chromiumos: Closers"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3119,7 +3119,7 @@
   id: "chromiumos-Full"
   name: "chromiumos: Full"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3147,7 +3147,7 @@
   id: "chromiumos-Incremental"
   name: "chromiumos: Incremental"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3163,7 +3163,7 @@
   id: "chromiumos-ASAN"
   name: "chromiumos: ASAN"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3176,7 +3176,7 @@
   id: "chromiumos-CommitQueue"
   name: "chromiumos: Commit Queue"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3198,7 +3198,7 @@
   id: "chromiumos"
   name: "chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3259,7 +3259,7 @@
   id: "chromiumos.chromium"
   name: "chromiumos.chromium"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromiumos"
 
@@ -3285,7 +3285,7 @@
   id: "tryserver.chromium.android"
   name: "tryserver.chromium.android"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3377,7 +3377,7 @@
   id: "tryserver.chromium.angle"
   name: "tryserver.chromium.angle"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3430,7 +3430,7 @@
   id: "tryserver.chromium.chromiumos"
   name: "tryserver.chromium.chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3456,7 +3456,7 @@
   id: "tryserver.chromium.linux"
   name: "tryserver.chromium.linux"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3602,7 +3602,7 @@
   id: "tryserver.chromium.mac"
   name: "tryserver.chromium.mac"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3712,7 +3712,7 @@
   id: "tryserver.chromium.perf"
   name: "tryserver.chromium.perf"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3756,7 +3756,7 @@
   id: "tryserver.chromium.win"
   name: "tryserver.chromium.win"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   header_id: "chromium"
   builder_view_only: true
@@ -3842,7 +3842,7 @@
   id: "tryserver.blink"
   name: "tryserver.blink"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builder_view_only: true
 
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg
index 1c6390b..3bce0af2 100644
--- a/infra/config/global/luci-milo.cfg
+++ b/infra/config/global/luci-milo.cfg
@@ -306,7 +306,7 @@
   id: "main"
   name: "Chromium Main Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Win"
@@ -713,7 +713,7 @@
   id: "chromium.win"
   name: "chromium.win"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Win Builder"
@@ -777,7 +777,7 @@
   id: "chromium.mac"
   name: "chromium.mac"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Mac Builder"
@@ -855,7 +855,7 @@
   id: "chromium.linux"
   name: "chromium.linux"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Linux Builder"
@@ -952,7 +952,7 @@
   id: "chromium.chromiumos"
   name: "chromium.chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Linux ChromiumOS Full"
@@ -986,7 +986,7 @@
   id: "chromium.chrome"
   name: "chromium.chrome"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.chrome/Google Chrome Win"
@@ -1015,7 +1015,7 @@
   id: "chromium.memory"
   name: "chromium.memory"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.memory/Android CFI"
@@ -1109,7 +1109,7 @@
   id: "chromium.webkit"
   name: "chromium.webkit"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.webkit/WebKit Win Builder"
@@ -1172,7 +1172,7 @@
   id: "chromium.perf"
   name: "chromium.perf"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.perf/Android Builder Perf"
@@ -1300,7 +1300,7 @@
   id: "chromium.lkgr"
   name: "chromium.lkgr"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Win ASan Release"
@@ -1399,7 +1399,7 @@
   id: "migration-side-by-side"
   name: "LUCI CI Migration Comparison Console"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Cast Android (dbg)"
@@ -1418,7 +1418,7 @@
   id: "chromium"
   name: "chromium"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   include_experimental_builds: true
   builders {
@@ -1450,7 +1450,7 @@
   id: "chromium.android"
   name: "chromium.android"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Android Cronet Builder"
@@ -1630,7 +1630,7 @@
   id: "chromium.android.fyi"
   name: "chromium.android.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Lollipop Consumer Tester"
@@ -1726,7 +1726,7 @@
   id: "chromium.chromedriver"
   name: "chromium.chromedriver"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.chromedriver/Linux"
@@ -1750,7 +1750,7 @@
   id: "chromium.clang"
   name: "chromium.clang"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.clang/ToTLinux"
@@ -1968,7 +1968,7 @@
   id: "chromium.fyi.goma"
   name: "chromium.fyi.goma"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Win Builder Goma Canary"
@@ -2032,7 +2032,7 @@
   id: "luci.chromium.fyi"
   name: "luci.chromium.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   include_experimental_builds: true
   builders {
@@ -2354,7 +2354,7 @@
   id: "chromium.fyi"
   name: "chromium.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.fyi/Android Builder (dbg)"
@@ -2737,7 +2737,7 @@
   id: "chromium.gatekeeper"
   name: "chromium.gatekeeper"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.gatekeeper/Chromium Gatekeeper"
@@ -2752,7 +2752,7 @@
   id: "chromium.goma"
   name: "chromium.goma"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.goma/Chromium Linux Goma Staging"
@@ -2820,7 +2820,7 @@
   id: "luci.chromium.goma"
   name: "luci.chromium.goma"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/Chromium Linux Goma Staging"
@@ -2877,7 +2877,7 @@
   id: "chromium.gpu"
   name: "chromium.gpu"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/GPU Win Builder"
@@ -2947,7 +2947,7 @@
   id: "chromium.gpu.fyi"
   name: "chromium.gpu.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.ci/GPU FYI Win Builder"
@@ -3271,7 +3271,7 @@
   id: "chromium.infra"
   name: "chromium.infra"
   repo_url: "https://chromium.googlesource.com/infra/infra"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.infra.ci/conda-cipd-pkg-mac-10.9-64"
@@ -3411,7 +3411,7 @@
   id: "chromium.infra.codesearch"
   name: "chromium.infra.codesearch"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.infra.codesearch/codesearch-gen-chromium-android"
@@ -3452,7 +3452,7 @@
   id: "chromium.infra.cron"
   name: "chromium.infra.cron"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.infra.cron/GAE SDK CIPD Packager"
@@ -3540,7 +3540,7 @@
   id: "chromium.perf.fyi"
   name: "chromium.perf.fyi"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.perf.fyi/Android Builder Perf FYI"
@@ -3618,7 +3618,7 @@
   id: "chromium.swarm"
   name: "chromium.swarm"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.swarm/Android N5 Swarm"
@@ -3659,7 +3659,7 @@
   id: "chromium.tools.build"
   name: "chromium.tools.build"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.tools.build/build-repo-real-try_mac"
@@ -3698,7 +3698,7 @@
   id: "chromium.webrtc"
   name: "chromium.webrtc"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.webrtc/Linux Builder"
@@ -3767,7 +3767,7 @@
   id: "chromium.webrtc.fyi"
   name: "chromium.webrtc.fyi"
   repo_url: "https://webrtc.googlesource.com/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromium.webrtc.fyi/Android Builder (dbg)"
@@ -3884,7 +3884,7 @@
   id: "chromiumos-Closers"
   name: "chromiumos: Closers"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos/amd64-generic-incremental"
@@ -3920,7 +3920,7 @@
   id: "chromiumos-Full"
   name: "chromiumos: Full"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos/amd64-generic-full"
@@ -3947,7 +3947,7 @@
   id: "chromiumos-Incremental"
   name: "chromiumos: Incremental"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos/amd64-generic-incremental"
@@ -3962,7 +3962,7 @@
   id: "chromiumos-ASAN"
   name: "chromiumos: ASAN"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos/amd64-generic-asan"
@@ -3974,7 +3974,7 @@
   id: "chromiumos-CommitQueue"
   name: "chromiumos: Commit Queue"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos/amd64-generic-paladin"
@@ -3995,7 +3995,7 @@
   id: "chromiumos"
   name: "chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos/amd64-generic-asan"
@@ -4055,7 +4055,7 @@
   id: "chromiumos.chromium"
   name: "chromiumos.chromium"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/chromiumos.chromium/amd64-generic-goma-canary-chromium-pfq-informational"
@@ -4084,7 +4084,7 @@
   id: "tryserver.chromium.android"
   name: "tryserver.chromium.android"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/tryserver.chromium.android/android_archive_rel_ng"
@@ -4182,7 +4182,7 @@
   id: "tryserver.chromium.chromiumos"
   name: "tryserver.chromium.chromiumos"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel"
@@ -4207,7 +4207,7 @@
   id: "tryserver.chromium.linux"
   name: "tryserver.chromium.linux"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.try/cast_shell_audio_linux"
@@ -4346,7 +4346,7 @@
   id: "tryserver.chromium.mac"
   name: "tryserver.chromium.mac"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.try/ios-device"
@@ -4458,7 +4458,7 @@
   id: "tryserver.chromium.perf"
   name: "tryserver.chromium.perf"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/tryserver.chromium.perf/Android Compile Perf"
@@ -4501,7 +4501,7 @@
   id: "tryserver.chromium.win"
   name: "tryserver.chromium.win"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.try/gpu_manual_try_win7_nvidia_rel"
@@ -4595,7 +4595,7 @@
   id: "tryserver.blink"
   name: "tryserver.blink"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbot/tryserver.blink/linux-blink-rel"
@@ -4653,7 +4653,7 @@
   id: "angle.try"
   name: "angle.try"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.try/android_angle_deqp_rel_ng"
@@ -4717,7 +4717,7 @@
   id: "luci.chromium.try"
   name: "luci.chromium.try"
   repo_url: "https://chromium.googlesource.com/chromium/src"
-  ref: "refs/heads/master"
+  refs: "refs/heads/master"
   manifest_name: "REVISION"
   builders {
     name: "buildbucket/luci.chromium.try/android-kitkat-arm-rel"
diff --git a/ios/chrome/app/application_delegate/url_opener_unittest.mm b/ios/chrome/app/application_delegate/url_opener_unittest.mm
index 9f02d686..5d848ec7 100644
--- a/ios/chrome/app/application_delegate/url_opener_unittest.mm
+++ b/ios/chrome/app/application_delegate/url_opener_unittest.mm
@@ -54,8 +54,7 @@
 
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab {
+                   transition:(ui::PageTransition)transition {
   static_cast<mock_gurl_nsuinteger_pagetransition>(
       [self blockForSelector:_cmd])(url, position, transition);
   id mockTab = [OCMockObject mockForClass:[Tab class]];
@@ -79,7 +78,6 @@
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
                    transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab
            tabAddedCompletion:(ProceduralBlock)completion;
 - (void)expectNewForegroundTab;
 - (void)setActive:(BOOL)active;
@@ -99,7 +97,6 @@
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
                    transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab
            tabAddedCompletion:(ProceduralBlock)completion {
   self.tabURL = url;
   self.position = position;
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm
index 86d1aed..e9ec462 100644
--- a/ios/chrome/app/main_controller.mm
+++ b/ios/chrome/app/main_controller.mm
@@ -2193,7 +2193,6 @@
     return [targetBVC addSelectedTabWithURL:URL
                                     atIndex:NSNotFound
                                  transition:transition
-                                     opener:nil
                          tabAddedCompletion:tabOpenedCompletion];
   }
 
@@ -2290,7 +2289,6 @@
       tab = [targetBVC addSelectedTabWithURL:url
                                      atIndex:tabIndex
                                   transition:transition
-                                      opener:nil
                           tabAddedCompletion:tabOpenedCompletion];
     } else {
       // Voice search, QRScanner and the omnibox are presented by the BVC.
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
index 6179eb0..299818e 100644
--- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -425,7 +425,7 @@
 <translation id="8730621377337864115">হয়ে গেছে</translation>
 <translation id="8741995161408053644"><ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিং ইতিহাস থাকতে পারে।</translation>
 <translation id="8775144690796719618">অবৈধ URL</translation>
-<translation id="8820817407110198400">বুকমার্ক</translation>
+<translation id="8820817407110198400">বুকমার্কস</translation>
 <translation id="8840513115188359703">আপনাকে আপনার Google অ্যাকাউন্ট থেকে প্রস্থান করা হবে না।</translation>
 <translation id="8870413625673593573">সম্প্রতি বন্ধ হয়েছে</translation>
 <translation id="8881801611828450202">এই ছবিটির জন্য <ph name="SEARCH_ENGINE" /> এ খুঁজুন</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
index 16ee80a..d9a228826 100644
--- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb
+++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -75,7 +75,7 @@
 <translation id="2267753748892043616">Afegeix un compte</translation>
 <translation id="2273327106802955778">Més opcions del menú</translation>
 <translation id="2320166752086256636">Amaga el teclat</translation>
-<translation id="2339560363438331454">Sincronització i serveis de Google</translation>
+<translation id="2339560363438331454">Sincron. i serveis de Google</translation>
 <translation id="2351097562818989364">S'ha restablert la configuració del Traductor.</translation>
 <translation id="2354750644801399986">No segueixis</translation>
 <translation id="2359808026110333948">Continua</translation>
diff --git a/ios/chrome/browser/ui/browser_view_controller.h b/ios/chrome/browser/ui/browser_view_controller.h
index 074a4c5..4d31316 100644
--- a/ios/chrome/browser/ui/browser_view_controller.h
+++ b/ios/chrome/browser/ui/browser_view_controller.h
@@ -113,16 +113,14 @@
 // Add a new tab with the given url, appends it to the end of the model,
 // and makes it the selected tab. The selected tab is returned.
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab;
+                   transition:(ui::PageTransition)transition;
 
 // Add a new tab with the given url, at the given |position|,
 // and makes it the selected tab. The selected tab is returned.
 // If |position| == NSNotFound the tab will be added at the end of the stack.
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab;
+                   transition:(ui::PageTransition)transition;
 
 // Add a new tab with the given url, at the given |position|,
 // and makes it the selected tab. The selected tab is returned.
@@ -131,7 +129,6 @@
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
                    transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab
            tabAddedCompletion:(ProceduralBlock)tabAddedCompletion;
 
 // Informs the BVC that a new foreground tab is about to be opened. This is
diff --git a/ios/chrome/browser/ui/browser_view_controller.mm b/ios/chrome/browser/ui/browser_view_controller.mm
index 3bb2878..8a8955c 100644
--- a/ios/chrome/browser/ui/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view_controller.mm
@@ -848,8 +848,7 @@
 // the selected tab and return it.
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                      postData:(TemplateURLRef::PostContent*)postData
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab;
+                   transition:(ui::PageTransition)transition;
 // Internal method that all of the similar public and private methods call.
 // Adds a new tab with |url| and |postData| (if not null) at |position| in the
 // tab model (or at the end if |position is NSNotFound|, with |transition| as
@@ -859,7 +858,6 @@
                      postData:(TemplateURLRef::PostContent*)postData
                       atIndex:(NSUInteger)position
                    transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab
            tabAddedCompletion:(ProceduralBlock)tabAddedCompletion;
 // Whether the given tab's URL is an application specific URL.
 - (BOOL)isTabNativePage:(Tab*)tab;
@@ -1407,35 +1405,29 @@
 }
 
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab {
+                   transition:(ui::PageTransition)transition {
   return [self addSelectedTabWithURL:url
                              atIndex:[_model count]
-                          transition:transition
-                              opener:parentTab];
+                          transition:transition];
 }
 
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab {
+                   transition:(ui::PageTransition)transition {
   return [self addSelectedTabWithURL:url
                              atIndex:position
                           transition:transition
-                              opener:parentTab
                   tabAddedCompletion:nil];
 }
 
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                       atIndex:(NSUInteger)position
                    transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab
            tabAddedCompletion:(ProceduralBlock)tabAddedCompletion {
   return [self addSelectedTabWithURL:url
                             postData:NULL
                              atIndex:position
                           transition:transition
-                              opener:parentTab
                   tabAddedCompletion:tabAddedCompletion];
 }
 
@@ -2833,13 +2825,11 @@
 
 - (Tab*)addSelectedTabWithURL:(const GURL&)url
                      postData:(TemplateURLRef::PostContent*)postData
-                   transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab {
+                   transition:(ui::PageTransition)transition {
   return [self addSelectedTabWithURL:url
                             postData:postData
                              atIndex:[_model count]
                           transition:transition
-                              opener:(Tab*)parentTab
                   tabAddedCompletion:nil];
 }
 
@@ -2847,7 +2837,6 @@
                      postData:(TemplateURLRef::PostContent*)postData
                       atIndex:(NSUInteger)position
                    transition:(ui::PageTransition)transition
-                       opener:(Tab*)parentTab
            tabAddedCompletion:(ProceduralBlock)tabAddedCompletion {
   if (position == NSNotFound)
     position = [_model count];
@@ -2879,7 +2868,7 @@
   }
 
   Tab* tab = [_model insertTabWithLoadParams:params
-                                      opener:parentTab
+                                      opener:nil
                                  openedByDOM:NO
                                      atIndex:position
                                 inBackground:NO];
@@ -3670,8 +3659,7 @@
       search_args, templateUrlService->search_terms_data(), &post_content));
   [self addSelectedTabWithURL:result
                      postData:&post_content
-                   transition:ui::PAGE_TRANSITION_TYPED
-                       opener:[_model currentTab]];
+                   transition:ui::PAGE_TRANSITION_TYPED];
 }
 
 // Saves the image at the given URL on the system's album.  The referrer is used
@@ -4666,8 +4654,7 @@
         ->UpdateSnapshot(/*with_overlays=*/true, /*visible_frame_only=*/true);
   }
   [self addSelectedTabWithURL:GURL(kChromeUINewTabURL)
-                   transition:ui::PAGE_TRANSITION_TYPED
-                       opener:currentTab];
+                   transition:ui::PAGE_TRANSITION_TYPED];
 }
 
 - (void)printTab {
@@ -5668,9 +5655,7 @@
 - (void)captivePortalDetectorTabHelper:
             (CaptivePortalDetectorTabHelper*)tabHelper
                  connectWithLandingURL:(const GURL&)landingURL {
-  [self addSelectedTabWithURL:landingURL
-                   transition:ui::PAGE_TRANSITION_TYPED
-                       opener:[_model currentTab]];
+  [self addSelectedTabWithURL:landingURL transition:ui::PAGE_TRANSITION_TYPED];
 }
 
 #pragma mark - PageInfoPresentation
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_accessory_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_accessory_item.mm
index 2dc3f328..96558b3 100644
--- a/ios/chrome/browser/ui/table_view/cells/table_view_accessory_item.mm
+++ b/ios/chrome/browser/ui/table_view/cells/table_view_accessory_item.mm
@@ -94,8 +94,7 @@
     [self.contentView addSubview:horizontalStack];
 
     [NSLayoutConstraint activateConstraints:@[
-      // The favicon view is a fixed size.
-      [_imageView.heightAnchor constraintEqualToConstant:kImageWidth],
+      // The favicon view has fixed width.
       [_imageView.widthAnchor constraintEqualToConstant:kImageWidth],
       // Horizontal Stack constraints.
       [horizontalStack.leadingAnchor
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm
index 3c297f2..82184906 100644
--- a/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm
+++ b/ios/chrome/browser/ui/table_view/cells/table_view_activity_indicator_header_footer_item.mm
@@ -88,8 +88,6 @@
 
     // Set and activate constraints.
     [NSLayoutConstraint activateConstraints:@[
-      [self.contentView.heightAnchor constraintGreaterThanOrEqualToConstant:
-                                         kTableViewHeaderFooterViewHeight],
       [horizontalStack.leadingAnchor
           constraintEqualToAnchor:self.contentView.leadingAnchor
                          constant:kTableViewHorizontalSpacing],
diff --git a/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm b/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm
index 4393d75..005b264a 100644
--- a/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm
+++ b/ios/chrome/browser/ui/table_view/cells/table_view_disclosure_header_footer_item.mm
@@ -79,13 +79,16 @@
         preferredFontDescriptorWithTextStyle:UIFontTextStyleSubheadline];
     UIFontDescriptor* styleDescriptor = [baseDescriptor
         fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
-
     _titleLabel.font =
         [UIFont fontWithDescriptor:styleDescriptor size:kUseDefaultFontSize];
+
     _subtitleLabel = [[UILabel alloc] init];
     _subtitleLabel.font =
         [UIFont preferredFontForTextStyle:UIFontTextStyleCaption1];
     _subtitleLabel.textColor = [UIColor lightGrayColor];
+    [_subtitleLabel
+        setContentCompressionResistancePriority:UILayoutPriorityDefaultHigh
+                                        forAxis:UILayoutConstraintAxisVertical];
 
     // Vertical StackView.
     UIStackView* verticalStack = [[UIStackView alloc]
@@ -112,8 +115,6 @@
 
     // Set and activate constraints.
     [NSLayoutConstraint activateConstraints:@[
-      [self.contentView.heightAnchor constraintGreaterThanOrEqualToConstant:
-                                         kTableViewHeaderFooterViewHeight],
       [horizontalStack.leadingAnchor
           constraintEqualToAnchor:self.contentView.leadingAnchor
                          constant:kTableViewHorizontalSpacing],
diff --git a/ipc/ipc_mojo_bootstrap.cc b/ipc/ipc_mojo_bootstrap.cc
index 96093eb..c28c2c1 100644
--- a/ipc/ipc_mojo_bootstrap.cc
+++ b/ipc/ipc_mojo_bootstrap.cc
@@ -639,13 +639,6 @@
         if (!shut_down_) {
           base::AutoLock lock(outgoing_messages_lock_);
           outgoing_messages_.emplace_back(std::move(*message));
-
-          // TODO(https://crbug.com/813045): Change this to a DCHECK. Typically
-          // this queue won't exceed something like 50 messages even on slow
-          // devices - higher numbers probably indicate that IPC messages are
-          // leaked.
-          CHECK_LE(outgoing_messages_.size(),
-                   MojoBootstrap::kMaxOutgoingMessagesSizeForTesting);
         }
         return true;
       }
diff --git a/media/mojo/interfaces/BUILD.gn b/media/mojo/interfaces/BUILD.gn
index 0b6fa72f..82eaea9 100644
--- a/media/mojo/interfaces/BUILD.gn
+++ b/media/mojo/interfaces/BUILD.gn
@@ -47,6 +47,10 @@
     ]
   }
 
+  if (is_chromecast) {
+    sources += [ "application_session_id_manager.mojom" ]
+  }
+
   public_deps = [
     "//gpu/ipc/common:interfaces",
     "//mojo/public/mojom/base",
diff --git a/media/mojo/interfaces/application_session_id_manager.mojom b/media/mojo/interfaces/application_session_id_manager.mojom
new file mode 100644
index 0000000..27cc9c2
--- /dev/null
+++ b/media/mojo/interfaces/application_session_id_manager.mojom
@@ -0,0 +1,13 @@
+// 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.
+
+module media.mojom;
+
+// This is a service attached to RenderFrameHost.
+// This is only used for Chromecast.
+interface ApplicationSessionIdManager {
+  // Returns the |application_session_id| associated with the
+  // RenderFrameHost.
+  GetApplicationSessionId() => (string application_session_id);
+};
\ No newline at end of file
diff --git a/media/mojo/services/interface_factory_impl.cc b/media/mojo/services/interface_factory_impl.cc
index 14df044..1465a28 100644
--- a/media/mojo/services/interface_factory_impl.cc
+++ b/media/mojo/services/interface_factory_impl.cc
@@ -116,7 +116,8 @@
   // audio device ID. See interface_factory.mojom.
   const std::string& audio_device_id = type_specific_id;
   auto renderer = mojo_media_client_->CreateRenderer(
-      base::ThreadTaskRunnerHandle::Get(), media_log_, audio_device_id);
+      interfaces_.get(), base::ThreadTaskRunnerHandle::Get(), media_log_,
+      audio_device_id);
   if (!renderer) {
     DLOG(ERROR) << "Renderer creation failed.";
     return;
diff --git a/media/mojo/services/mojo_media_client.cc b/media/mojo/services/mojo_media_client.cc
index 83ef569f..04b7a722 100644
--- a/media/mojo/services/mojo_media_client.cc
+++ b/media/mojo/services/mojo_media_client.cc
@@ -38,6 +38,7 @@
 }
 
 std::unique_ptr<Renderer> MojoMediaClient::CreateRenderer(
+    service_manager::mojom::InterfaceProvider* host_interfaces,
     scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     MediaLog* media_log,
     const std::string& audio_device_id) {
diff --git a/media/mojo/services/mojo_media_client.h b/media/mojo/services/mojo_media_client.h
index 47c8b971..fbbd819 100644
--- a/media/mojo/services/mojo_media_client.h
+++ b/media/mojo/services/mojo_media_client.h
@@ -64,6 +64,7 @@
   // Returns the Renderer to be used by MojoRendererService.
   // TODO(hubbe): Find out whether we should pass in |target_color_space| here.
   virtual std::unique_ptr<Renderer> CreateRenderer(
+      service_manager::mojom::InterfaceProvider* host_interfaces,
       scoped_refptr<base::SingleThreadTaskRunner> task_runner,
       MediaLog* media_log,
       const std::string& audio_device_id);
diff --git a/media/mojo/services/test_mojo_media_client.cc b/media/mojo/services/test_mojo_media_client.cc
index 6c3ce3d4..144c0b2 100644
--- a/media/mojo/services/test_mojo_media_client.cc
+++ b/media/mojo/services/test_mojo_media_client.cc
@@ -57,6 +57,7 @@
 }
 
 std::unique_ptr<Renderer> TestMojoMediaClient::CreateRenderer(
+    service_manager::mojom::InterfaceProvider* host_interfaces,
     scoped_refptr<base::SingleThreadTaskRunner> task_runner,
     MediaLog* media_log,
     const std::string& /* audio_device_id */) {
diff --git a/media/mojo/services/test_mojo_media_client.h b/media/mojo/services/test_mojo_media_client.h
index d5adbeb..ac517bb 100644
--- a/media/mojo/services/test_mojo_media_client.h
+++ b/media/mojo/services/test_mojo_media_client.h
@@ -30,6 +30,7 @@
   // MojoMediaClient implementation.
   void Initialize(service_manager::Connector* connector) final;
   std::unique_ptr<Renderer> CreateRenderer(
+      service_manager::mojom::InterfaceProvider* host_interfaces,
       scoped_refptr<base::SingleThreadTaskRunner> task_runner,
       MediaLog* media_log,
       const std::string& audio_device_id) final;
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 05bf410..05fc7a68 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -570,7 +570,7 @@
                     const SocketTag& socket_tag,
                     ClientSocketPool::RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override {
     last_group_name_ = group_name;
     socket_requested_ = true;
diff --git a/net/http/http_proxy_client_socket_pool.cc b/net/http/http_proxy_client_socket_pool.cc
index 73745a3..aeceb46 100644
--- a/net/http/http_proxy_client_socket_pool.cc
+++ b/net/http/http_proxy_client_socket_pool.cc
@@ -313,14 +313,14 @@
                                              const SocketTag& socket_tag,
                                              RespectLimits respect_limits,
                                              ClientSocketHandle* handle,
-                                             const CompletionCallback& callback,
+                                             CompletionOnceCallback callback,
                                              const NetLogWithSource& net_log) {
   const scoped_refptr<HttpProxySocketParams>* casted_socket_params =
       static_cast<const scoped_refptr<HttpProxySocketParams>*>(socket_params);
 
   return base_.RequestSocket(group_name, *casted_socket_params, priority,
-                             socket_tag, respect_limits, handle, callback,
-                             net_log);
+                             socket_tag, respect_limits, handle,
+                             std::move(callback), net_log);
 }
 
 void HttpProxyClientSocketPool::RequestSockets(
diff --git a/net/http/http_proxy_client_socket_pool.h b/net/http/http_proxy_client_socket_pool.h
index 7cf9b90e..026472f4 100644
--- a/net/http/http_proxy_client_socket_pool.h
+++ b/net/http/http_proxy_client_socket_pool.h
@@ -14,6 +14,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
+#include "net/base/completion_once_callback.h"
 #include "net/base/host_port_pair.h"
 #include "net/base/net_export.h"
 #include "net/http/http_auth.h"
@@ -171,7 +172,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
 
   void RequestSockets(const std::string& group_name,
diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc
index ba3a307..44ba2e5 100644
--- a/net/http/http_stream_factory_unittest.cc
+++ b/net/http/http_stream_factory_unittest.cc
@@ -400,7 +400,7 @@
                     const SocketTag& socket_tag,
                     ClientSocketPool::RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override {
     ADD_FAILURE();
     return ERR_UNEXPECTED;
diff --git a/net/socket/client_socket_pool.h b/net/socket/client_socket_pool.h
index 03579dd5..ad722637 100644
--- a/net/socket/client_socket_pool.h
+++ b/net/socket/client_socket_pool.h
@@ -11,7 +11,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/time/time.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
 #include "net/base/load_states.h"
 #include "net/base/net_export.h"
 #include "net/base/request_priority.h"
@@ -107,7 +107,7 @@
                             const SocketTag& socket_tag,
                             RespectLimits respect_limits,
                             ClientSocketHandle* handle,
-                            const CompletionCallback& callback,
+                            CompletionOnceCallback callback,
                             const NetLogWithSource& net_log) = 0;
 
   // RequestSockets is used to request that |num_sockets| be connected in the
@@ -137,9 +137,8 @@
 
   // Called to cancel a RequestSocket call that returned ERR_IO_PENDING.  The
   // same handle parameter must be passed to this method as was passed to the
-  // RequestSocket call being cancelled.  The associated CompletionCallback is
-  // not run.  However, for performance, we will let one ConnectJob complete
-  // and go idle.
+  // RequestSocket call being cancelled.  The associated callback is not run.
+  // However, for performance, we will let one ConnectJob complete and go idle.
   virtual void CancelRequest(const std::string& group_name,
                              ClientSocketHandle* handle) = 0;
 
diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
index 005bb26..c5d9f8a 100644
--- a/net/socket/client_socket_pool_base.cc
+++ b/net/socket/client_socket_pool_base.cc
@@ -133,14 +133,14 @@
 
 ClientSocketPoolBaseHelper::Request::Request(
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     RequestPriority priority,
     const SocketTag& socket_tag,
     ClientSocketPool::RespectLimits respect_limits,
     Flags flags,
     const NetLogWithSource& net_log)
     : handle_(handle),
-      callback_(callback),
+      callback_(std::move(callback)),
       priority_(priority),
       respect_limits_(respect_limits),
       flags_(flags),
@@ -208,13 +208,16 @@
 }
 
 ClientSocketPoolBaseHelper::CallbackResultPair::CallbackResultPair(
-    const CompletionCallback& callback_in, int result_in)
-    : callback(callback_in),
-      result(result_in) {
-}
+    CompletionOnceCallback callback_in,
+    int result_in)
+    : callback(std::move(callback_in)), result(result_in) {}
 
 ClientSocketPoolBaseHelper::CallbackResultPair::CallbackResultPair(
-    const CallbackResultPair& other) = default;
+    ClientSocketPoolBaseHelper::CallbackResultPair&& other) = default;
+
+ClientSocketPoolBaseHelper::CallbackResultPair&
+ClientSocketPoolBaseHelper::CallbackResultPair::operator=(
+    ClientSocketPoolBaseHelper::CallbackResultPair&& other) = default;
 
 ClientSocketPoolBaseHelper::CallbackResultPair::~CallbackResultPair() = default;
 
@@ -271,7 +274,7 @@
 int ClientSocketPoolBaseHelper::RequestSocket(
     const std::string& group_name,
     std::unique_ptr<Request> request) {
-  CHECK(!request->callback().is_null());
+  CHECK(request->has_callback());
   CHECK(request->handle());
 
   // Cleanup any timed-out idle sockets.
@@ -309,7 +312,7 @@
 void ClientSocketPoolBaseHelper::RequestSockets(const std::string& group_name,
                                                 const Request& request,
                                                 int num_sockets) {
-  DCHECK(request.callback().is_null());
+  DCHECK(!request.has_callback());
   DCHECK(!request.handle());
 
   // Cleanup any timed-out idle sockets.
@@ -962,8 +965,8 @@
                     connect_timing, request->handle(), base::TimeDelta(), group,
                     request->net_log());
       request->net_log().EndEvent(NetLogEventType::SOCKET_POOL);
-      InvokeUserCallbackLater(request->handle(), request->callback(), result,
-                              request->socket_tag());
+      InvokeUserCallbackLater(request->handle(), request->release_callback(),
+                              result, request->socket_tag());
     } else {
       AddIdleSocket(std::move(socket), group);
       OnAvailableSocketSlot(group_name, group);
@@ -986,8 +989,8 @@
       }
       request->net_log().EndEventWithNetErrorCode(NetLogEventType::SOCKET_POOL,
                                                   result);
-      InvokeUserCallbackLater(request->handle(), request->callback(), result,
-                              request->socket_tag());
+      InvokeUserCallbackLater(request->handle(), request->release_callback(),
+                              result, request->socket_tag());
     } else {
       RemoveConnectJob(job, group);
     }
@@ -1050,7 +1053,7 @@
 
     request->net_log().EndEventWithNetErrorCode(NetLogEventType::SOCKET_POOL,
                                                 rv);
-    InvokeUserCallbackLater(request->handle(), request->callback(), rv,
+    InvokeUserCallbackLater(request->handle(), request->release_callback(), rv,
                             request->socket_tag());
   }
 }
@@ -1129,8 +1132,8 @@
       std::unique_ptr<Request> request = group->PopNextPendingRequest();
       if (!request)
         break;
-      InvokeUserCallbackLater(request->handle(), request->callback(), error,
-                              request->socket_tag());
+      InvokeUserCallbackLater(request->handle(), request->release_callback(),
+                              error, request->socket_tag());
     }
 
     // Delete group if no longer needed.
@@ -1198,11 +1201,11 @@
 
 void ClientSocketPoolBaseHelper::InvokeUserCallbackLater(
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     int rv,
     const SocketTag& socket_tag) {
   CHECK(!base::ContainsKey(pending_callback_map_, handle));
-  pending_callback_map_[handle] = CallbackResultPair(callback, rv);
+  pending_callback_map_[handle] = CallbackResultPair(std::move(callback), rv);
   if (rv == OK) {
     handle->socket()->ApplySocketTag(socket_tag);
   }
@@ -1220,10 +1223,10 @@
     return;
 
   CHECK(!handle->is_initialized());
-  CompletionCallback callback = it->second.callback;
+  CompletionOnceCallback callback = std::move(it->second.callback);
   int result = it->second.result;
   pending_callback_map_.erase(it);
-  callback.Run(result);
+  std::move(callback).Run(result);
 }
 
 void ClientSocketPoolBaseHelper::TryToCloseSocketsInLayeredPools() {
diff --git a/net/socket/client_socket_pool_base.h b/net/socket/client_socket_pool_base.h
index 9df87d64..7c972d7 100644
--- a/net/socket/client_socket_pool_base.h
+++ b/net/socket/client_socket_pool_base.h
@@ -40,7 +40,7 @@
 #include "base/time/time.h"
 #include "base/timer/timer.h"
 #include "net/base/address_list.h"
-#include "net/base/completion_callback.h"
+#include "net/base/completion_once_callback.h"
 #include "net/base/load_states.h"
 #include "net/base/load_timing_info.h"
 #include "net/base/net_errors.h"
@@ -187,7 +187,7 @@
   class NET_EXPORT_PRIVATE Request {
    public:
     Request(ClientSocketHandle* handle,
-            const CompletionCallback& callback,
+            CompletionOnceCallback callback,
             RequestPriority priority,
             const SocketTag& socket_tag,
             ClientSocketPool::RespectLimits respect_limits,
@@ -197,7 +197,8 @@
     virtual ~Request();
 
     ClientSocketHandle* handle() const { return handle_; }
-    const CompletionCallback& callback() const { return callback_; }
+    bool has_callback() const { return static_cast<bool>(callback_); }
+    CompletionOnceCallback release_callback() { return std::move(callback_); }
     RequestPriority priority() const { return priority_; }
     void set_priority(RequestPriority priority) { priority_ = priority; }
     ClientSocketPool::RespectLimits respect_limits() const {
@@ -218,7 +219,7 @@
     };
 
     ClientSocketHandle* const handle_;
-    const CompletionCallback callback_;
+    CompletionOnceCallback callback_;
     RequestPriority priority_;
     const ClientSocketPool::RespectLimits respect_limits_;
     const Flags flags_;
@@ -534,11 +535,12 @@
 
   struct CallbackResultPair {
     CallbackResultPair();
-    CallbackResultPair(const CompletionCallback& callback_in, int result_in);
-    CallbackResultPair(const CallbackResultPair& other);
+    CallbackResultPair(CompletionOnceCallback callback_in, int result_in);
+    CallbackResultPair(CallbackResultPair&& other);
+    CallbackResultPair& operator=(CallbackResultPair&& other);
     ~CallbackResultPair();
 
-    CompletionCallback callback;
+    CompletionOnceCallback callback;
     int result;
   };
 
@@ -626,7 +628,7 @@
   // keyed by |handle|. Apply |socket_tag| to the socket if socket successfully
   // created.
   void InvokeUserCallbackLater(ClientSocketHandle* handle,
-                               const CompletionCallback& callback,
+                               CompletionOnceCallback callback,
                                int rv,
                                const SocketTag& socket_tag);
 
@@ -702,7 +704,7 @@
   class Request : public internal::ClientSocketPoolBaseHelper::Request {
    public:
     Request(ClientSocketHandle* handle,
-            const CompletionCallback& callback,
+            CompletionOnceCallback callback,
             RequestPriority priority,
             const SocketTag& socket_tag,
             ClientSocketPool::RespectLimits respect_limits,
@@ -710,7 +712,7 @@
             const scoped_refptr<SocketParams>& params,
             const NetLogWithSource& net_log)
         : internal::ClientSocketPoolBaseHelper::Request(handle,
-                                                        callback,
+                                                        std::move(callback),
                                                         priority,
                                                         socket_tag,
                                                         respect_limits,
@@ -782,10 +784,10 @@
                     const SocketTag& socket_tag,
                     ClientSocketPool::RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) {
     std::unique_ptr<Request> request(new Request(
-        handle, callback, priority, socket_tag, respect_limits,
+        handle, std::move(callback), priority, socket_tag, respect_limits,
         internal::ClientSocketPoolBaseHelper::NORMAL, params, net_log));
     return helper_.RequestSocket(group_name, std::move(request));
   }
@@ -797,10 +799,10 @@
                       const scoped_refptr<SocketParams>& params,
                       int num_sockets,
                       const NetLogWithSource& net_log) {
-    const Request request(nullptr /* no handle */, CompletionCallback(), IDLE,
-                          SocketTag(), ClientSocketPool::RespectLimits::ENABLED,
-                          internal::ClientSocketPoolBaseHelper::NO_IDLE_SOCKETS,
-                          params, net_log);
+    const Request request(
+        nullptr /* no handle */, CompletionOnceCallback(), IDLE, SocketTag(),
+        ClientSocketPool::RespectLimits::ENABLED,
+        internal::ClientSocketPoolBaseHelper::NO_IDLE_SOCKETS, params, net_log);
     helper_.RequestSockets(group_name, request, num_sockets);
   }
 
diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc
index 96f58d2..e4c38ff 100644
--- a/net/socket/client_socket_pool_base_unittest.cc
+++ b/net/socket/client_socket_pool_base_unittest.cc
@@ -530,13 +530,13 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override {
     const scoped_refptr<TestSocketParams>* casted_socket_params =
         static_cast<const scoped_refptr<TestSocketParams>*>(params);
     return base_.RequestSocket(group_name, *casted_socket_params, priority,
-                               socket_tag, respect_limits, handle, callback,
-                               net_log);
+                               socket_tag, respect_limits, handle,
+                               std::move(callback), net_log);
   }
 
   void RequestSockets(const std::string& group_name,
diff --git a/net/socket/socket_test_util.cc b/net/socket/socket_test_util.cc
index 17ebc7d..1264604 100644
--- a/net/socket/socket_test_util.cc
+++ b/net/socket/socket_test_util.cc
@@ -2034,14 +2034,14 @@
     const SocketTag& socket_tag,
     RespectLimits respect_limits,
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     const NetLogWithSource& net_log) {
   last_request_priority_ = priority;
   std::unique_ptr<StreamSocket> socket =
       client_socket_factory_->CreateTransportClientSocket(
           AddressList(), NULL, net_log.net_log(), NetLogSource());
-  MockConnectJob* job =
-      new MockConnectJob(std::move(socket), handle, socket_tag, callback);
+  MockConnectJob* job = new MockConnectJob(std::move(socket), handle,
+                                           socket_tag, std::move(callback));
   job_list_.push_back(base::WrapUnique(job));
   handle->set_pool_id(1);
   return job->Connect();
@@ -2091,11 +2091,11 @@
                                              const SocketTag& socket_tag,
                                              RespectLimits respect_limits,
                                              ClientSocketHandle* handle,
-                                             const CompletionCallback& callback,
+                                             CompletionOnceCallback callback,
                                              const NetLogWithSource& net_log) {
   return transport_pool_->RequestSocket(group_name, socket_params, priority,
                                         socket_tag, respect_limits, handle,
-                                        callback, net_log);
+                                        std::move(callback), net_log);
 }
 
 void MockSOCKSClientSocketPool::SetPriority(const std::string& group_name,
diff --git a/net/socket/socket_test_util.h b/net/socket/socket_test_util.h
index 772fd9b..888e3bc 100644
--- a/net/socket/socket_test_util.h
+++ b/net/socket/socket_test_util.h
@@ -1131,7 +1131,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
   void SetPriority(const std::string& group_name,
                    ClientSocketHandle* handle,
@@ -1167,7 +1167,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
   void SetPriority(const std::string& group_name,
                    ClientSocketHandle* handle,
diff --git a/net/socket/socks_client_socket_pool.cc b/net/socket/socks_client_socket_pool.cc
index 2dad273..d5da299 100644
--- a/net/socket/socks_client_socket_pool.cc
+++ b/net/socket/socks_client_socket_pool.cc
@@ -221,14 +221,14 @@
                                          const SocketTag& socket_tag,
                                          RespectLimits respect_limits,
                                          ClientSocketHandle* handle,
-                                         const CompletionCallback& callback,
+                                         CompletionOnceCallback callback,
                                          const NetLogWithSource& net_log) {
   const scoped_refptr<SOCKSSocketParams>* casted_socket_params =
       static_cast<const scoped_refptr<SOCKSSocketParams>*>(socket_params);
 
   return base_.RequestSocket(group_name, *casted_socket_params, priority,
-                             socket_tag, respect_limits, handle, callback,
-                             net_log);
+                             socket_tag, respect_limits, handle,
+                             std::move(callback), net_log);
 }
 
 void SOCKSClientSocketPool::RequestSockets(const std::string& group_name,
diff --git a/net/socket/socks_client_socket_pool.h b/net/socket/socks_client_socket_pool.h
index e079e92..1cfa31b 100644
--- a/net/socket/socks_client_socket_pool.h
+++ b/net/socket/socks_client_socket_pool.h
@@ -135,7 +135,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
 
   void RequestSockets(const std::string& group_name,
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc
index 2957628..ec2018a 100644
--- a/net/socket/ssl_client_socket_pool.cc
+++ b/net/socket/ssl_client_socket_pool.cc
@@ -543,14 +543,14 @@
                                        const SocketTag& socket_tag,
                                        RespectLimits respect_limits,
                                        ClientSocketHandle* handle,
-                                       const CompletionCallback& callback,
+                                       CompletionOnceCallback callback,
                                        const NetLogWithSource& net_log) {
   const scoped_refptr<SSLSocketParams>* casted_socket_params =
       static_cast<const scoped_refptr<SSLSocketParams>*>(socket_params);
 
   return base_.RequestSocket(group_name, *casted_socket_params, priority,
-                             socket_tag, respect_limits, handle, callback,
-                             net_log);
+                             socket_tag, respect_limits, handle,
+                             std::move(callback), net_log);
 }
 
 void SSLClientSocketPool::RequestSockets(const std::string& group_name,
diff --git a/net/socket/ssl_client_socket_pool.h b/net/socket/ssl_client_socket_pool.h
index 1a96083..4c06627 100644
--- a/net/socket/ssl_client_socket_pool.h
+++ b/net/socket/ssl_client_socket_pool.h
@@ -206,7 +206,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
 
   void RequestSockets(const std::string& group_name,
diff --git a/net/socket/transport_client_socket_pool.cc b/net/socket/transport_client_socket_pool.cc
index dc476a6..58d1674 100644
--- a/net/socket/transport_client_socket_pool.cc
+++ b/net/socket/transport_client_socket_pool.cc
@@ -495,7 +495,7 @@
                                              const SocketTag& socket_tag,
                                              RespectLimits respect_limits,
                                              ClientSocketHandle* handle,
-                                             const CompletionCallback& callback,
+                                             CompletionOnceCallback callback,
                                              const NetLogWithSource& net_log) {
   const scoped_refptr<TransportSocketParams>* casted_params =
       static_cast<const scoped_refptr<TransportSocketParams>*>(params);
@@ -503,7 +503,8 @@
   NetLogTcpClientSocketPoolRequestedSocket(net_log, casted_params);
 
   return base_.RequestSocket(group_name, *casted_params, priority, socket_tag,
-                             respect_limits, handle, callback, net_log);
+                             respect_limits, handle, std::move(callback),
+                             net_log);
 }
 
 void TransportClientSocketPool::NetLogTcpClientSocketPoolRequestedSocket(
diff --git a/net/socket/transport_client_socket_pool.h b/net/socket/transport_client_socket_pool.h
index 43af234c..1baeb5a 100644
--- a/net/socket/transport_client_socket_pool.h
+++ b/net/socket/transport_client_socket_pool.h
@@ -206,7 +206,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
   void RequestSockets(const std::string& group_name,
                       const void* params,
diff --git a/net/socket/websocket_transport_client_socket_pool.cc b/net/socket/websocket_transport_client_socket_pool.cc
index 2295c11..49a45bc 100644
--- a/net/socket/websocket_transport_client_socket_pool.cc
+++ b/net/socket/websocket_transport_client_socket_pool.cc
@@ -5,8 +5,8 @@
 #include "net/socket/websocket_transport_client_socket_pool.h"
 
 #include <algorithm>
-#include <utility>
 
+#include "base/callback_helpers.h"
 #include "base/compiler_specific.h"
 #include "base/location.h"
 #include "base/logging.h"
@@ -35,7 +35,7 @@
     ClientSocketPool::RespectLimits respect_limits,
     const scoped_refptr<TransportSocketParams>& params,
     base::TimeDelta timeout_duration,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     ClientSocketFactory* client_socket_factory,
     HostResolver* host_resolver,
     ClientSocketHandle* handle,
@@ -59,7 +59,7 @@
       race_result_(TransportConnectJob::RACE_UNKNOWN),
       handle_(handle),
       websocket_endpoint_lock_manager_(websocket_endpoint_lock_manager),
-      callback_(callback),
+      callback_(std::move(callback)),
       request_net_log_(request_net_log),
       had_ipv4_(false),
       had_ipv6_(false) {}
@@ -333,7 +333,7 @@
     const SocketTag& socket_tag,
     RespectLimits respect_limits,
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     const NetLogWithSource& request_net_log) {
   DCHECK(params);
   const scoped_refptr<TransportSocketParams>& casted_params =
@@ -352,7 +352,7 @@
       respect_limits == ClientSocketPool::RespectLimits::ENABLED) {
     request_net_log.AddEvent(NetLogEventType::SOCKET_POOL_STALLED_MAX_SOCKETS);
     stalled_request_queue_.emplace_back(casted_params, priority, handle,
-                                        callback, request_net_log);
+                                        std::move(callback), request_net_log);
     StalledRequestQueue::iterator iterator = stalled_request_queue_.end();
     --iterator;
     DCHECK_EQ(handle, iterator->handle);
@@ -369,9 +369,9 @@
   std::unique_ptr<WebSocketTransportConnectJob> connect_job(
       new WebSocketTransportConnectJob(
           group_name, priority, respect_limits, casted_params,
-          ConnectionTimeout(), callback, client_socket_factory_, host_resolver_,
-          handle, &connect_job_delegate_, websocket_endpoint_lock_manager_,
-          pool_net_log_, request_net_log));
+          ConnectionTimeout(), std::move(callback), client_socket_factory_,
+          host_resolver_, handle, &connect_job_delegate_,
+          websocket_endpoint_lock_manager_, pool_net_log_, request_net_log));
 
   int result = connect_job->Connect();
 
@@ -452,15 +452,15 @@
   for (PendingConnectsMap::iterator it = pending_connects_.begin();
        it != pending_connects_.end();
        ++it) {
-    InvokeUserCallbackLater(
-        it->second->handle(), it->second->callback(), error);
+    InvokeUserCallbackLater(it->second->handle(),
+                            it->second->release_callback(), error);
     delete it->second, it->second = nullptr;
   }
   pending_connects_.clear();
   for (StalledRequestQueue::iterator it = stalled_request_queue_.begin();
        it != stalled_request_queue_.end();
        ++it) {
-    InvokeUserCallbackLater(it->handle, it->callback, error);
+    InvokeUserCallbackLater(it->handle, std::move(it->callback), error);
   }
   stalled_request_map_.clear();
   stalled_request_queue_.clear();
@@ -573,7 +573,7 @@
 
   bool handed_out_socket = TryHandOutSocket(result, job);
 
-  CompletionCallback callback = job->callback();
+  CompletionOnceCallback callback = job->release_callback();
 
   ClientSocketHandle* const handle = job->handle();
 
@@ -585,27 +585,28 @@
   if (!handed_out_socket)
     ActivateStalledRequest();
 
-  InvokeUserCallbackLater(handle, callback, result);
+  InvokeUserCallbackLater(handle, std::move(callback), result);
 }
 
 void WebSocketTransportClientSocketPool::InvokeUserCallbackLater(
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     int rv) {
   DCHECK(!pending_callbacks_.count(handle));
   pending_callbacks_.insert(handle);
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
-      base::Bind(&WebSocketTransportClientSocketPool::InvokeUserCallback,
-                 weak_factory_.GetWeakPtr(), handle, callback, rv));
+      base::BindOnce(&WebSocketTransportClientSocketPool::InvokeUserCallback,
+                     weak_factory_.GetWeakPtr(), handle, std::move(callback),
+                     rv));
 }
 
 void WebSocketTransportClientSocketPool::InvokeUserCallback(
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     int rv) {
   if (pending_callbacks_.erase(handle))
-    callback.Run(rv);
+    std::move(callback).Run(rv);
 }
 
 bool WebSocketTransportClientSocketPool::ReachedMaxSocketsLimit() const {
@@ -671,21 +672,27 @@
   // however if all the connects fail synchronously for some reason, we may be
   // able to clear the whole queue at once.
   while (!stalled_request_queue_.empty() && !ReachedMaxSocketsLimit()) {
-    StalledRequest request(stalled_request_queue_.front());
+    StalledRequest request = std::move(stalled_request_queue_.front());
     stalled_request_queue_.pop_front();
     stalled_request_map_.erase(request.handle);
 
+    // Wrap request.callback into a copyable (repeating) callback so that it can
+    // be passed to RequestSocket() and yet called if RequestSocket() returns
+    // synchronously.
+    auto copyable_callback =
+        base::AdaptCallbackForRepeating(std::move(request.callback));
+
     int rv =
         RequestSocket("ignored", &request.params, request.priority, SocketTag(),
                       // Stalled requests can't have |respect_limits|
                       // DISABLED.
-                      RespectLimits::ENABLED, request.handle, request.callback,
+                      RespectLimits::ENABLED, request.handle, copyable_callback,
                       request.net_log);
 
     // ActivateStalledRequest() never returns synchronously, so it is never
     // called re-entrantly.
     if (rv != ERR_IO_PENDING)
-      InvokeUserCallbackLater(request.handle, request.callback, rv);
+      InvokeUserCallbackLater(request.handle, copyable_callback, rv);
   }
 }
 
@@ -718,16 +725,16 @@
     const scoped_refptr<TransportSocketParams>& params,
     RequestPriority priority,
     ClientSocketHandle* handle,
-    const CompletionCallback& callback,
+    CompletionOnceCallback callback,
     const NetLogWithSource& net_log)
     : params(params),
       priority(priority),
       handle(handle),
-      callback(callback),
+      callback(std::move(callback)),
       net_log(net_log) {}
 
 WebSocketTransportClientSocketPool::StalledRequest::StalledRequest(
-    const StalledRequest& other) = default;
+    StalledRequest&& other) = default;
 
 WebSocketTransportClientSocketPool::StalledRequest::~StalledRequest() = default;
 
diff --git a/net/socket/websocket_transport_client_socket_pool.h b/net/socket/websocket_transport_client_socket_pool.h
index 2d72cd8..e8bcc89 100644
--- a/net/socket/websocket_transport_client_socket_pool.h
+++ b/net/socket/websocket_transport_client_socket_pool.h
@@ -10,6 +10,7 @@
 #include <memory>
 #include <set>
 #include <string>
+#include <utility>
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
@@ -50,7 +51,7 @@
       ClientSocketPool::RespectLimits respect_limits,
       const scoped_refptr<TransportSocketParams>& params,
       base::TimeDelta timeout_duration,
-      const CompletionCallback& callback,
+      CompletionOnceCallback callback,
       ClientSocketFactory* client_socket_factory,
       HostResolver* host_resolver,
       ClientSocketHandle* handle,
@@ -65,7 +66,7 @@
   ClientSocketHandle* handle() const { return handle_; }
 
   // Stash the callback from RequestSocket() here for convenience.
-  const CompletionCallback& callback() const { return callback_; }
+  CompletionOnceCallback release_callback() { return std::move(callback_); }
 
   const NetLogWithSource& request_net_log() const { return request_net_log_; }
 
@@ -125,7 +126,7 @@
   TransportConnectJob::RaceResult race_result_;
   ClientSocketHandle* const handle_;
   WebSocketEndpointLockManager* const websocket_endpoint_lock_manager_;
-  CompletionCallback callback_;
+  CompletionOnceCallback callback_;
   NetLogWithSource request_net_log_;
 
   bool had_ipv4_;
@@ -163,7 +164,7 @@
                     const SocketTag& socket_tag,
                     RespectLimits respect_limits,
                     ClientSocketHandle* handle,
-                    const CompletionCallback& callback,
+                    CompletionOnceCallback callback,
                     const NetLogWithSource& net_log) override;
   void RequestSockets(const std::string& group_name,
                       const void* params,
@@ -213,14 +214,15 @@
     StalledRequest(const scoped_refptr<TransportSocketParams>& params,
                    RequestPriority priority,
                    ClientSocketHandle* handle,
-                   const CompletionCallback& callback,
+                   CompletionOnceCallback callback,
                    const NetLogWithSource& net_log);
-    StalledRequest(const StalledRequest& other);
+    StalledRequest(StalledRequest&& other);
     ~StalledRequest();
+
     const scoped_refptr<TransportSocketParams> params;
     const RequestPriority priority;
     ClientSocketHandle* const handle;
-    const CompletionCallback callback;
+    CompletionOnceCallback callback;
     const NetLogWithSource net_log;
   };
 
@@ -241,10 +243,10 @@
   bool TryHandOutSocket(int result, WebSocketTransportConnectJob* job);
   void OnConnectJobComplete(int result, WebSocketTransportConnectJob* job);
   void InvokeUserCallbackLater(ClientSocketHandle* handle,
-                               const CompletionCallback& callback,
+                               CompletionOnceCallback callback,
                                int rv);
   void InvokeUserCallback(ClientSocketHandle* handle,
-                          const CompletionCallback& callback,
+                          CompletionOnceCallback callback,
                           int rv);
   bool ReachedMaxSocketsLimit() const;
   void HandOutSocket(std::unique_ptr<StreamSocket> socket,
diff --git a/pdf/BUILD.gn b/pdf/BUILD.gn
index 149b8d0..e888dcb1 100644
--- a/pdf/BUILD.gn
+++ b/pdf/BUILD.gn
@@ -59,8 +59,6 @@
       "preview_mode_client.h",
       "range_set.cc",
       "range_set.h",
-      "timer.cc",
-      "timer.h",
       "url_loader_wrapper.h",
       "url_loader_wrapper_impl.cc",
       "url_loader_wrapper_impl.h",
diff --git a/pdf/out_of_process_instance.cc b/pdf/out_of_process_instance.cc
index ef8ff23..0358d15f 100644
--- a/pdf/out_of_process_instance.cc
+++ b/pdf/out_of_process_instance.cc
@@ -1540,7 +1540,7 @@
 void OutOfProcessInstance::FormDidOpen(int32_t result) {
   // TODO: inform the user of success/failure.
   if (result != PP_OK) {
-    NOTREACHED();
+    LOG(ERROR) << "FormDidOpen failed: " << result;
   }
 }
 
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc
index 607fbb4..42f079c 100644
--- a/pdf/pdfium/pdfium_engine.cc
+++ b/pdf/pdfium/pdfium_engine.cc
@@ -671,18 +671,6 @@
   TearDownV8();
 }
 
-PDFiumEngine::TouchTimer::TouchTimer(PDFiumEngine* engine,
-                                     int id,
-                                     const pp::TouchInputEvent& event)
-    : Timer(kTouchLongPressTimeout), engine_(engine), id_(id), event_(event) {}
-
-PDFiumEngine::TouchTimer::~TouchTimer() = default;
-
-void PDFiumEngine::TouchTimer::OnTimer() {
-  engine_->HandleLongPress(event_);
-  engine_->KillTouchTimer(id_);
-}
-
 std::unique_ptr<PDFEngine> PDFEngine::Create(PDFEngine::Client* client,
                                              bool enable_javascript) {
   return std::make_unique<PDFiumEngine>(client, enable_javascript);
@@ -1100,7 +1088,7 @@
       rv = OnChar(pp::KeyboardInputEvent(event));
       break;
     case PP_INPUTEVENT_TYPE_TOUCHSTART: {
-      KillTouchTimer(last_touch_timer_id_);
+      KillTouchTimer();
 
       pp::TouchInputEvent touch_event(event);
       if (touch_event.GetTouchCount(PP_TOUCHLIST_TYPE_TARGETTOUCHES) == 1)
@@ -1108,12 +1096,12 @@
       break;
     }
     case PP_INPUTEVENT_TYPE_TOUCHEND:
-      KillTouchTimer(last_touch_timer_id_);
+      KillTouchTimer();
       break;
     case PP_INPUTEVENT_TYPE_TOUCHMOVE:
       // TODO(dsinclair): This should allow a little bit of movement (up to the
       // touch radii) to account for finger jiggle.
-      KillTouchTimer(last_touch_timer_id_);
+      KillTouchTimer();
       break;
     default:
       break;
@@ -3526,12 +3514,13 @@
 }
 
 void PDFiumEngine::ScheduleTouchTimer(const pp::TouchInputEvent& evt) {
-  const int timer_id = ++last_touch_timer_id_;
-  touch_timers_[timer_id] = std::make_unique<TouchTimer>(this, timer_id, evt);
+  touch_timer_.Start(FROM_HERE, kTouchLongPressTimeout,
+                     base::BindRepeating(&PDFiumEngine::HandleLongPress,
+                                         base::Unretained(this), evt));
 }
 
-void PDFiumEngine::KillTouchTimer(int timer_id) {
-  touch_timers_.erase(timer_id);
+void PDFiumEngine::KillTouchTimer() {
+  touch_timer_.Stop();
 }
 
 bool PDFiumEngine::PageIndexInBounds(int index) const {
diff --git a/pdf/pdfium/pdfium_engine.h b/pdf/pdfium/pdfium_engine.h
index 5f2eaa19..3f18bc94 100644
--- a/pdf/pdfium/pdfium_engine.h
+++ b/pdf/pdfium/pdfium_engine.h
@@ -16,13 +16,13 @@
 #include "base/macros.h"
 #include "base/optional.h"
 #include "base/time/time.h"
+#include "base/timer/timer.h"
 #include "pdf/document_loader.h"
 #include "pdf/pdf_engine.h"
 #include "pdf/pdfium/pdfium_form_filler.h"
 #include "pdf/pdfium/pdfium_page.h"
 #include "pdf/pdfium/pdfium_print.h"
 #include "pdf/pdfium/pdfium_range.h"
-#include "pdf/timer.h"
 #include "ppapi/cpp/completion_callback.h"
 #include "ppapi/cpp/dev/buffer_dev.h"
 #include "ppapi/cpp/image_data.h"
@@ -146,20 +146,6 @@
   FPDF_FORMHANDLE form() const { return form_.get(); }
 
  private:
-  class TouchTimer : public Timer {
-   public:
-    TouchTimer(PDFiumEngine* engine, int id, const pp::TouchInputEvent& event);
-    ~TouchTimer() override;
-
-    // Timer overrides:
-    void OnTimer() override;
-
-   private:
-    PDFiumEngine* engine_;
-    const int id_;
-    const pp::TouchInputEvent event_;
-  };
-
   // This helper class is used to detect the difference in selection between
   // construction and destruction.  At destruction, it invalidates all the
   // parts that are newly selected, along with all the parts that used to be
@@ -486,7 +472,7 @@
   float GetToolbarHeightInScreenCoords();
 
   void ScheduleTouchTimer(const pp::TouchInputEvent& event);
-  void KillTouchTimer(int timer_id);
+  void KillTouchTimer();
   void HandleLongPress(const pp::TouchInputEvent& event);
 
   // Returns a VarDictionary (representing a bookmark), which in turn contains
@@ -619,9 +605,8 @@
 
   pp::Size default_page_size_;
 
-  // Used to manage timers for touch long press.
-  std::map<int, std::unique_ptr<TouchTimer>> touch_timers_;
-  int last_touch_timer_id_ = 0;
+  // Timer for touch long press detection.
+  base::OneShotTimer touch_timer_;
 
   // Holds the zero-based page index of the last page that the mouse clicked on.
   int last_page_mouse_down_ = -1;
diff --git a/pdf/pdfium/pdfium_form_filler.cc b/pdf/pdfium/pdfium_form_filler.cc
index 7ef7f3f..c64ccaf 100644
--- a/pdf/pdfium/pdfium_form_filler.cc
+++ b/pdf/pdfium/pdfium_form_filler.cc
@@ -11,7 +11,6 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "pdf/pdfium/pdfium_engine.h"
-#include "pdf/timer.h"
 
 namespace chrome_pdf {
 
@@ -21,23 +20,6 @@
   return base::UTF16ToUTF8(reinterpret_cast<const base::char16*>(wide_string));
 }
 
-class FormFillTimer : public Timer {
- public:
-  FormFillTimer(base::TimeDelta delay, int id, TimerCallback timer_callback)
-      : Timer(delay), id_(id), timer_callback_(timer_callback) {}
-
-  ~FormFillTimer() override = default;
-
-  // Timer overrides:
-  void OnTimer() override { timer_callback_(id_); }
-
- private:
-  const int id_;
-  TimerCallback timer_callback_;
-
-  DISALLOW_COPY_AND_ASSIGN(FormFillTimer);
-};
-
 }  // namespace
 
 PDFiumFormFiller::PDFiumFormFiller(PDFiumEngine* engine, bool enable_javascript)
@@ -644,8 +626,9 @@
 int PDFiumFormFiller::SetTimer(const base::TimeDelta& delay,
                                TimerCallback timer_func) {
   const int timer_id = ++last_timer_id_;
-  timers_[timer_id] =
-      std::make_unique<FormFillTimer>(delay, timer_id, timer_func);
+  auto timer = std::make_unique<base::RepeatingTimer>();
+  timer->Start(FROM_HERE, delay, base::BindRepeating(timer_func, timer_id));
+  timers_[timer_id] = std::move(timer);
   return timer_id;
 }
 
diff --git a/pdf/pdfium/pdfium_form_filler.h b/pdf/pdfium/pdfium_form_filler.h
index 2be6ef5a..df4c7fb3 100644
--- a/pdf/pdfium/pdfium_form_filler.h
+++ b/pdf/pdfium/pdfium_form_filler.h
@@ -10,12 +10,12 @@
 
 #include "base/macros.h"
 #include "base/time/time.h"
+#include "base/timer/timer.h"
 #include "third_party/pdfium/public/fpdf_formfill.h"
 
 namespace chrome_pdf {
 
 class PDFiumEngine;
-class Timer;
 
 class PDFiumFormFiller : public FPDF_FORMFILLINFO, public IPDF_JSPLATFORM {
  public:
@@ -176,8 +176,7 @@
 
   PDFiumEngine* const engine_;
 
-  std::map<int, std::unique_ptr<Timer>> timers_;
-
+  std::map<int, std::unique_ptr<base::RepeatingTimer>> timers_;
   int last_timer_id_ = 0;
 
   DISALLOW_COPY_AND_ASSIGN(PDFiumFormFiller);
diff --git a/pdf/timer.cc b/pdf/timer.cc
deleted file mode 100644
index cbd11a0..0000000
--- a/pdf/timer.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2016 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 "pdf/timer.h"
-
-#include "ppapi/cpp/core.h"
-#include "ppapi/cpp/module.h"
-
-namespace chrome_pdf {
-
-Timer::Timer(base::TimeDelta delay) : delay_(delay), callback_factory_(this) {
-  PostCallback();
-}
-
-Timer::~Timer() = default;
-
-void Timer::PostCallback() {
-  pp::CompletionCallback callback =
-      callback_factory_.NewCallback(&Timer::TimerProc);
-  pp::Module::Get()->core()->CallOnMainThread(delay_.InMilliseconds(), callback,
-                                              0);
-}
-
-void Timer::TimerProc(int32_t /*result*/) {
-  PostCallback();
-  OnTimer();
-}
-
-}  // namespace chrome_pdf
diff --git a/pdf/timer.h b/pdf/timer.h
deleted file mode 100644
index cff2b88..0000000
--- a/pdf/timer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2016 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 PDF_TIMER_H_
-#define PDF_TIMER_H_
-
-#include "base/macros.h"
-#include "base/time/time.h"
-#include "ppapi/utility/completion_callback_factory.h"
-
-namespace chrome_pdf {
-
-// Timer implementation for pepper plugins, based on pp::Core::CallOnMainThread.
-// We can not use base::Timer for plugins, because they have no
-// base::MessageLoop, on which it is based.
-class Timer {
- public:
-  explicit Timer(base::TimeDelta delay);
-  virtual ~Timer();
-
-  virtual void OnTimer() = 0;
-
- private:
-  void PostCallback();
-  void TimerProc(int32_t result);
-
-  const base::TimeDelta delay_;
-  pp::CompletionCallbackFactory<Timer> callback_factory_;
-
-  DISALLOW_COPY_AND_ASSIGN(Timer);
-};
-
-}  // namespace chrome_pdf
-
-#endif  // PDF_TIMER_H_
diff --git a/pdf/url_loader_wrapper_impl.cc b/pdf/url_loader_wrapper_impl.cc
index 050870e..f8d3163 100644
--- a/pdf/url_loader_wrapper_impl.cc
+++ b/pdf/url_loader_wrapper_impl.cc
@@ -10,7 +10,6 @@
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "net/http/http_util.h"
-#include "pdf/timer.h"
 #include "ppapi/c/pp_errors.h"
 #include "ppapi/cpp/logging.h"
 #include "ppapi/cpp/url_request_info.h"
@@ -97,19 +96,6 @@
 
 }  // namespace
 
-class URLLoaderWrapperImpl::ReadStarter : public Timer {
- public:
-  explicit ReadStarter(URLLoaderWrapperImpl* owner)
-      : Timer(kReadDelayMs), owner_(owner) {}
-  ~ReadStarter() override = default;
-
-  // Timer overrides:
-  void OnTimer() override { owner_->ReadResponseBodyImpl(); }
-
- private:
-  URLLoaderWrapperImpl* owner_;
-};
-
 URLLoaderWrapperImpl::URLLoaderWrapperImpl(pp::Instance* plugin_instance,
                                            const pp::URLLoader& url_loader)
     : plugin_instance_(plugin_instance),
@@ -171,7 +157,7 @@
 
 void URLLoaderWrapperImpl::Close() {
   url_loader_.Close();
-  read_starter_.reset();
+  read_starter_.Stop();
 }
 
 void URLLoaderWrapperImpl::OpenRange(const std::string& url,
@@ -195,11 +181,13 @@
   did_read_callback_ = cc;
   buffer_ = buffer;
   buffer_size_ = buffer_size;
-  read_starter_ = std::make_unique<ReadStarter>(this);
+  read_starter_.Start(
+      FROM_HERE, kReadDelayMs,
+      base::BindRepeating(&URLLoaderWrapperImpl::ReadResponseBodyImpl,
+                          base::Unretained(this)));
 }
 
 void URLLoaderWrapperImpl::ReadResponseBodyImpl() {
-  read_starter_.reset();
   pp::CompletionCallback callback =
       callback_factory_.NewCallback(&URLLoaderWrapperImpl::DidRead);
   int rv = url_loader_.ReadResponseBody(buffer_, buffer_size_, callback);
diff --git a/pdf/url_loader_wrapper_impl.h b/pdf/url_loader_wrapper_impl.h
index e942e811..402c3f2 100644
--- a/pdf/url_loader_wrapper_impl.h
+++ b/pdf/url_loader_wrapper_impl.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/macros.h"
+#include "base/timer/timer.h"
 #include "pdf/url_loader_wrapper.h"
 #include "ppapi/cpp/url_loader.h"
 #include "ppapi/utility/completion_callback_factory.h"
@@ -50,8 +51,6 @@
   void SetResponseHeaders(const std::string& response_headers);
 
  private:
-  class ReadStarter;
-
   void SetHeadersFromLoader();
   void ParseHeaders();
   void DidOpen(int32_t result);
@@ -79,7 +78,7 @@
   pp::CompletionCallback did_read_callback_;
   pp::CompletionCallbackFactory<URLLoaderWrapperImpl> callback_factory_;
 
-  std::unique_ptr<ReadStarter> read_starter_;
+  base::OneShotTimer read_starter_;
 
   DISALLOW_COPY_AND_ASSIGN(URLLoaderWrapperImpl);
 };
diff --git a/services/identity/public/cpp/identity_manager.cc b/services/identity/public/cpp/identity_manager.cc
index 5d72a7c..77e85d54 100644
--- a/services/identity/public/cpp/identity_manager.cc
+++ b/services/identity/public/cpp/identity_manager.cc
@@ -14,7 +14,20 @@
     : signin_manager_(signin_manager),
       token_service_(token_service),
       account_tracker_service_(account_tracker_service) {
+  // Initialize the state of the primary account.
   primary_account_info_ = signin_manager_->GetAuthenticatedAccountInfo();
+
+  // Initialize the state of accounts with refresh tokens.
+  // |account_id| is moved into |accounts_with_refresh_tokens_|.
+  // Do not change this to "const std::string&".
+  for (std::string account_id : token_service->GetAccounts()) {
+    AccountInfo account_info =
+        account_tracker_service_->GetAccountInfo(account_id);
+    DCHECK(!account_info.IsEmpty());
+    accounts_with_refresh_tokens_.emplace(std::move(account_id),
+                                          std::move(account_info));
+  }
+
   signin_manager_->AddObserver(this);
 #if !defined(OS_CHROMEOS)
   SigninManager::FromSigninManagerBase(signin_manager_)
@@ -83,6 +96,29 @@
   return !primary_account_info_.account_id.empty();
 }
 
+std::vector<AccountInfo> IdentityManager::GetAccountsWithRefreshTokens() {
+  // TODO(blundell): It seems wasteful to construct this vector every time this
+  // method is called, but it also seems bad to maintain the vector as an ivar
+  // along the map.
+  std::vector<AccountInfo> accounts;
+  accounts.reserve(accounts_with_refresh_tokens_.size());
+
+  for (const auto& pair : accounts_with_refresh_tokens_) {
+    accounts.push_back(pair.second);
+  }
+
+  return accounts;
+}
+
+bool IdentityManager::HasAccountWithRefreshToken(
+    const std::string& account_id) {
+  return base::ContainsKey(accounts_with_refresh_tokens_, account_id);
+}
+
+bool IdentityManager::HasPrimaryAccountWithRefreshToken() {
+  return HasAccountWithRefreshToken(GetPrimaryAccountInfo().account_id);
+}
+
 std::unique_ptr<AccessTokenFetcher>
 IdentityManager::CreateAccessTokenFetcherForAccount(
     const std::string& account_id,
@@ -197,6 +233,20 @@
   AccountInfo account_info =
       account_tracker_service_->GetAccountInfo(account_id);
   DCHECK(!account_info.IsEmpty());
+
+  // Insert the account into |accounts_with_refresh_tokens_|.
+  auto insertion_result = accounts_with_refresh_tokens_.emplace(
+      account_id, std::move(account_info));
+
+  // The account might have already been  present (e.g., this method can fire on
+  // updating an invalid token to a valid one or vice versa); in this case we
+  // sanity-check that the cached account info has the expected values.
+  if (!insertion_result.second) {
+    AccountInfo cached_account_info = insertion_result.first->second;
+    DCHECK_EQ(account_info.gaia, cached_account_info.gaia);
+    DCHECK_EQ(account_info.email, cached_account_info.email);
+  }
+
   for (auto& observer : observer_list_) {
     observer.OnRefreshTokenUpdatedForAccount(account_info, is_valid);
   }
@@ -204,9 +254,27 @@
 
 void IdentityManager::WillFireOnRefreshTokenRevoked(
     const std::string& account_id) {
+  auto iterator = accounts_with_refresh_tokens_.find(account_id);
+  if (iterator == accounts_with_refresh_tokens_.end()) {
+    // A corner case exists wherein the token service revokes tokens while
+    // loading tokens during initial startup. This is the only case in which it
+    // is expected that we could receive this notification without having
+    // previously received a notification that this account was available. In
+    // this case, we simply do not forward on the notification, for the
+    // following reasons: (1) We may not have a fully-populated |account_info|
+    // to send as the argument. (2) Sending the notification breaks clients'
+    // expectations that IdentityManager will only fire RefreshTokenRemoved
+    // notifications for accounts that it previously knew about.
+    DCHECK(!token_service_->AreAllCredentialsLoaded());
+    return;
+  }
+
+  accounts_with_refresh_tokens_.erase(iterator);
+
   AccountInfo account_info =
       account_tracker_service_->GetAccountInfo(account_id);
   DCHECK(!account_info.IsEmpty());
+
   for (auto& observer : observer_list_) {
     observer.OnRefreshTokenRemovedForAccount(account_info);
   }
diff --git a/services/identity/public/cpp/identity_manager.h b/services/identity/public/cpp/identity_manager.h
index 7597be47..68aaa157 100644
--- a/services/identity/public/cpp/identity_manager.h
+++ b/services/identity/public/cpp/identity_manager.h
@@ -120,6 +120,20 @@
   // primary account info has a valid account ID.
   bool HasPrimaryAccount();
 
+  // Provides access to the latest cached information of all accounts that have
+  // refresh tokens.
+  // NOTE: The accounts should not be assumed to be in any particular order; in
+  // particular, they are not guaranteed to be in the order in which the
+  // refresh tokens were added.
+  std::vector<AccountInfo> GetAccountsWithRefreshTokens();
+
+  // Returns true if a refresh token exists for |account_id|.
+  bool HasAccountWithRefreshToken(const std::string& account_id);
+
+  // Returns true if (a) the primary account exists, and (b) a refresh token
+  // exists for the primary account.
+  bool HasPrimaryAccountWithRefreshToken();
+
   // Creates an AccessTokenFetcher given the passed-in information.
   std::unique_ptr<AccessTokenFetcher> CreateAccessTokenFetcherForAccount(
       const std::string& account_id,
@@ -218,6 +232,10 @@
   // The latest (cached) value of the primary account.
   AccountInfo primary_account_info_;
 
+  // The latest (cached) value of the accounts with refresh tokens.
+  using AccountIDToAccountInfoMap = std::map<std::string, AccountInfo>;
+  AccountIDToAccountInfoMap accounts_with_refresh_tokens_;
+
   // Lists of observers.
   // Makes sure lists are empty on destruction.
   base::ObserverList<Observer, true> observer_list_;
diff --git a/services/identity/public/cpp/identity_manager_unittest.cc b/services/identity/public/cpp/identity_manager_unittest.cc
index c0b490f..cb8aa89 100644
--- a/services/identity/public/cpp/identity_manager_unittest.cc
+++ b/services/identity/public/cpp/identity_manager_unittest.cc
@@ -25,8 +25,11 @@
 #endif  // OS_CHROMEOS
 
 const char kTestGaiaId[] = "dummyId";
+const char kTestGaiaId2[] = "dummyId2";
+const char kTestGaiaId3[] = "dummyId3";
 const char kTestEmail[] = "me@gmail.com";
 const char kTestEmail2[] = "me2@gmail.com";
+const char kTestEmail3[] = "me3@gmail.com";
 
 #if defined(OS_CHROMEOS)
 const char kTestEmailWithPeriod[] = "m.e@gmail.com";
@@ -479,6 +482,395 @@
 #endif
 }
 
+TEST_F(IdentityManagerTest, GetAccountsInteractionWithPrimaryAccount) {
+  // Should not have any refresh tokens at initialization.
+  EXPECT_TRUE(identity_manager()->GetAccountsWithRefreshTokens().empty());
+
+  std::string account_id = signin_manager()->GetAuthenticatedAccountId();
+
+  // Add a refresh token for the primary account and check that it shows up in
+  // GetAccountsWithRefreshTokens().
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  std::vector<AccountInfo> accounts_after_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_update.size());
+  EXPECT_EQ(accounts_after_update[0].account_id, account_id);
+  EXPECT_EQ(accounts_after_update[0].gaia, kTestGaiaId);
+  EXPECT_EQ(accounts_after_update[0].email, kTestEmail);
+
+  // Update the token and check that it doesn't change the state (or blow up).
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  std::vector<AccountInfo> accounts_after_second_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_second_update.size());
+  EXPECT_EQ(accounts_after_second_update[0].account_id, account_id);
+  EXPECT_EQ(accounts_after_second_update[0].gaia, kTestGaiaId);
+  EXPECT_EQ(accounts_after_second_update[0].email, kTestEmail);
+
+  // Remove the token for the primary account and check that this is likewise
+  // reflected.
+  RemoveRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_TRUE(identity_manager()->GetAccountsWithRefreshTokens().empty());
+}
+
+TEST_F(IdentityManagerTest,
+       QueryingOfRefreshTokensInteractionWithPrimaryAccount) {
+  AccountInfo account_info = identity_manager()->GetPrimaryAccountInfo();
+  std::string account_id = account_info.account_id;
+
+  // Should not have a refresh token for the primary account at initialization.
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Add a refresh token for the primary account and check that it affects this
+  // state.
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Update the token and check that it doesn't change the state (or blow up).
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Remove the token for the primary account and check that this is likewise
+  // reflected.
+  RemoveRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+}
+
+TEST_F(IdentityManagerTest, GetAccountsReflectsNonemptyInitialState) {
+  EXPECT_TRUE(identity_manager()->GetAccountsWithRefreshTokens().empty());
+
+  std::string account_id = signin_manager()->GetAuthenticatedAccountId();
+
+  // Add a refresh token for the primary account and sanity-check that it shows
+  // up in GetAccountsWithRefreshTokens().
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  std::vector<AccountInfo> accounts_after_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_update.size());
+  EXPECT_EQ(accounts_after_update[0].account_id, account_id);
+  EXPECT_EQ(accounts_after_update[0].gaia, kTestGaiaId);
+  EXPECT_EQ(accounts_after_update[0].email, kTestEmail);
+
+  // Recreate the IdentityManager and check that the newly-created instance
+  // reflects the current state.
+  RecreateIdentityManager();
+
+  std::vector<AccountInfo> accounts_after_recreation =
+      identity_manager()->GetAccountsWithRefreshTokens();
+  EXPECT_EQ(1u, accounts_after_recreation.size());
+  EXPECT_EQ(accounts_after_recreation[0].account_id, account_id);
+  EXPECT_EQ(accounts_after_recreation[0].gaia, kTestGaiaId);
+  EXPECT_EQ(accounts_after_recreation[0].email, kTestEmail);
+}
+
+TEST_F(IdentityManagerTest,
+       QueryingOfRefreshTokensReflectsNonemptyInitialState) {
+  AccountInfo account_info = identity_manager()->GetPrimaryAccountInfo();
+  std::string account_id = account_info.account_id;
+
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Recreate the IdentityManager and check that the newly-created instance
+  // reflects the current state.
+  RecreateIdentityManager();
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info.account_id));
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+}
+
+TEST_F(IdentityManagerTest, GetAccountsInteractionWithSecondaryAccounts) {
+  // Should not have any refresh tokens at initialization.
+  EXPECT_TRUE(identity_manager()->GetAccountsWithRefreshTokens().empty());
+
+  // Add a refresh token for a secondary account and check that it shows up in
+  // GetAccountsWithRefreshTokens().
+  account_tracker()->SeedAccountInfo(kTestGaiaId2, kTestEmail2);
+  std::string account_id2 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId2).account_id;
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id2);
+
+  std::vector<AccountInfo> accounts_after_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_update.size());
+  EXPECT_EQ(accounts_after_update[0].account_id, account_id2);
+  EXPECT_EQ(accounts_after_update[0].gaia, kTestGaiaId2);
+  EXPECT_EQ(accounts_after_update[0].email, kTestEmail2);
+
+  // Add a refresh token for a different secondary account and check that it
+  // also shows up in GetAccountsWithRefreshTokens().
+  account_tracker()->SeedAccountInfo(kTestGaiaId3, kTestEmail3);
+  std::string account_id3 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId3).account_id;
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id3);
+
+  std::vector<AccountInfo> accounts_after_second_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+  EXPECT_EQ(2u, accounts_after_second_update.size());
+
+  for (AccountInfo account_info : accounts_after_second_update) {
+    if (account_info.account_id == account_id2) {
+      EXPECT_EQ(account_info.gaia, kTestGaiaId2);
+      EXPECT_EQ(account_info.email, kTestEmail2);
+    } else {
+      EXPECT_EQ(account_info.gaia, kTestGaiaId3);
+      EXPECT_EQ(account_info.email, kTestEmail3);
+    }
+  }
+
+  // Remove the token for account2 and check that account3 is still present.
+  RemoveRefreshTokenForAccount(token_service(), identity_manager(),
+                               account_id2);
+
+  std::vector<AccountInfo> accounts_after_third_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_third_update.size());
+  EXPECT_EQ(accounts_after_third_update[0].account_id, account_id3);
+  EXPECT_EQ(accounts_after_third_update[0].gaia, kTestGaiaId3);
+  EXPECT_EQ(accounts_after_third_update[0].email, kTestEmail3);
+}
+
+TEST_F(IdentityManagerTest,
+       HasPrimaryAccountWithRefreshTokenInteractionWithSecondaryAccounts) {
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Adding a refresh token for a secondary account shouldn't change anything
+  // about the primary account
+  account_tracker()->SeedAccountInfo(kTestGaiaId2, kTestEmail2);
+  std::string account_id2 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId2).account_id;
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id2);
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Adding a refresh token for a different secondary account should not do so
+  // either.
+  account_tracker()->SeedAccountInfo(kTestGaiaId3, kTestEmail3);
+  std::string account_id3 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId3).account_id;
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id3);
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Removing the token for account2 should have no effect.
+  RemoveRefreshTokenForAccount(token_service(), identity_manager(),
+                               account_id2);
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+}
+
+TEST_F(IdentityManagerTest,
+       HasAccountWithRefreshTokenInteractionWithSecondaryAccounts) {
+  account_tracker()->SeedAccountInfo(kTestGaiaId2, kTestEmail2);
+  AccountInfo account_info2 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId2);
+  std::string account_id2 = account_info2.account_id;
+
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+
+  // Add a refresh token for account_info2 and check that this is reflected by
+  // HasAccountWithRefreshToken(.account_id).
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id2);
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+
+  // Go through the same process for a different secondary account.
+  account_tracker()->SeedAccountInfo(kTestGaiaId3, kTestEmail3);
+  AccountInfo account_info3 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId3);
+  std::string account_id3 = account_info3.account_id;
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info3.account_id));
+
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id3);
+
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info3.account_id));
+
+  // Remove the token for account2.
+  RemoveRefreshTokenForAccount(token_service(), identity_manager(),
+                               account_id2);
+
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info3.account_id));
+}
+
+TEST_F(IdentityManagerTest,
+       GetAccountsInteractionBetweenPrimaryAndSecondaryAccounts) {
+  // Should not have any refresh tokens at initialization.
+  EXPECT_TRUE(identity_manager()->GetAccountsWithRefreshTokens().empty());
+
+  // Add a refresh token for a secondary account and check that it shows up in
+  // GetAccountsWithRefreshTokens().
+  account_tracker()->SeedAccountInfo(kTestGaiaId2, kTestEmail2);
+  std::string account_id2 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId2).account_id;
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id2);
+
+  std::vector<AccountInfo> accounts_after_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_update.size());
+  EXPECT_EQ(accounts_after_update[0].account_id, account_id2);
+  EXPECT_EQ(accounts_after_update[0].gaia, kTestGaiaId2);
+  EXPECT_EQ(accounts_after_update[0].email, kTestEmail2);
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Add a refresh token for the primary account and check that it
+  // also shows up in GetAccountsWithRefreshTokens().
+  std::string primary_account_id =
+      signin_manager()->GetAuthenticatedAccountId();
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  std::vector<AccountInfo> accounts_after_second_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+  EXPECT_EQ(2u, accounts_after_second_update.size());
+
+  for (AccountInfo account_info : accounts_after_second_update) {
+    if (account_info.account_id == account_id2) {
+      EXPECT_EQ(account_info.gaia, kTestGaiaId2);
+      EXPECT_EQ(account_info.email, kTestEmail2);
+    } else {
+      EXPECT_EQ(account_info.gaia, kTestGaiaId);
+      EXPECT_EQ(account_info.email, kTestEmail);
+    }
+  }
+
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Remove the token for the primary account and check that account2 is still
+  // present.
+  RemoveRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  std::vector<AccountInfo> accounts_after_third_update =
+      identity_manager()->GetAccountsWithRefreshTokens();
+
+  EXPECT_EQ(1u, accounts_after_third_update.size());
+  EXPECT_EQ(accounts_after_update[0].account_id, account_id2);
+  EXPECT_EQ(accounts_after_update[0].gaia, kTestGaiaId2);
+  EXPECT_EQ(accounts_after_update[0].email, kTestEmail2);
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+}
+
+TEST_F(
+    IdentityManagerTest,
+    HasPrimaryAccountWithRefreshTokenInteractionBetweenPrimaryAndSecondaryAccounts) {
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Add a refresh token for a secondary account and check that it doesn't
+  // impact the above state.
+  account_tracker()->SeedAccountInfo(kTestGaiaId2, kTestEmail2);
+  std::string account_id2 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId2).account_id;
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id2);
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Add a refresh token for the primary account and check that it
+  // *does* impact the stsate of HasPrimaryAccountWithRefreshToken().
+  std::string primary_account_id =
+      signin_manager()->GetAuthenticatedAccountId();
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Remove the token for the secondary account and check that this doesn't flip
+  // the state.
+  RemoveRefreshTokenForAccount(token_service(), identity_manager(),
+                               account_id2);
+
+  EXPECT_TRUE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+
+  // Remove the token for the primary account and check that this flips the
+  // state.
+  RemoveRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken());
+}
+
+TEST_F(
+    IdentityManagerTest,
+    HasAccountWithRefreshTokenInteractionBetweenPrimaryAndSecondaryAccounts) {
+  AccountInfo primary_account_info =
+      identity_manager()->GetPrimaryAccountInfo();
+  std::string primary_account_id = primary_account_info.account_id;
+
+  account_tracker()->SeedAccountInfo(kTestGaiaId2, kTestEmail2);
+  AccountInfo account_info2 =
+      account_tracker()->FindAccountInfoByGaiaId(kTestGaiaId2);
+  std::string account_id2 = account_info2.account_id;
+
+  EXPECT_FALSE(identity_manager()->HasAccountWithRefreshToken(
+      primary_account_info.account_id));
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+
+  // Add a refresh token for account_info2 and check that this is reflected by
+  // HasAccountWithRefreshToken(.account_id).
+  SetRefreshTokenForAccount(token_service(), identity_manager(), account_id2);
+
+  EXPECT_FALSE(identity_manager()->HasAccountWithRefreshToken(
+      primary_account_info.account_id));
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+
+  // Go through the same process for the primary account.
+  SetRefreshTokenForPrimaryAccount(token_service(), identity_manager());
+
+  EXPECT_TRUE(identity_manager()->HasAccountWithRefreshToken(
+      primary_account_info.account_id));
+  EXPECT_TRUE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+
+  // Remove the token for account2.
+  RemoveRefreshTokenForAccount(token_service(), identity_manager(),
+                               account_id2);
+
+  EXPECT_TRUE(identity_manager()->HasAccountWithRefreshToken(
+      primary_account_info.account_id));
+  EXPECT_FALSE(
+      identity_manager()->HasAccountWithRefreshToken(account_info2.account_id));
+}
+
 TEST_F(IdentityManagerTest, RemoveAccessTokenFromCache) {
   std::set<std::string> scopes{"scope"};
   std::string access_token = "access_token";
@@ -806,6 +1198,16 @@
 #endif
 
 TEST_F(IdentityManagerTest,
+       CallbackNotSentOnRefreshTokenRemovalOfUnknownAccount) {
+  base::RunLoop run_loop;
+  identity_manager_observer()->set_on_refresh_token_removed_callback(
+      base::BindOnce([] { EXPECT_TRUE(false); }));
+  token_service()->RevokeCredentials("dummy_account");
+
+  run_loop.RunUntilIdle();
+}
+
+TEST_F(IdentityManagerTest,
        IdentityManagerGetsTokenUpdateEventBeforeTokenServiceObserver) {
   std::string account_id = signin_manager()->GetAuthenticatedAccountId();
 
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json
index d6ff1e4c..43645019 100644
--- a/testing/buildbot/chromium.perf.json
+++ b/testing/buildbot/chromium.perf.json
@@ -11,10 +11,22 @@
     "isolated_scripts": [
       {
         "args": [
+          "--non-telemetry=true",
+          "--migrated-test=true",
           "--shard-timeout=300"
         ],
         "isolate_name": "angle_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "angle_perftests",
+        "override_compile_targets": [
+          "angle_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -22,814 +34,42 @@
               "device_os": "KOT49H",
               "device_os_flavor": "google",
               "device_type": "hammerhead",
-              "id": "build199-b7--device3",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "blink_perf.bindings",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.bindings",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.bindings",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.bindings.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.canvas",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.canvas.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.image_decoder",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.image_decoder.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.layout",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.layout.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.owp_storage",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.owp_storage.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.paint",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.paint.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.parser",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.parser.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.svg",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.svg.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "components_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "components_perftests",
+        "override_compile_targets": [
+          "components_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -837,286 +77,42 @@
               "device_os": "KOT49H",
               "device_os_flavor": "google",
               "device_type": "hammerhead",
-              "id": "build201-b7--device5",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dromaeo",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dromaeo.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.stable_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.stable_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "gpu_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "gpu_perftests",
+        "override_compile_targets": [
+          "gpu_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -1124,30 +120,44 @@
               "device_os": "KOT49H",
               "device_os_flavor": "google",
               "device_type": "hammerhead",
-              "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "jetstream",
           "-v",
-          "--upload-results",
           "--browser=android-chromium",
-          "--output-format=histograms"
+          "--upload-results",
+          "--run-ref-build",
+          "--test-shard-map-filename=android_nexus5_16_shard_map.json"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "jetstream",
+        "isolate_name": "performance_test_suite",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "performance_test_suite",
         "override_compile_targets": [
-          "telemetry_perf_tests"
+          "performance_test_suite"
         ],
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -1156,1572 +166,42 @@
               "device_os": "KOT49H",
               "device_os_flavor": "google",
               "device_type": "hammerhead",
-              "id": "build200-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 16,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "jetstream.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "loading.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "loading.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 16200,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "media.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "media.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_background_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_background_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_background_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_background_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.top_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.top_10_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "octane",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "octane.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "oortonline_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "oortonline_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.idle_platform",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.idle_platform",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.typical_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.typical_10_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.top_25.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rendering.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rendering.mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.cold.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.cold.startup_pages",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.cold.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.cold.startup_pages.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.warm.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.warm.startup_pages",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.warm.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.warm.startup_pages.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build200-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.memory_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.memory_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "tracing.tracing_with_background_memory_infra",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "tracing.tracing_with_background_memory_infra.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "tracing_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "tracing_perftests",
+        "override_compile_targets": [
+          "tracing_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -2729,312 +209,23 @@
               "device_os": "KOT49H",
               "device_os_flavor": "google",
               "device_type": "hammerhead",
-              "id": "build199-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
           ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.runtime_stats.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.runtime_stats.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build201-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "wasm",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "wasm.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "webrtc",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "webrtc.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "KOT49H",
-              "device_os_flavor": "google",
-              "device_type": "hammerhead",
-              "id": "build199-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       }
     ]
@@ -3043,10 +234,22 @@
     "isolated_scripts": [
       {
         "args": [
+          "--non-telemetry=true",
+          "--migrated-test=true",
           "--shard-timeout=300"
         ],
         "isolate_name": "angle_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "angle_perftests",
+        "override_compile_targets": [
+          "angle_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -3054,814 +257,42 @@
               "device_os": "MMB29Q",
               "device_os_flavor": "google",
               "device_type": "bullhead",
-              "id": "build211-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "blink_perf.bindings",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.bindings",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.bindings",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.bindings.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.canvas",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.canvas.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.image_decoder",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.image_decoder.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.layout",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.layout.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.owp_storage",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.owp_storage.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.paint",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.paint.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.parser",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.parser.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.svg",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.svg.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "components_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "components_perftests",
+        "override_compile_targets": [
+          "components_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -3869,286 +300,42 @@
               "device_os": "MMB29Q",
               "device_os_flavor": "google",
               "device_type": "bullhead",
-              "id": "build212-b7--device1",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dromaeo",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dromaeo.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.stable_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.stable_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "gpu_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "gpu_perftests",
+        "override_compile_targets": [
+          "gpu_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -4156,252 +343,42 @@
               "device_os": "MMB29Q",
               "device_os_flavor": "google",
               "device_type": "bullhead",
-              "id": "build211-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "jetstream",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "jetstream.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "loading.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "loading.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 16200,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "media.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "media.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "media_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "media_perftests",
+        "override_compile_targets": [
+          "media_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -4409,30 +386,44 @@
               "device_os": "MMB29Q",
               "device_os_flavor": "google",
               "device_type": "bullhead",
-              "id": "build212-b7--device7",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "memory.long_running_idle_gmail_background_tbmv2",
           "-v",
-          "--upload-results",
           "--browser=android-chromium",
-          "--output-format=histograms"
+          "--upload-results",
+          "--run-ref-build",
+          "--test-shard-map-filename=android_nexus5x_16_shard_map.json"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_background_tbmv2",
+        "isolate_name": "performance_test_suite",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "performance_test_suite",
         "override_compile_targets": [
-          "telemetry_perf_tests"
+          "performance_test_suite"
         ],
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -4441,1342 +432,42 @@
               "device_os": "MMB29Q",
               "device_os_flavor": "google",
               "device_type": "bullhead",
-              "id": "build212-b7--device6",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 16,
           "upload_test_results": true
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
+          ],
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "memory.long_running_idle_gmail_background_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_background_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.top_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.top_10_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "octane",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "octane.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "oortonline_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "oortonline_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.idle_platform",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.idle_platform",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.typical_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.typical_10_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.top_25.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rendering.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rendering.mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.cold.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.cold.startup_pages",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.cold.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.cold.startup_pages.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.warm.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.warm.startup_pages",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.warm.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.warm.startup_pages.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build212-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.memory_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.memory_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "tracing.tracing_with_background_memory_infra",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "tracing.tracing_with_background_memory_infra.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "tracing_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "tracing_perftests",
+        "override_compile_targets": [
+          "tracing_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -5784,312 +475,23 @@
               "device_os": "MMB29Q",
               "device_os_flavor": "google",
               "device_type": "bullhead",
-              "id": "build211-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
           ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.runtime_stats.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.runtime_stats.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build213-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "wasm",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "wasm.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "webrtc",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "webrtc.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MMB29Q",
-              "device_os_flavor": "google",
-              "device_type": "bullhead",
-              "id": "build211-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       }
     ]
@@ -6098,17 +500,23 @@
     "isolated_scripts": [
       {
         "args": [
-          "blink_perf.bindings",
           "-v",
+          "--browser=android-chromium",
           "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
+          "--run-ref-build",
+          "--test-shard-map-filename=android_nexus5x_webview_16_shard_map.json"
         ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.bindings",
+        "isolate_name": "performance_webview_test_suite",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "performance_webview_test_suite",
         "override_compile_targets": [
-          "telemetry_perf_webview_tests"
+          "performance_webview_test_suite"
         ],
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -6117,1402 +525,23 @@
               "device_os": "MOB30K",
               "device_os_flavor": "aosp",
               "device_type": "bullhead",
-              "id": "build190-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 16,
           "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.canvas",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
           ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.css",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.dom",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.events",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.image_decoder",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.layout",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.owp_storage",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.paint",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.parser",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.shadow_dom",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.svg",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dromaeo",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dummy_benchmark.stable_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "jetstream",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "kraken",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "loading.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "loading.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 16200,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "memory.top_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "octane",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "oortonline_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.idle_platform",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "power.idle_platform",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "power.typical_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "rasterize_and_record_micro.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "rendering.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "smoothness.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer-future",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer2",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer2-future",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "system_health.common_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "system_health.memory_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.webview_startup",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "system_health.webview_startup",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build189-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "tracing.tracing_with_background_memory_infra",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "v8.browsing_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "v8.browsing_mobile-future",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.runtime_stats.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "v8.runtime_stats.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build190-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "wasm",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "webrtc",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "bullhead",
-              "id": "build188-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       }
     ]
@@ -7521,17 +550,23 @@
     "isolated_scripts": [
       {
         "args": [
-          "blink_perf.bindings",
           "-v",
+          "--browser=android-chromium",
           "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
+          "--run-ref-build",
+          "--test-shard-map-filename=android_nexus6_webview_16_shard_map.json"
         ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.bindings",
+        "isolate_name": "performance_webview_test_suite",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "performance_webview_test_suite",
         "override_compile_targets": [
-          "telemetry_perf_webview_tests"
+          "performance_webview_test_suite"
         ],
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -7540,1402 +575,23 @@
               "device_os": "MOB30K",
               "device_os_flavor": "aosp",
               "device_type": "shamu",
-              "id": "build204-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf-webview"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 16,
           "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.canvas",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
           ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.css",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.dom",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.events",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.image_decoder",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.layout",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.owp_storage",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.paint",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.parser",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.shadow_dom",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "blink_perf.svg",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dromaeo",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "dummy_benchmark.stable_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "jetstream",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "kraken",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "loading.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "loading.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 16200,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "memory.top_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "octane",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "oortonline_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.idle_platform",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "power.idle_platform",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "power.typical_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "rasterize_and_record_micro.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "rendering.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "smoothness.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer-future",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer2",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "speedometer2-future",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "system_health.common_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "system_health.memory_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.webview_startup",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "system_health.webview_startup",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build203-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "tracing.tracing_with_background_memory_infra",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "v8.browsing_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "v8.browsing_mobile-future",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.runtime_stats.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "v8.runtime_stats.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build204-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "wasm",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=android-webview",
-          "--output-format=histograms",
-          "--webview-embedder-apk=../../out/Release/apks/SystemWebViewShell.apk"
-        ],
-        "isolate_name": "telemetry_perf_webview_tests",
-        "name": "webrtc",
-        "override_compile_targets": [
-          "telemetry_perf_webview_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "MOB30K",
-              "device_os_flavor": "aosp",
-              "device_type": "shamu",
-              "id": "build202-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf-webview"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       }
     ]
@@ -8944,16 +600,23 @@
     "isolated_scripts": [
       {
         "args": [
-          "blink_perf.bindings",
           "-v",
-          "--upload-results",
           "--browser=android-chromium",
-          "--output-format=histograms"
+          "--upload-results",
+          "--run-ref-build",
+          "--test-shard-map-filename=android_one_16_shard_map.json"
         ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.bindings",
+        "isolate_name": "performance_test_suite",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
+        "name": "performance_test_suite",
         "override_compile_targets": [
-          "telemetry_perf_tests"
+          "performance_test_suite"
         ],
         "swarming": {
           "can_use_on_swarming_builders": true,
@@ -8962,2628 +625,42 @@
               "device_os": "LMY47W",
               "device_os_flavor": "google",
               "device_type": "sprout",
-              "id": "build193-b7--device4",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 16,
           "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.bindings",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.bindings.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
           ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       },
       {
         "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.canvas",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.canvas",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.canvas.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.css",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.css.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.dom",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.events",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.events.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.image_decoder",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.image_decoder",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.image_decoder.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.layout",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.layout",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.layout.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.owp_storage",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.owp_storage",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.owp_storage.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.paint",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.paint",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.paint.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.parser",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.parser",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.parser.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.shadow_dom",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.shadow_dom.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.svg",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "blink_perf.svg",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "blink_perf.svg.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dromaeo",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dromaeo",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dromaeo.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.histogram_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.histogram_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.noisy_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.noisy_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.stable_benchmark_1",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "dummy_benchmark.stable_benchmark_1",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "dummy_benchmark.stable_benchmark_1.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "jetstream",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "jetstream",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "jetstream.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "kraken",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "kraken.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "loading.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "loading.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 16200,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "media.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "media.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "media.mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_background_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_background_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_background_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_background_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device2",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.long_running_idle_gmail_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.long_running_idle_gmail_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.top_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "memory.top_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "memory.top_10_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "octane",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "octane",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "octane.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "oortonline_tbmv2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "oortonline_tbmv2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "oortonline_tbmv2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.idle_platform",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.idle_platform",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.typical_10_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "power.typical_10_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "power.typical_10_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.partial_invalidation",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.partial_invalidation.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rasterize_and_record_micro.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rasterize_and_record_micro.top_25.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rendering.mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "rendering.mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "rendering.mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.gpu_rasterization.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_pinch_zoom_cases",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "smoothness.tough_pinch_zoom_cases",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "smoothness.tough_pinch_zoom_cases.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "speedometer2",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "speedometer2.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.cold.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.cold.startup_pages",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.cold.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.cold.startup_pages.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.warm.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.warm.startup_pages",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "start_with_url.warm.startup_pages",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "start_with_url.warm.startup_pages.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.common_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.common_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build192-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.memory_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "system_health.memory_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "system_health.memory_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device1",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 14400,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "tracing.tracing_with_background_memory_infra",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "tracing.tracing_with_background_memory_infra",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "tracing.tracing_with_background_memory_infra.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
+          "--non-telemetry=true",
+          "--migrated-test=true"
         ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [],
         "isolate_name": "tracing_perftests",
+        "merge": {
+          "args": [
+            "--service-account-file",
+            "/creds/service_accounts/service-account-chromium-perf-histograms.json"
+          ],
+          "script": "//tools/perf/process_perf_results.py"
+        },
         "name": "tracing_perftests",
+        "override_compile_targets": [
+          "tracing_perftests"
+        ],
         "swarming": {
           "can_use_on_swarming_builders": true,
           "dimension_sets": [
@@ -11591,312 +668,23 @@
               "device_os": "LMY47W",
               "device_os_flavor": "google",
               "device_type": "sprout",
-              "id": "build191-b7--device2",
               "os": "Android",
               "pool": "chrome.tests.perf"
             }
           ],
           "expiration": 36000,
-          "hard_timeout": 10800,
+          "hard_timeout": 36000,
           "ignore_task_failure": false,
-          "io_timeout": 1200,
+          "io_timeout": 1800,
+          "shards": 1,
           "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
+        },
+        "trigger_script": {
+          "args": [
+            "--multiple-dimension-script-verbose",
+            "True"
           ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile-future",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile-future",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile-future.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device4",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.browsing_mobile",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.browsing_mobile.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device5",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "v8.runtime_stats.top_25",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "v8.runtime_stats.top_25",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build193-b7--device7",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "wasm",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "wasm",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "wasm.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device3",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=android-chromium",
-          "--output-format=histograms"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "webrtc",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": false,
-          "io_timeout": 1200,
-          "upload_test_results": true
-        }
-      },
-      {
-        "args": [
-          "webrtc",
-          "-v",
-          "--upload-results",
-          "--browser=reference",
-          "--output-format=histograms",
-          "--max-failures=5",
-          "--output-trace-tag=_ref"
-        ],
-        "isolate_name": "telemetry_perf_tests",
-        "name": "webrtc.reference",
-        "override_compile_targets": [
-          "telemetry_perf_tests"
-        ],
-        "swarming": {
-          "can_use_on_swarming_builders": true,
-          "dimension_sets": [
-            {
-              "device_os": "LMY47W",
-              "device_os_flavor": "google",
-              "device_type": "sprout",
-              "id": "build191-b7--device6",
-              "os": "Android",
-              "pool": "chrome.tests.perf"
-            }
-          ],
-          "expiration": 36000,
-          "hard_timeout": 10800,
-          "ignore_task_failure": true,
-          "io_timeout": 1200,
-          "upload_test_results": true
+          "script": "//testing/trigger_scripts/perf_device_trigger.py"
         }
       }
     ]
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index 8905eff3..234e28f 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -1126,21 +1126,6 @@
       "../../tools/perf/run_benchmark",
     ],
   },
-  "telemetry_perf_webview_tests": {
-    "label": "//chrome/test:telemetry_perf_webview_tests",
-    "type": "script",
-    "script": "//third_party/catapult/devil/devil/android/tools/system_app.py",
-    "args": [
-      "remove",
-      "--package",
-      "com.android.webview",
-      "com.google.android.webview",
-      "-v",
-      "--",
-      "../../testing/scripts/run_telemetry_benchmark_as_googletest.py",
-      "../../tools/perf/run_benchmark",
-    ],
-  },
   "telemetry_unittests": {
     "label": "//chrome/test:telemetry_unittests",
     "type": "script",
diff --git a/testing/scripts/common.py b/testing/scripts/common.py
index 786e98f..28758fe 100644
--- a/testing/scripts/common.py
+++ b/testing/scripts/common.py
@@ -167,24 +167,6 @@
 
 def get_gtest_summary_passes(output):
   """Returns a mapping of test to boolean indicating if the test passed.
-  """
-  if not output:
-    return {}
-
-  mapping = {}
-
-  for test_suite in output.get('testsuites', []):
-    suite_name = test_suite['name']
-    for test in test_suite['testsuite']:
-      full_name = '%s.%s' % (suite_name, test['name'])
-
-      mapping[full_name] = 'failures' in test
-
-  return mapping
-
-
-def get_chromium_gtest_summary_passes(output):
-  """Returns a mapping of test to boolean indicating if the test passed.
 
   Only partially parses the format. This code is based on code in tools/build,
   specifically
diff --git a/testing/scripts/run_gtest_perf_test.py b/testing/scripts/run_gtest_perf_test.py
index e1dd0d5..83198f5c 100755
--- a/testing/scripts/run_gtest_perf_test.py
+++ b/testing/scripts/run_gtest_perf_test.py
@@ -32,7 +32,6 @@
 import os
 import shutil
 import sys
-import time
 import tempfile
 import traceback
 
@@ -83,7 +82,7 @@
 
   args, rest_args = parser.parse_known_args()
 
-  rc, charts, output_json = execute_perf_test(args, rest_args, True)
+  rc, charts, output_json = execute_perf_test(args, rest_args)
 
   # TODO(eakuefner): Make isolated_script_test_perf_output mandatory after
   # flipping flag in swarming.
@@ -101,7 +100,7 @@
   return rc
 
 
-def execute_perf_test(args, rest_args, chromium_gtest):
+def execute_perf_test(args, rest_args):
   env = os.environ.copy()
   # Assume we want to set up the sandbox environment variables all the
   # time; doing so is harmless on non-Linux platforms and is needed
@@ -109,95 +108,53 @@
   env[CHROME_SANDBOX_ENV] = CHROME_SANDBOX_PATH
 
   rc = 0
-  start_time = time.time()
-  test_results = {}
-  with common.temporary_file() as results_path:
-    try:
-      executable = rest_args[0]
-      extra_flags = []
-      if len(rest_args) > 1:
-        extra_flags = rest_args[1:]
+  try:
+    executable = rest_args[0]
+    extra_flags = []
+    if len(rest_args) > 1:
+      extra_flags = rest_args[1:]
 
-      if chromium_gtest:
-        output_flag = '--test-launcher-summary-output'
-        output_file = results_path
+    # These flags are to make sure that test output perf metrics in the log.
+    if not '--verbose' in extra_flags:
+      extra_flags.append('--verbose')
+    if not '--test-launcher-print-test-stdio=always' in extra_flags:
+      extra_flags.append('--test-launcher-print-test-stdio=always')
+    if args.isolated_script_test_filter:
+      filter_list = common.extract_filter_list(
+        args.isolated_script_test_filter)
+      extra_flags.append('--gtest_filter=' + ':'.join(filter_list))
+
+    if IsWindows():
+      executable = '.\%s.exe' % executable
+    else:
+      executable = './%s' % executable
+    with common.temporary_file() as tempfile_path:
+      env['CHROME_HEADLESS'] = '1'
+      cmd = [executable] + extra_flags
+
+      if args.xvfb:
+        rc = xvfb.run_executable(cmd, env, stdoutfile=tempfile_path)
       else:
-        output_flag = '--gtest_output'
-        output_file = 'json:%s' % results_path
+        rc = test_env.run_command_with_output(cmd, env=env,
+                                              stdoutfile=tempfile_path)
 
-      assert not any(output_flag in flag for flag in extra_flags), (
-          'Duplicate %s flag detected.' % output_flag)
-      extra_flags.append('%s=%s' % (output_flag, output_file))
+      # Now get the correct json format from the stdout to write to the perf
+      # results file
+      results_processor = (
+          generate_legacy_perf_dashboard_json.LegacyResultsProcessor())
+      charts = results_processor.GenerateJsonResults(tempfile_path)
+  except Exception:
+    traceback.print_exc()
+    rc = 1
 
-      # These flags are to make sure that test output perf metrics in the log.
-      if not '--verbose' in extra_flags:
-        extra_flags.append('--verbose')
-      if not '--test-launcher-print-test-stdio=always' in extra_flags:
-        extra_flags.append('--test-launcher-print-test-stdio=always')
-      if args.isolated_script_test_filter:
-        filter_list = common.extract_filter_list(
-          args.isolated_script_test_filter)
-        extra_flags.append('--gtest_filter=' + ':'.join(filter_list))
-
-      if IsWindows():
-        executable = '.\%s.exe' % executable
-      else:
-        executable = './%s' % executable
-      with common.temporary_file() as tempfile_path:
-        env['CHROME_HEADLESS'] = '1'
-        cmd = [executable] + extra_flags
-
-        print ' '.join(cmd)
-        if args.xvfb:
-          rc = xvfb.run_executable(cmd, env, stdoutfile=tempfile_path)
-        else:
-          rc = test_env.run_command_with_output(cmd, env=env,
-                                                stdoutfile=tempfile_path)
-
-        # Now get the correct json format from the stdout to write to the perf
-        # results file
-        results_processor = (
-            generate_legacy_perf_dashboard_json.LegacyResultsProcessor())
-        charts = results_processor.GenerateJsonResults(tempfile_path)
-    except Exception:
-      traceback.print_exc()
-      rc = 1
-
-    if os.path.exists(results_path):
-      with open(results_path) as f:
-        if chromium_gtest:
-          func = common.get_chromium_gtest_summary_passes
-        else:
-          func = common.get_gtest_summary_passes
-        test_results = func(json.load(f))
-
+  valid = (rc == 0)
+  failures = [] if valid else ['(entire test suite)']
   output_json = {
-    'version': 3,
-    'interrupted': False,
-    'path_delimiter': '/',
-    'seconds_since_epoch': start_time,
-    'num_failures_by_type': {
-      'PASS': sum(1 for success in test_results.values() if success),
-      'FAIL': sum(1 for success in test_results.values() if not success),
-    },
-    'tests': {
-        test: test_result_entry(success) for (
-            test, success) in test_results.items()
+      'valid': valid,
+      'failures': failures,
     }
-  }
-
   return rc, charts, output_json
 
-
-def test_result_entry(success):
-  test = {
-    'expected': 'PASS',
-    'actual': 'PASS' if success else 'FAIL',
-  }
-  if not success:
-    test['unexpected'] = True
-  return test
-
 # This is not really a "script test" so does not need to manually add
 # any additional compile targets.
 def main_compile_targets(args):
diff --git a/testing/scripts/run_performance_tests.py b/testing/scripts/run_performance_tests.py
index aab7c26..a491fcd 100755
--- a/testing/scripts/run_performance_tests.py
+++ b/testing/scripts/run_performance_tests.py
@@ -197,7 +197,7 @@
     # For non telemetry tests the benchmark name is the name of the executable.
     benchmark_name = rest_args[0]
     return_code, charts, output_json = run_gtest_perf_test.execute_perf_test(
-        args, rest_args, False)
+        args, rest_args)
 
     write_results(benchmark_name, charts, output_json,
                   benchmark_log='Not available for C++ perf test',
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 1131a3b3..f82abbbd 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -416,16 +416,14 @@
             ],
             "experiments": [
                 {
-                    "name": "AudioProcess_v3",
+                    "name": "AudioProcess_LaunchOnStartup_v3",
                     "params": {
-                        "teardown_timeout_s": "900"
+                        "teardown_timeout_s": "0"
                     },
                     "enable_features": [
                         "AudioServiceAudioStreams",
+                        "AudioServiceLaunchOnStartup",
                         "AudioServiceOutOfProcess"
-                    ],
-                    "disable_features": [
-                        "AudioServiceLaunchOnStartup"
                     ]
                 }
             ]
@@ -2221,6 +2219,26 @@
             ]
         }
     ],
+    "NTPBirthdayFeatures": [
+        {
+            "platforms": [
+                "chromeos",
+                "linux",
+                "mac",
+                "win"
+            ],
+            "experiments": [
+                {
+                    "name": "NewTabPageAllBirthday_Enabled",
+                    "enable_features": [
+                        "NewTabPageBackgrounds",
+                        "NewTabPageIcons",
+                        "NewTabPageUIMd"
+                    ]
+                }
+            ]
+        }
+    ],
     "NTPBreakingNewsPush": [
         {
             "platforms": [
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index b0908ff..b25c522 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1064,6 +1064,7 @@
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-rowspan.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-table-cell.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/fragmented-table-with-fixed-height.html [ Failure ]
+crbug.com/591099 virtual/layout_ng_experimental/fragmentation/foreignobject-no-pagination.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/image-block-as-first-child.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/multi-line-cells-paginated.html [ Failure ]
 crbug.com/591099 virtual/layout_ng_experimental/fragmentation/multi-line-cells.html [ Failure ]
@@ -4275,6 +4276,11 @@
 crbug.com/843945 external/wpt/cookies/samesite/window-open.html [ Failure ]
 crbug.com/843945 external/wpt/cookies/secure/create-cookie-http.html [ Failure ]
 
+# Client hint tests that fail in content_shell but pass when run manually using
+# full browser.
+crbug.com/856700 external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html [ Skip ]
+crbug.com/856700 external/wpt/client-hints/accept_ch_lifetime.tentative.https.html [ Skip ]
+
 # Sheriff failures 2017-11-15
 crbug.com/785179 [ Win7 Debug ] http/tests/devtools/console/console-viewport-stick-to-bottom.js [ Skip ]
 
@@ -4728,9 +4734,6 @@
 crbug.com/856601 [ Linux ] http/tests/devtools/elements/styles-4/styles-inline-element-style-changes-should-not-force-style-recalc.js [ Pass Timeout ]
 crbug.com/856601 [ Linux ] virtual/feature-policy-permissions/external/wpt/mediacapture-streams/MediaDevices-IDL-enumerateDevices.html [ Pass Timeout ]
 
-# Sheriff 2018-06-27
-crbug.com/856955 [ Win10 Linux ] inspector-protocol/animation/animation-multiple-frames.js [ Failure Pass ]
-
 # Sheriff 2018-06-28
 crbug.com/857520 [ Mac Win ] external/wpt/accelerometer/Accelerometer-iframe-access.https.html [ Failure ]
 
diff --git a/third_party/WebKit/LayoutTests/custom-elements/cereactions-with-exception-expected.txt b/third_party/WebKit/LayoutTests/custom-elements/cereactions-with-exception-expected.txt
new file mode 100644
index 0000000..bc03a95
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/custom-elements/cereactions-with-exception-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL CEReactions should rethrow an exception by the originally-specified steps assert_throws: function "() => { log.outerHTML = '<my-custom-element></my-custom-element>'; }" did not throw
+Harness: the test ran to completion.
+
diff --git a/third_party/WebKit/LayoutTests/custom-elements/cereactions-with-exception.html b/third_party/WebKit/LayoutTests/custom-elements/cereactions-with-exception.html
new file mode 100644
index 0000000..216943e
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/custom-elements/cereactions-with-exception.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<body>
+<div id=log></div>
+<script>
+test(() => {
+  var upgraded = false;
+  class MyCustomElement extends HTMLElement {
+    constructor() { super(); upgraded = true; }
+  }
+  customElements.define('my-custom-element', MyCustomElement);
+  log.addEventListener('DOMNodeRemoved', function (e) {
+    if (document.querySelector('#log'))
+      document.adoptNode(log);
+  });
+  assert_throws('NotFoundError', () => { log.outerHTML = '<my-custom-element></my-custom-element>'; });
+  assert_true(upgraded, 'MyCustomElement constructor should be called');
+}, 'CEReactions should rethrow an exception by the originally-specified steps');
+</script>
+</body>
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
index 8189255..52b922ef 100644
--- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
+++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -29825,6 +29825,18 @@
      {}
     ]
    ],
+   "css/css-backgrounds/background-size-with-negative-value.html": [
+    [
+     "/css/css-backgrounds/background-size-with-negative-value.html",
+     [
+      [
+       "/css/css-backgrounds/reference/background-size-002-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-backgrounds/background-size/background-size-contain.xht": [
     [
      "/css/css-backgrounds/background-size/background-size-contain.xht",
@@ -103275,7 +103287,7 @@
      {}
     ]
    ],
-   "client-hints/accept_ch.sub.https.html.headers": [
+   "client-hints/accept_ch.tentative.sub.https.html.headers": [
     [
      {}
     ]
@@ -110855,11 +110867,6 @@
      {}
     ]
    ],
-   "css/css-backgrounds/parsing/background-size-invalid-expected.txt": [
-    [
-     {}
-    ]
-   ],
    "css/css-backgrounds/parsing/border-radius-valid-expected.txt": [
     [
      {}
@@ -184405,18 +184412,18 @@
      {}
     ]
    ],
-   "client-hints/accept_ch.sub.https.html": [
-    [
-     "/client-hints/accept_ch.sub.https.html",
-     {}
-    ]
-   ],
    "client-hints/accept_ch.tentative.https.html": [
     [
      "/client-hints/accept_ch.tentative.https.html",
      {}
     ]
    ],
+   "client-hints/accept_ch.tentative.sub.https.html": [
+    [
+     "/client-hints/accept_ch.tentative.sub.https.html",
+     {}
+    ]
+   ],
    "client-hints/accept_ch_lifetime.tentative.https.html": [
     [
      "/client-hints/accept_ch_lifetime.tentative.https.html",
@@ -184429,6 +184436,30 @@
      {}
     ]
    ],
+   "client-hints/http_equiv_accept_ch.tentative.http.html": [
+    [
+     "/client-hints/http_equiv_accept_ch.tentative.http.html",
+     {}
+    ]
+   ],
+   "client-hints/http_equiv_accept_ch.tentative.https.html": [
+    [
+     "/client-hints/http_equiv_accept_ch.tentative.https.html",
+     {}
+    ]
+   ],
+   "client-hints/http_equiv_accept_ch.tentative.sub.https.html": [
+    [
+     "/client-hints/http_equiv_accept_ch.tentative.sub.https.html",
+     {}
+    ]
+   ],
+   "client-hints/http_equiv_accept_ch_malformed_header.tentative.https.html": [
+    [
+     "/client-hints/http_equiv_accept_ch_malformed_header.tentative.https.html",
+     {}
+    ]
+   ],
    "clipboard-apis/async-interfaces.https.html": [
     [
      "/clipboard-apis/async-interfaces.https.html",
@@ -191285,9 +191316,9 @@
      {}
     ]
    ],
-   "css/css-properties-values-api/url-resolution.tentative.html": [
+   "css/css-properties-values-api/url-resolution.html": [
     [
-     "/css/css-properties-values-api/url-resolution.tentative.html",
+     "/css/css-properties-values-api/url-resolution.html",
      {}
     ]
    ],
@@ -274420,18 +274451,18 @@
    "23aaa612f1b6ee417d31faec8399248c9bc7cffc",
    "support"
   ],
-  "client-hints/accept_ch.sub.https.html": [
-   "8cfb7a9f11cbd19f2e3965c27af394fca31e1654",
-   "testharness"
-  ],
-  "client-hints/accept_ch.sub.https.html.headers": [
-   "23aaa612f1b6ee417d31faec8399248c9bc7cffc",
-   "support"
-  ],
   "client-hints/accept_ch.tentative.https.html": [
    "342de3ae30d962249bc0c282aac5b6e4192badfd",
    "testharness"
   ],
+  "client-hints/accept_ch.tentative.sub.https.html": [
+   "926500884d438811650ef7cca54f29d19ff03795",
+   "testharness"
+  ],
+  "client-hints/accept_ch.tentative.sub.https.html.headers": [
+   "23aaa612f1b6ee417d31faec8399248c9bc7cffc",
+   "support"
+  ],
   "client-hints/accept_ch_lifetime.tentative.https.html": [
    "58a6a6dafb4a6a3e8daa8742a1da137399353370",
    "testharness"
@@ -274448,6 +274479,22 @@
    "a69e980bffe7bd97aaaffde6bbec85df36b164c4",
    "support"
   ],
+  "client-hints/http_equiv_accept_ch.tentative.http.html": [
+   "f4ea013432d4a0c599a7a8bc388ca9b5019e60f3",
+   "testharness"
+  ],
+  "client-hints/http_equiv_accept_ch.tentative.https.html": [
+   "3d0aa253be8108f9b3aa6542d1eb5f8cafbb8e34",
+   "testharness"
+  ],
+  "client-hints/http_equiv_accept_ch.tentative.sub.https.html": [
+   "f404276fd8263be9f4fc2ecfc4f1d28ce0f62f6d",
+   "testharness"
+  ],
+  "client-hints/http_equiv_accept_ch_malformed_header.tentative.https.html": [
+   "17d80854b8a71289a1a1208984cca7021b51679a",
+   "testharness"
+  ],
   "client-hints/resources/accept_ch.html": [
    "a0a6d53c0c859bb62d38f1ad3a4eeac0abd50823",
    "support"
@@ -293976,6 +294023,10 @@
    "cc42f33213bd8392ed865c80cb4c7e12004a6fbb",
    "reftest"
   ],
+  "css/css-backgrounds/background-size-with-negative-value.html": [
+   "5f90875ab5b6f8d5e28f6d22eced12668c3e337d",
+   "reftest"
+  ],
   "css/css-backgrounds/background-size/background-size-contain.xht": [
    "2ee8298189f94c143626edbdfc18e2b3504e8efc",
    "reftest"
@@ -296024,10 +296075,6 @@
    "77d68bd03014d3f1898d1a05ed371a68f071ce3d",
    "testharness"
   ],
-  "css/css-backgrounds/parsing/background-size-invalid-expected.txt": [
-   "59d63a4211e9148d4afdb6393097dd4c95724c99",
-   "support"
-  ],
   "css/css-backgrounds/parsing/background-size-invalid.html": [
    "b7389e94e0d05c8799b27fbf1ac5a4480e184c15",
    "testharness"
@@ -296853,7 +296900,7 @@
    "visual"
   ],
   "css/css-break/hit-test-inline-fragmentation-with-border-radius.html": [
-   "d0b63d150a77ee6e84c05110fb97cc2befa0e251",
+   "92092527c9f739dca5410a0baac8f48522889409",
    "testharness"
   ],
   "css/css-cascade/META.yml": [
@@ -301965,7 +302012,7 @@
    "support"
   ],
   "css/css-font-loading/idlharness.https.html": [
-   "00399ffcb0ff8000e79ab4aeefdb90cabdb0fd4d",
+   "93c01c16bf27adc0789dda15dd2e704b96715415",
    "testharness"
   ],
   "css/css-fonts/META.yml": [
@@ -315660,8 +315707,8 @@
    "bd7bbb7cfc8ca930399abcf886c3da0d446725eb",
    "support"
   ],
-  "css/css-properties-values-api/url-resolution.tentative.html": [
-   "2f651c735028307632a6f7fb934e138e626acac7",
+  "css/css-properties-values-api/url-resolution.html": [
+   "582f4f05a8b48035c3369c8ce29252e845450cfb",
    "testharness"
   ],
   "css/css-properties-values-api/var-reference-registered-properties-cycles.html": [
@@ -359953,11 +360000,11 @@
    "support"
   ],
   "html/dom/elements/the-innertext-idl-attribute/getter-expected.txt": [
-   "18c7fc591144efd8ec3d7376d0bb7babb66af049",
+   "4e2a50cc4b20f83a959548a6bfbb02889c33c66c",
    "support"
   ],
   "html/dom/elements/the-innertext-idl-attribute/getter-tests.js": [
-   "42f3e48763297d3360c1074a7c2b706a6f539d37",
+   "0ffc6d2bf3011a376f85b45090c63de07ac023d5",
    "support"
   ],
   "html/dom/elements/the-innertext-idl-attribute/getter.html": [
@@ -375709,7 +375756,7 @@
    "support"
   ],
   "interfaces/css-font-loading.idl": [
-   "9f2f252c5b63c159d9680de46a932bfa4335bf11",
+   "5859e4051abccfcc6158e8731e82da1453fcafb9",
    "support"
   ],
   "interfaces/css-fonts.idl": [
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch.tentative.https.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch.tentative.https.html
index 64ce30f..3f38574c 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch.tentative.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch.tentative.https.html
@@ -4,10 +4,10 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 
-<div id=test>
-    <p>Apart from this webpage, the test opens another html web page. One test
-    is run in this web page, and another in the second web page.
-</div>
+<!--
+Apart from this webpage, the test opens two more html web page. One test is run
+in this web page, and two in the other web pages.
+-->
 
 <script>
 
@@ -23,11 +23,11 @@
 // verifies that the user agent does not send the client hints in the request
 // headers.
 
-// Verify the initial state to make sure that the browser does not have client
-// hints preferences cached from a previous run of the test.
-
 // Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
 // is resolved.
+
+// First, verify the initial state to make sure that the browser does not have
+// client hints preferences cached from a previous run of the test.
 promise_test(t => {
   return fetch("echo_client_hints_received.py").then(r => {
     assert_equals(r.status, 200)
@@ -35,22 +35,27 @@
     // headers when fetching echo_client_hints_received.py.
     assert_false(r.headers.has("device-memory-received"), "device-memory-received");
   });
-}, "Test that the browser does not have client hints preferences cached");
+}, "Precondition: Test that the browser does not have client hints preferences cached");
 
-promise_test(t => {
-  return fetch("resources/accept_ch.html").then(r => {
-    assert_equals(r.status, 200)
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+// Fetching this webpage should NOT cause user-agent to persist client hint
+// preferences for the origin.
+var win = window.open("resources/accept_ch.html");
+assert_not_equals(win, null, "Popup windows not allowed?");
 
-    // Open a new window.
-    window.open("resources/do_not_expect_client_hints_headers.html");
-  });
-}, "Test receiving Accept-CH header");
-
+// Open a new window. Verify that the user agent does not attach the client
+// hints.
+var verify_win = window.open("resources/do_not_expect_client_hints_headers.html");
+assert_not_equals(verify_win, null, "Popup windows not allowed?");
 async_test(t => {
-window.addEventListener('message', function(event) {
-  t.done();
-})
+  window.addEventListener('message', function(e) {
+    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
+      return;
+    }
+    if(typeof e.data != "string")
+      return;
+    assert_equals(e.data, "PASS");
+    t.done();
+  })
 }, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html
index b785f304..8065cf1 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime.tentative.https.html
@@ -4,10 +4,10 @@
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 
-<div id=test>
-    <p>Apart from this webpage, the test opens another html web page. One test
-    is run in this web page, and another in the second web page.
-</div>
+<!--
+Apart from this webpage, the test opens two more html web page. One test is run
+in this web page, and two in the other web pages.
+-->
 
 <script>
 
@@ -23,11 +23,11 @@
 // verifies that the user agent actually sends the client hints in the request
 // headers.
 
-// Verify the initial state to make sure that the browser does not have client
-// hints preferences cached from a previous run of the test.
-
 // Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
 // is resolved.
+
+// First, verify the initial state to make sure that the browser does not have
+// client hints preferences cached from a previous run of the test.
 promise_test(t => {
   return fetch("echo_client_hints_received.py").then(r => {
     assert_equals(r.status, 200)
@@ -35,26 +35,29 @@
     // headers when fetching echo_client_hints_received.py.
     assert_false(r.headers.has("device-memory-received"), "device-memory-received");
   });
-}, "Test that the browser does not have client hints preferences cached");
+}, "Precondition: Test that the browser does not have client hints preferences cached");
 
-promise_test(t => {
-  return fetch("resources/accept_ch_lifetime.html").then(r => {
-    assert_equals(r.status, 200)
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+// Fetching this webpage should cause user-agent to persist client hint
+// preferences for the origin.
+var win = window.open("resources/accept_ch_lifetime.html");
+assert_not_equals(win, null, "Popup windows not allowed?");
 
-    // Open a new window.
-    window.open("resources/expect_client_hints_headers.html");
-  });
-}, "Test receiving Accept-CH-Lifetime header");
-
+// Open a new window. Verify that the user agent attaches the client hints.
+var verify_win = window.open("resources/expect_client_hints_headers.html");
+assert_not_equals(verify_win, null, "Popup windows not allowed?");
 async_test(t => {
-window.addEventListener('message', function(event) {
-  t.done();
+  window.addEventListener('message', function(e) {
+    if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
+      return;
+    }
+    if(typeof e.data != "string")
+      return;
+    assert_equals(e.data, "PASS");
+    t.done();
 })
 }, "Loading of resources/expect_client_hints_headers.html did not finish.");
 
 
 </script>
-
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html
new file mode 100644
index 0000000..38e28e3
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_cross_origin_iframe.tentative.sub.https.html
@@ -0,0 +1,68 @@
+<html>
+<title>Accept-CH-Lifetime test with cross-origin iframe</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<!--
+Apart from this webpage, the test opens another html web page. One test is run
+in this web page, and another in the second web page.
+-->
+
+<script>
+
+// This test fetches resources/accept_ch_lifetime.html in a cross origin iframe.
+// The response headers to that webpage contain Accept-CH and Accept-CH-Lifetime
+// headers.
+
+// Fetching that webpage should NOT cause the user-agent to persist origin
+// preferences for the client hints specified.
+
+// Next, to verify if the origin preferences were NOT persisted by the user
+// agent, this test fetches resources/do_not_expect_client_hints_headers.html
+// in a new window. Fetching of
+// resources/do_not_expect_client_hints_headers.html
+// verifies that the user agent did not actually sent the client hints in the
+// request headers.
+
+// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
+// is resolved.
+
+// First, verify the initial state to make sure that the browser does not have
+// client hints preferences cached from a previous run of the test.
+promise_test(t => {
+  return fetch("echo_client_hints_received.py").then(r => {
+    assert_equals(r.status, 200)
+    // Verify that the browser did not include client hints in the request
+    // headers when fetching echo_client_hints_received.py.
+    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+  });
+}, "Precondition: Test that the browser does not have client hints preferences cached");
+
+</script>
+
+<!-- Fetching this webpage should NOT cause user-agent to persist client hint
+ preferences for the origin.-->
+<iframe src="https://{{hosts[][www]}}:{{ports[https][0]}}/client-hints/resources/accept_ch_lifetime.html"></iframe>
+
+<script>
+// Open a new window. Verify that the user agent does not attach the client
+// hints.
+var win = window.open("resources/do_not_expect_client_hints_headers.html");
+assert_not_equals(win, null, "Popup windows not allowed?");
+
+async_test(t => {
+  window.addEventListener('message', function(e) {
+    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
+      return;
+    }
+    if(typeof e.data != "string")
+      return;
+    assert_equals(e.data, "PASS");
+    t.done();
+  })
+}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
+
+</script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html
new file mode 100644
index 0000000..ca5a2b5
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_same_origin_iframe.tentative.https.html
@@ -0,0 +1,67 @@
+<html>
+<title>Accept-CH-Lifetime test with same-origin iframe</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<!--
+Apart from this webpage, the test opens another html web page. One test is run
+in this web page, and another in the second web page.
+-->
+
+<script>
+
+// This test fetches resources/accept_ch_lifetime.html in a same origin iframe.
+// The response headers to that webpage contain Accept-CH and Accept-CH-Lifetime
+// headers.
+
+// Fetching that webpage should cause the user-agent to persist origin
+// preferences for the client hints specified in Accept-CH header for a
+// duration specified in the Accept-CH-Lifetime header.
+
+// Next, to verify if the origin preferences were persisted by the user
+// agent, this test fetches resources/expect_client_hints_headers.html
+// in a new window. Fetching of resources/expect_client_hints_headers.html
+// verifies that the user agent actually sends the client hints in the request
+// headers.
+
+// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
+// is resolved.
+
+// First, verify the initial state to make sure that the browser does not have
+// client hints preferences cached from a previous run of the test.
+promise_test(t => {
+  return fetch("echo_client_hints_received.py").then(r => {
+    assert_equals(r.status, 200)
+    // Verify that the browser did not include client hints in the request
+    // headers when fetching echo_client_hints_received.py.
+    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+  });
+}, "Precondition: Test that the browser does not have client hints preferences cached");
+
+</script>
+
+<!-- Fetching this webpage should cause user-agent to persist client hint
+ preferences for the origin.-->
+<iframe src="resources/accept_ch_lifetime.html"></iframe>
+
+<script>
+// Open a new window. Verify that the user agent attaches the client hints.
+var win = window.open("resources/expect_client_hints_headers.html");
+assert_not_equals(win, null, "Popup windows not allowed?");
+async_test(t => {
+  window.addEventListener('message', function(e) {
+    if(!e.source.location.pathname.includes("expect_client_hints_headers.html")) {
+      return;
+    }
+    if(typeof e.data != "string")
+      return;
+    assert_equals(e.data, "PASS");
+    t.done();
+  })
+}, "Loading of resources/expect_client_hints_headers.html did not finish.");
+
+
+</script>
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_subresource.tentative.https.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_subresource.tentative.https.html
new file mode 100644
index 0000000..c37dd94
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/accept_ch_lifetime_subresource.tentative.https.html
@@ -0,0 +1,73 @@
+<html>
+<title>Accept-CH-Lifetime test with subresource</title>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<!--
+Apart from this webpage, the test opens another html web page. One test is run
+in this web page, and another in the second web page.
+-->
+
+<script>
+
+// This test fetches resources/accept_ch_lifetime.html as a subresource. The
+// response headers to that webpage contain Accept-CH and Accept-CH-Lifetime
+// headers.
+
+// Fetching that webpage as a subresource should NOT cause the user-agent to
+// persist origin preferences for the client hints specified in Accept-CH
+// header.
+
+// Next, to verify if the origin preferences were not persisted by the user
+// agent, this test fetches resources/do_not_expect_client_hints_headers.html
+// in a new window. Fetching of
+// resources/do_not_expect_client_hints_headers.html verifies that the user
+// agent does not send the client hints in the request headers.
+
+// Test is marked as tentative until https://github.com/whatwg/fetch/issues/726
+// is resolved.
+
+// First, verify the initial state to make sure that the browser does not have
+// client hints preferences cached from a previous run of the test.
+promise_test(t => {
+  return fetch("echo_client_hints_received.py").then(r => {
+    assert_equals(r.status, 200)
+    // Verify that the browser did not include client hints in the request
+    // headers when fetching echo_client_hints_received.py.
+    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+  });
+}, "Precondition: Test that the browser does not have client hints preferences cached");
+
+promise_test(t => {
+  // Fetching this web page as a subresource should NOT cause user-agent to
+  // persist client hint preferences for the origin.
+  return fetch("resources/accept_ch_lifetime.html").then(r => {
+    assert_equals(r.status, 200)
+    // Verify that the browser did not include client hints in the request
+    // headers.
+    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+  });
+}, "Test receiving Accept-CH-Lifetime header");
+
+// Open a new window. Verify that the user agent does not attach the client
+// hints.
+var win = window.open("resources/do_not_expect_client_hints_headers.html");
+assert_not_equals(win, null, "Popup windows not allowed?");
+async_test(t => {
+  window.addEventListener('message', function(e) {
+    if(!e.source.location.pathname.includes("do_not_expect_client_hints_headers.html")) {
+      return;
+    }
+    if(typeof e.data != "string")
+      return;
+    assert_equals(e.data, "PASS");
+    t.done();
+  })
+}, "Loading of resources/do_not_expect_client_hints_headers.html did not finish.");
+
+
+</script>
+
+</body>
+</html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers b/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers
index f49694d..ec146df 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/accept_ch_lifetime.html.headers
@@ -1,2 +1,2 @@
 Accept-CH: device-memory
-Accept-CH-Lifetime: 20
+Accept-CH-Lifetime: 5
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/do_not_expect_client_hints_headers.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/do_not_expect_client_hints_headers.html
index 06fdbf7..31da74b 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/do_not_expect_client_hints_headers.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/do_not_expect_client_hints_headers.html
@@ -1,8 +1,5 @@
 <html>
 <body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
 <script>
 
 // This test checks if browser attaches the device-memory client hint in the
@@ -11,18 +8,15 @@
 // echo_client_hints_received.py sets the response headers depending on the set
 // of client hints it receives in the request headers.
 
-promise_test(t => {
-  return fetch("../echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser did not include client hints in the request
-    // headers when fetching echo_client_hints_received.py.
-    assert_false(r.headers.has("device-memory-received"), "device-memory-received");
+fetch("../echo_client_hints_received.py").then(r => {
+  if(r.status == 200 && r.headers.has("device-memory-received") != "device-memory-received") {
     window.top.opener.postMessage('PASS', '*');
-  });
-}, "Test if device-memory header was not sent by the browser");
-
+  }
+  else {
+    window.top.opener.postMessage('FAIL '+ ex.message, '*');
+  }
+});
 
 </script>
-
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/expect_client_hints_headers.html b/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/expect_client_hints_headers.html
index d767664..12d61e9 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/expect_client_hints_headers.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/client-hints/resources/expect_client_hints_headers.html
@@ -1,8 +1,5 @@
 <html>
 <body>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
 <script>
 
 // This test checks if browser attaches the device-memory client hint in the
@@ -11,18 +8,15 @@
 // echo_client_hints_received.py sets the response headers depending on the set
 // of client hints it receives in the request headers.
 
-promise_test(t => {
-  return fetch("../echo_client_hints_received.py").then(r => {
-    assert_equals(r.status, 200)
-    // Verify that the browser included client hints in the request headers when
-    // fetching echo_client_hints_received.py.
-    assert_true(r.headers.has("device-memory-received"), "device-memory-received");
+fetch("../echo_client_hints_received.py").then(r => {
+  if(r.status == 200 && r.headers.has("device-memory-received") == "device-memory-received") {
     window.top.opener.postMessage('PASS', '*');
-  });
-}, "Test if device-memory header was sent by the browser");
-
+  }
+  else {
+    window.top.opener.postMessage('FAIL '+ ex.message, '*');
+  }
+});
 
 </script>
-
 </body>
 </html>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/css/css-font-loading/idlharness.https.html b/third_party/WebKit/LayoutTests/external/wpt/css/css-font-loading/idlharness.https.html
index 037e62f9..d507a61 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/css/css-font-loading/idlharness.https.html
+++ b/third_party/WebKit/LayoutTests/external/wpt/css/css-font-loading/idlharness.https.html
@@ -6,25 +6,24 @@
 <script src="/resources/WebIDLParser.js"></script>
 <script src="/resources/idlharness.js"></script>
 <script>
-"use strict";
+'use strict';
 
-function doTest([dom, cssfontloading]) {
+promise_test(async () => {
+  const srcs = ['css-font-loading', 'dom', 'html', 'cssom'];
+  const [cssfontloading, dom, html, cssom] = await Promise.all(
+      srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
+
   const idl_array = new IdlArray();
-  idl_array.add_untested_idls(dom);
-  idl_array.add_untested_idls("[Exposed=Worker] interface WorkerGlobalScope : EventTarget { };");
-  idl_array.add_objects({Document: ["document"]});
   idl_array.add_idls(cssfontloading);
+  idl_array.add_dependency_idls(dom);
+  idl_array.add_dependency_idls(html);
+  idl_array.add_dependency_idls(cssom);
+  idl_array.add_objects({
+    Document: ['document'],
+    FontFace: ['new FontFace("family", "src")'],
+    FontFaceSetLoadEvent: ['new FontFaceSetLoadEvent("type")'],
+    FontFaceSet: ['document.fonts'],
+  });
   idl_array.test();
-}
-
-function fetchText(url) {
-  return fetch(url).then((response) => response.text());
-}
-
-promise_test(() => {
-  return Promise.all([
-    "/interfaces/dom.idl",
-    "/interfaces/css-font-loading.idl",
-  ].map(fetchText)).then(doTest);
-}, "Test IDL implementation of CSS Font Loading");
+}, 'css-font-loading interfaces');
 </script>
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt
index 2bb3475..e71915c 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 213 tests; 135 PASS, 78 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 214 tests; 136 PASS, 78 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Simplest possible test ("<div>abc")
 PASS Leading whitespace removed ("<div> abc")
 PASS Trailing whitespace removed ("<div>abc ")
@@ -37,6 +37,7 @@
 PASS Whitespace collapses across element boundaries ("<div><span>abc </span><span></span> def")
 FAIL Whitespace collapses across element boundaries ("<div><span>abc </span><span style='white-space:pre'></span> def") assert_equals: expected "abc def" but got "abc  def"
 PASS Soft line breaks ignored ("<div style='width:0'>abc def")
+PASS Whitespace text node preserved ("<div style='width:0'><span>abc</span> <span>def</span>")
 FAIL ::first-line styles applied ("<div class='first-line-uppercase' style='width:0'>abc def") assert_equals: expected "ABC def" but got "abc def"
 PASS ::first-letter styles applied ("<div class='first-letter-uppercase' style='width:0'>abc def")
 PASS ::first-letter float ignored ("<div class='first-letter-float' style='width:0'>abc def")
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-tests.js b/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-tests.js
index 77a3ebbf..af860c9 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-tests.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-tests.js
@@ -56,6 +56,7 @@
 /**** Soft line breaks ****/
 
 testText("<div style='width:0'>abc def", "abc def", "Soft line breaks ignored");
+testText("<div style='width:0'><span>abc</span> <span>def</span>", "abc def", "Whitespace text node preserved");
 
 /**** first-line/first-letter ****/
 
diff --git a/third_party/WebKit/LayoutTests/external/wpt/interfaces/css-font-loading.idl b/third_party/WebKit/LayoutTests/external/wpt/interfaces/css-font-loading.idl
index 3b5a2bc..020c4d2 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/interfaces/css-font-loading.idl
+++ b/third_party/WebKit/LayoutTests/external/wpt/interfaces/css-font-loading.idl
@@ -1,8 +1,3 @@
-// GENERATED CONTENT - DO NOT EDIT
-// Content of this file was automatically extracted from the
-// "CSS Font Loading Module Level 3" spec.
-// See: https://drafts.csswg.org/css-font-loading/
-
 typedef (ArrayBuffer or ArrayBufferView) BinaryData;
 
 dictionary FontFaceDescriptors {
@@ -89,3 +84,4 @@
 
 Document implements FontFaceSource;
 WorkerGlobalScope implements FontFaceSource;
+
diff --git a/third_party/WebKit/LayoutTests/external/wpt/service-workers/cache-storage/script-tests/cache-storage-match.js b/third_party/WebKit/LayoutTests/external/wpt/service-workers/cache-storage/script-tests/cache-storage-match.js
index 3546520..54be7e7b 100644
--- a/third_party/WebKit/LayoutTests/external/wpt/service-workers/cache-storage/script-tests/cache-storage-match.js
+++ b/third_party/WebKit/LayoutTests/external/wpt/service-workers/cache-storage/script-tests/cache-storage-match.js
@@ -117,7 +117,10 @@
 
 promise_test(function(test) {
     var transaction = create_unique_transaction();
-    return self.caches.has('foo')
+    return self.caches.delete('foo')
+      .then(function() {
+          return self.caches.has('foo');
+        })
       .then(function(has_foo) {
           assert_false(has_foo, "The cache should not exist.");
           return self.caches.match(transaction.request, {cacheName: 'foo'});
diff --git a/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-self-baseline-followed-by-item-style-change-should-not-crash.html b/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-self-baseline-followed-by-item-style-change-should-not-crash.html
new file mode 100644
index 0000000..ed6c9ad
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-self-baseline-followed-by-item-style-change-should-not-crash.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<div style="display: grid;">
+    <div id="item1"></div>
+</div>
+<div style="display: grid;">
+    <div id="item2" style="align-self: baseline"></div>
+</div>
+<div style="display: grid;">
+    <div id="item3" style="writing-mode: vertical-lr;"></div>
+</div>
+<script>
+    test(() => {
+       document.body.offsetLeft;
+       var item = document.getElementById("item1");
+       item.style.alignSelf = "baseline";
+       assert_equals(item.style.alignSelf, "baseline");
+    }, "No crash or assertion failure when changing align-self from 'auto' to 'baseline'.");
+    test(() => {
+       document.body.offsetLeft;
+       var item = document.getElementById("item2");
+       item.style.alignSelf = "start";
+       assert_equals(item.style.alignSelf, "start");
+    }, "No crash or assertion failure when changing align-self from 'baseline' to 'start'.");
+    test(() => {
+       document.body.offsetLeft;
+       var item = document.getElementById("item3");
+       item.style.writingMode = "horizontal-tb";
+       assert_equals(item.style.writingMode, "horizontal-tb");
+    }, "No crash or assertion failure when item's writing-mode changes from orthogonal to parallel.");
+</script>
diff --git a/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-requestData.html b/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-requestData.html
index d8cf2109..c4f418e1 100644
--- a/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-requestData.html
+++ b/third_party/WebKit/LayoutTests/fast/mediarecorder/MediaRecorder-requestData.html
@@ -26,7 +26,7 @@
   async_test(function(test) {
     const recorderOnDataAvailable = test.step_func_done(function(event) {
       assert_equals(event.data.size, 0, 'Recorded data size should be == 0');
-      assert_equals(event.data.type, "video/webm");
+      assert_equals(event.data.type, value['mimeType']);
       assert_not_equals(event.timecode, NaN, 'timecode');
     });
 
@@ -60,8 +60,11 @@
 };
 
 generate_tests(makeAsyncTest,
-               [["video-only",  {video: true,  audio: false}],
-                ["audio-only",  {video: false, audio: true}],
-                ["audio-video", {video: true,  audio: true}]]);
+    [["video-only",
+         {video: true,  audio: false, mimeType: "video/webm;codecs=vp8"}],
+     ["audio-only",
+         {video: false, audio: true, mimeType: "audio/webm;codecs=opus"}],
+     ["audio-video",
+         {video: true,  audio: true, mimeType: "video/webm;codecs=vp8,opus"}]]);
 
 </script>
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-snap/animate-fling-to-snap-points.html b/third_party/WebKit/LayoutTests/fast/scroll-snap/animate-fling-to-snap-points.html
new file mode 100644
index 0000000..dbbe8ce
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fast/scroll-snap/animate-fling-to-snap-points.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../../resources/gesture-util.js"></script>
+<style>
+div {
+  position: absolute;
+}
+#scroller {
+  width: 500px;
+  height: 500px;
+  overflow: scroll;
+  scroll-snap-type: both mandatory;
+  border: solid black 5px;
+}
+#space {
+  width: 2000px;
+  height: 2000px;
+}
+.target {
+  width: 200px;
+  height: 200px;
+  scroll-snap-align: start;
+  background-color: blue;
+}
+</style>
+
+<div id="scroller">
+  <div id="space"></div>
+  <div class="target" style="left: 0px; top: 0px;"></div>
+  <div class="target" style="left: 80px; top: 80px;"></div>
+  <div class="target" style="left: 800px; top: 800px;"></div>
+</div>
+
+<script>
+var scroller = document.getElementById("scroller");
+
+function scrollLeft() {
+  return scroller.scrollLeft;
+}
+
+promise_test (async () => {
+  scroller.scrollTo(0, 0);
+  await smoothScroll(100, 200, 200, GestureSourceType.TOUCH_INPUT, 'downright', SPEED_INSTANT);
+  await waitForAnimationEnd(scrollLeft, 700, 10);
+  await waitFor( () => {
+    return approx_equals(scroller.scrollLeft, 80, 1) &&
+           approx_equals(scroller.scrollTop, 80, 1);
+  });
+}, "Without fling enabled, the scroll ends at the closest snap point to the scroll destination.");
+
+promise_test (async () => {
+  scroller.scrollTo(0, 0);
+  await swipe(100, 200, 200, 'upleft', 3000);
+  await waitForAnimationEnd(scrollLeft, 700, 15);
+  await waitFor( () => {
+    return approx_equals(scroller.scrollLeft, 800, 1) &&
+           approx_equals(scroller.scrollTop, 800, 1);
+  });
+}, "With fling enabled, the scroll ends at the closest snap point to the fling destination.")
+
+</script>
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt b/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt
index cb26c6d..32236562 100644
--- a/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt
+++ b/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/external/wpt/html/dom/elements/the-innertext-idl-attribute/getter-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 213 tests; 140 PASS, 73 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 214 tests; 141 PASS, 73 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Simplest possible test ("<div>abc")
 PASS Leading whitespace removed ("<div> abc")
 PASS Trailing whitespace removed ("<div>abc ")
@@ -37,6 +37,7 @@
 PASS Whitespace collapses across element boundaries ("<div><span>abc </span><span></span> def")
 PASS Whitespace collapses across element boundaries ("<div><span>abc </span><span style='white-space:pre'></span> def")
 PASS Soft line breaks ignored ("<div style='width:0'>abc def")
+PASS Whitespace text node preserved ("<div style='width:0'><span>abc</span> <span>def</span>")
 FAIL ::first-line styles applied ("<div class='first-line-uppercase' style='width:0'>abc def") assert_equals: expected "ABC def" but got "abc def"
 PASS ::first-letter styles applied ("<div class='first-letter-uppercase' style='width:0'>abc def")
 PASS ::first-letter float ignored ("<div class='first-letter-float' style='width:0'>abc def")
diff --git a/third_party/WebKit/LayoutTests/fragmentation/foreignobject-no-pagination-expected.html b/third_party/WebKit/LayoutTests/fragmentation/foreignobject-no-pagination-expected.html
new file mode 100644
index 0000000..2b15a40
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/foreignobject-no-pagination-expected.html
@@ -0,0 +1,7 @@
+<!doctype HTML>
+<svg>
+  <foreignObject>
+    <div style="width: 50px; height: 100px; background: lightblue">
+    </div>
+  </foreignObject>
+</svg>
diff --git a/third_party/WebKit/LayoutTests/fragmentation/foreignobject-no-pagination.html b/third_party/WebKit/LayoutTests/fragmentation/foreignobject-no-pagination.html
new file mode 100644
index 0000000..7d2d68d
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fragmentation/foreignobject-no-pagination.html
@@ -0,0 +1,9 @@
+<!doctype HTML>
+<div style="columns: 2; height: 100px">
+ <svg>
+    <foreignObject>
+      <div style="width: 50px; height: 200px; background: lightblue">
+      </div>
+    </foreignObject>
+   </svg>
+</div>
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js
index 3016884..83df221 100644
--- a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js
@@ -171,6 +171,18 @@
     return this._start(description, null, url);
   }
 
+  async createTargetInNewContext(session, width, height, url, enableBeginFrameControl) {
+    const dp = session.protocol;
+    const browserContextId = (await dp.Target.createBrowserContext())
+        .result.browserContextId;
+    const targetId = (await dp.Target.createTarget(
+        {url, browserContextId, width, height, enableBeginFrameControl}))
+        .result.targetId;
+    const sessionId = (await dp.Target.attachToTarget({targetId}))
+        .result.sessionId;
+    return session.createChild(sessionId);
+  }
+
   async logStackTrace(debuggers, stackTrace, debuggerId) {
     while (stackTrace) {
       const {description, callFrames, parent, parentId} = stackTrace;
diff --git a/third_party/WebKit/LayoutTests/http/tests/locks/signal.html b/third_party/WebKit/LayoutTests/http/tests/locks/signal.html
index 49f0cdb..94f07a52 100644
--- a/third_party/WebKit/LayoutTests/http/tests/locks/signal.html
+++ b/third_party/WebKit/LayoutTests/http/tests/locks/signal.html
@@ -25,14 +25,6 @@
         res, {signal}, t.unreached_func('callback should not run')),
       'Bindings should throw if the signal option is a not an AbortSignal');
   }
-
-  // These cases should work:
-  for (const signal of [null, undefined]) {
-    assert_equals(
-      undefined,
-      await navigator.locks.request(res, {signal}, lock => {}),
-      'Bindings should accept a null-ish signal option');
-  }
 }, 'The signal option must be an AbortSignal');
 
 promise_test(async t => {
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-multiple-frames.js b/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-multiple-frames.js
index 55e782c..c9e7b36 100644
--- a/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-multiple-frames.js
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/animation/animation-multiple-frames.js
@@ -23,7 +23,7 @@
     if (!lastStartTime || animation.startTime >= lastStartTime)
       testRunner.log('Animation started: start time is valid');
     else if (lastStartTime)
-      testRunner.log('Animation started: invalid startTime!' + animation.startTime + '.' + lastStartTime);
+      testRunner.log(`Animation started: invalid startTime: ${animation.startTime} < ${lastStartTime}`);
     lastStartTime = animation.startTime;
     numberAnimationsCaptured++;
 
diff --git a/third_party/WebKit/LayoutTests/resources/gesture-util.js b/third_party/WebKit/LayoutTests/resources/gesture-util.js
index 84fbde0d..393cbef 100644
--- a/third_party/WebKit/LayoutTests/resources/gesture-util.js
+++ b/third_party/WebKit/LayoutTests/resources/gesture-util.js
@@ -27,6 +27,30 @@
   });
 }
 
+function waitForAnimationEnd(getValue, max_frame, max_unchanged_frame) {
+  const MAX_FRAME = max_frame;
+  const MAX_UNCHANGED_FRAME = max_unchanged_frame;
+  var last_changed_frame = 0;
+  var last_position = getValue();
+  return new Promise((resolve, reject) => {
+    function tick(frames) {
+    // We requestAnimationFrame either for MAX_FRAME or until
+    // MAX_UNCHANGED_FRAME with no change have been observed.
+      if (frames >= MAX_FRAME || frames - last_changed_frame > MAX_UNCHANGED_FRAME) {
+        resolve();
+      } else {
+        current_value = getValue();
+        if (last_position != current_value) {
+          last_changed_frame = frames;
+          last_position = current_value;
+        }
+        requestAnimationFrame(tick.bind(this, frames + 1));
+      }
+    }
+    tick(0);
+  })
+}
+
 // Enums for gesture_source_type parameters in gpuBenchmarking synthetic
 // gesture methods. Must match C++ side enums in synthetic_gesture_params.h
 const GestureSourceType = {
@@ -60,6 +84,21 @@
   });
 }
 
+function swipe(pixels_to_scroll, start_x, start_y, direction, speed_in_pixels_s) {
+  return new Promise((resolve, reject) => {
+    if (chrome && chrome.gpuBenchmarking) {
+      chrome.gpuBenchmarking.swipe(direction,
+                                   pixels_to_scroll,
+                                   resolve,
+                                   start_x,
+                                   start_y,
+                                   speed_in_pixels_s);
+    } else {
+      reject('This test requires chrome.gpuBenchmarking');
+    }
+  })
+}
+
 function pinchBy(scale, centerX, centerY, speed_in_pixels_s, gesture_source_type) {
   return new Promise((resolve, reject) => {
     if (chrome && chrome.gpuBenchmarking) {
@@ -157,3 +196,7 @@
     }
   });
 }
+
+function approx_equals(actual, expected, epsilon) {
+  return actual >= expected - epsilon && actual <= expected + epsilon;
+}
\ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/svg/custom/image-with-zoom-and-no-intrinsic-dims-expected.html b/third_party/WebKit/LayoutTests/svg/custom/image-with-zoom-and-no-intrinsic-dims-expected.html
new file mode 100644
index 0000000..f718ea6
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/svg/custom/image-with-zoom-and-no-intrinsic-dims-expected.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<div style="width: 100px; height: 100px; background-color: green"></div>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/image-with-zoom-and-no-intrinsic-dims.html b/third_party/WebKit/LayoutTests/svg/custom/image-with-zoom-and-no-intrinsic-dims.html
new file mode 100644
index 0000000..8b0b162
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/svg/custom/image-with-zoom-and-no-intrinsic-dims.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<svg style="zoom: 2">
+  <image x="-50" y="-50" width="100" height="100"
+         xlink:href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'><rect x='50' y='50' width='50' height='50' fill='green'/></svg>"/>
+</svg>
diff --git a/third_party/blink/public/platform/web_input_event.h b/third_party/blink/public/platform/web_input_event.h
index c34d26dc..7b26692 100644
--- a/third_party/blink/public/platform/web_input_event.h
+++ b/third_party/blink/public/platform/web_input_event.h
@@ -346,6 +346,17 @@
     return type_ == other.type_;
   }
 
+  bool IsGestureScroll() const {
+    switch (type_) {
+      case Type::kGestureScrollBegin:
+      case Type::kGestureScrollUpdate:
+      case Type::kGestureScrollEnd:
+        return true;
+      default:
+        return false;
+    }
+  }
+
   // Returns true if the WebInputEvent |type| is a pinch gesture event.
   static bool IsPinchGestureEventType(WebInputEvent::Type type) {
     return kGesturePinchTypeFirst <= type && type <= kGesturePinchTypeLast;
diff --git a/third_party/blink/public/platform/web_media_recorder_handler.h b/third_party/blink/public/platform/web_media_recorder_handler.h
index 68b35a8..3577b26 100644
--- a/third_party/blink/public/platform/web_media_recorder_handler.h
+++ b/third_party/blink/public/platform/web_media_recorder_handler.h
@@ -10,13 +10,13 @@
 #include "third_party/blink/public/platform/web_common.h"
 
 #include "third_party/blink/public/platform/modules/media_capabilities/web_media_capabilities_info.h"
+#include "third_party/blink/public/platform/web_string.h"
 
 namespace blink {
 
 class WebMediaRecorderHandlerClient;
 struct WebMediaConfiguration;
 class WebMediaStream;
-class WebString;
 
 // Platform interface of a MediaRecorder.
 class BLINK_PLATFORM_EXPORT WebMediaRecorderHandler {
@@ -47,6 +47,9 @@
     return false;
   }
 
+  // What is really being encoded???
+  virtual WebString ActualMimeType() { return WebString(); }
+
   // Implements WICG Media Capabilities encodingInfo() call for local encoding.
   // https://wicg.github.io/media-capabilities/#media-capabilities-interface
   virtual void EncodingInfo(
diff --git a/third_party/blink/public/platform/web_url_loader_client.h b/third_party/blink/public/platform/web_url_loader_client.h
index 8be21da..f1e64d8 100644
--- a/third_party/blink/public/platform/web_url_loader_client.h
+++ b/third_party/blink/public/platform/web_url_loader_client.h
@@ -33,6 +33,7 @@
 
 #include <memory>
 #include "base/time/time.h"
+#include "mojo/public/cpp/system/data_pipe.h"
 #include "third_party/blink/public/platform/web_common.h"
 #include "third_party/blink/public/platform/web_data_consumer_handle.h"
 #include "third_party/blink/public/platform/web_referrer_policy.h"
diff --git a/third_party/blink/public/platform/web_url_request.h b/third_party/blink/public/platform/web_url_request.h
index f72e098506..183480d 100644
--- a/third_party/blink/public/platform/web_url_request.h
+++ b/third_party/blink/public/platform/web_url_request.h
@@ -35,13 +35,18 @@
 #include "base/optional.h"
 #include "base/time/time.h"
 #include "base/unguessable_token.h"
-#include "services/network/public/mojom/cors.mojom-shared.h"
-#include "services/network/public/mojom/fetch_api.mojom-shared.h"
-#include "services/network/public/mojom/request_context_frame_type.mojom-shared.h"
 #include "third_party/blink/public/platform/web_common.h"
-#include "third_party/blink/public/platform/web_http_body.h"
 #include "third_party/blink/public/platform/web_referrer_policy.h"
-#include "third_party/blink/public/platform/web_security_origin.h"
+
+namespace network {
+namespace mojom {
+enum class CORSPreflightPolicy : int32_t;
+enum class FetchCredentialsMode : int32_t;
+enum class FetchRedirectMode : int32_t;
+enum class FetchRequestMode : int32_t;
+enum class RequestContextFrameType : int32_t;
+}  // namespace mojom
+}  // namespace network
 
 namespace blink {
 
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
index 86152e5..050af6e 100644
--- a/third_party/blink/public/web/web_local_frame.h
+++ b/third_party/blink/public/web/web_local_frame.h
@@ -22,6 +22,7 @@
 #include "third_party/blink/public/platform/web_url_request.h"
 #include "third_party/blink/public/web/commit_result.mojom-shared.h"
 #include "third_party/blink/public/web/selection_menu_behavior.mojom-shared.h"
+#include "third_party/blink/public/web/web_document_loader.h"
 #include "third_party/blink/public/web/web_frame.h"
 #include "third_party/blink/public/web/web_frame_load_type.h"
 #include "third_party/blink/public/web/web_history_item.h"
@@ -37,7 +38,6 @@
 class WebAutofillClient;
 class WebContentSettingsClient;
 class WebData;
-class WebDocumentLoader;
 class WebDocument;
 class WebDoubleSize;
 class WebDOMEvent;
@@ -214,7 +214,8 @@
       WebFrameLoadType,
       const WebHistoryItem&,
       bool is_client_redirect,
-      const base::UnguessableToken& devtools_navigation_token) = 0;
+      const base::UnguessableToken& devtools_navigation_token,
+      std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) = 0;
 
   // Commits a same-document navigation in the frame. For history navigations, a
   // valid WebHistoryItem should be provided. Returns CommitResult::Ok if the
@@ -251,7 +252,9 @@
       bool replace = false,
       WebFrameLoadType = WebFrameLoadType::kStandard,
       const WebHistoryItem& = WebHistoryItem(),
-      bool is_client_redirect = false) = 0;
+      bool is_client_redirect = false,
+      std::unique_ptr<WebDocumentLoader::ExtraData> navigation_data =
+          nullptr) = 0;
 
   // Returns the document loader that is currently loading.  May be null.
   virtual WebDocumentLoader* GetProvisionalDocumentLoader() const = 0;
diff --git a/third_party/blink/renderer/bindings/core/v8/script_source_code.cc b/third_party/blink/renderer/bindings/core/v8/script_source_code.cc
index d89a6640..7b5bd83 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_source_code.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_source_code.cc
@@ -10,9 +10,9 @@
 
 namespace {
 
-String TreatNullSourceAsEmpty(const String& source) {
+MovableString TreatNullSourceAsEmpty(const MovableString& source) {
   // ScriptSourceCode allows for the representation of the null/not-there-really
-  // ScriptSourceCode value.  Encoded by way of a m_source.isNull() being true,
+  // ScriptSourceCode value.  Encoded by way of a source_.IsNull() being true,
   // with the nullary constructor to be used to construct such a value.
   //
   // Should the other constructors be passed a null string, that is interpreted
@@ -20,7 +20,7 @@
   // between such null string occurrences.  Do that by converting the latter
   // case's null strings into empty ones.
   if (source.IsNull())
-    return "";
+    return MovableString();
 
   return source;
 }
@@ -49,7 +49,7 @@
 }  // namespace
 
 ScriptSourceCode::ScriptSourceCode(
-    const String& source,
+    const MovableString& source,
     ScriptSourceLocationType source_location_type,
     SingleCachedMetadataHandler* cache_handler,
     const KURL& url,
@@ -63,6 +63,18 @@
   DCHECK(source_location_type != ScriptSourceLocationType::kExternalFile);
 }
 
+ScriptSourceCode::ScriptSourceCode(
+    const String& source,
+    ScriptSourceLocationType source_location_type,
+    SingleCachedMetadataHandler* cache_handler,
+    const KURL& url,
+    const TextPosition& start_position)
+    : ScriptSourceCode(MovableString(source.Impl()),
+                       source_location_type,
+                       cache_handler,
+                       url,
+                       start_position) {}
+
 ScriptSourceCode::ScriptSourceCode(ScriptStreamer* streamer,
                                    ScriptResource* resource)
     : source_(TreatNullSourceAsEmpty(resource->SourceText())),
diff --git a/third_party/blink/renderer/bindings/core/v8/script_source_code.h b/third_party/blink/renderer/bindings/core/v8/script_source_code.h
index a48e301..0dde36c 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_source_code.h
+++ b/third_party/blink/renderer/bindings/core/v8/script_source_code.h
@@ -36,6 +36,7 @@
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_position.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
@@ -52,6 +53,13 @@
   ScriptSourceCode(
       const String& source,
       ScriptSourceLocationType = ScriptSourceLocationType::kUnknown,
+      SingleCachedMetadataHandler* = nullptr,
+      const KURL& = KURL(),
+      const TextPosition& = TextPosition::MinimumPosition());
+
+  ScriptSourceCode(
+      const MovableString& source,
+      ScriptSourceLocationType = ScriptSourceLocationType::kUnknown,
       SingleCachedMetadataHandler* cache_handler = nullptr,
       const KURL& = KURL(),
       const TextPosition& start_position = TextPosition::MinimumPosition());
@@ -65,7 +73,7 @@
   ~ScriptSourceCode();
   void Trace(blink::Visitor*);
 
-  const String& Source() const { return source_; }
+  const MovableString& Source() const { return source_; }
   SingleCachedMetadataHandler* CacheHandler() const { return cache_handler_; }
   const KURL& Url() const { return url_; }
   const TextPosition& StartPosition() const { return start_position_; }
@@ -77,7 +85,7 @@
   ScriptStreamer* Streamer() const { return streamer_; }
 
  private:
-  const String source_;
+  const MovableString source_;
   Member<SingleCachedMetadataHandler> cache_handler_;
   Member<ScriptStreamer> streamer_;
 
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc b/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc
index a729e69..e9b01be 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_html_constructor.cc
@@ -93,8 +93,6 @@
 
   ExceptionState exception_state(isolate, ExceptionState::kConstructionContext,
                                  "HTMLElement");
-  v8::TryCatch try_catch(isolate);
-
   // 6. Let prototype be Get(NewTarget, "prototype"). Rethrow any exceptions.
   v8::Local<v8::Value> prototype;
   v8::Local<v8::String> prototype_string = V8AtomicString(isolate, "prototype");
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc
index 8478cfe..cc22f3f1 100644
--- a/third_party/blink/renderer/core/dom/element.cc
+++ b/third_party/blink/renderer/core/dom/element.cc
@@ -971,9 +971,11 @@
 
     FloatPoint end_point(new_left * box->Style()->EffectiveZoom(),
                          box->ScrollTop().ToFloat());
-    if (SnapCoordinator* coordinator = GetDocument().GetSnapCoordinator()) {
-      end_point =
-          coordinator->GetSnapPositionForPoint(*box, end_point, true, false);
+    if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+      end_point = GetDocument()
+                      .GetSnapCoordinator()
+                      ->GetSnapPositionForPoint(*box, end_point, true, false)
+                      .value_or(end_point);
     }
     box->SetScrollLeft(LayoutUnit::FromFloatRound(end_point.X()));
   }
@@ -1000,9 +1002,11 @@
 
     FloatPoint end_point(box->ScrollLeft().ToFloat(),
                          new_top * box->Style()->EffectiveZoom());
-    if (SnapCoordinator* coordinator = GetDocument().GetSnapCoordinator()) {
-      end_point =
-          coordinator->GetSnapPositionForPoint(*box, end_point, false, true);
+    if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+      end_point = GetDocument()
+                      .GetSnapCoordinator()
+                      ->GetSnapPositionForPoint(*box, end_point, false, true)
+                      .value_or(end_point);
     }
     box->SetScrollTop(LayoutUnit::FromFloatRound(end_point.Y()));
   }
@@ -1119,10 +1123,14 @@
         top * box->Style()->EffectiveZoom() + current_scaled_top;
 
     FloatPoint new_scaled_position(new_scaled_left, new_scaled_top);
-    if (SnapCoordinator* coordinator = GetDocument().GetSnapCoordinator()) {
-      new_scaled_position = coordinator->GetSnapPositionForPoint(
-          *box, new_scaled_position, scroll_to_options.hasLeft(),
-          scroll_to_options.hasTop());
+    if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+      new_scaled_position =
+          GetDocument()
+              .GetSnapCoordinator()
+              ->GetSnapPositionForPoint(*box, new_scaled_position,
+                                        scroll_to_options.hasLeft(),
+                                        scroll_to_options.hasTop())
+              .value_or(new_scaled_position);
     }
     box->ScrollToPosition(new_scaled_position, scroll_behavior);
   }
@@ -1147,10 +1155,14 @@
           box->Style()->EffectiveZoom();
 
     FloatPoint new_scaled_position(scaled_left, scaled_top);
-    if (SnapCoordinator* coordinator = GetDocument().GetSnapCoordinator()) {
-      new_scaled_position = coordinator->GetSnapPositionForPoint(
-          *box, new_scaled_position, scroll_to_options.hasLeft(),
-          scroll_to_options.hasTop());
+    if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+      new_scaled_position =
+          GetDocument()
+              .GetSnapCoordinator()
+              ->GetSnapPositionForPoint(*box, new_scaled_position,
+                                        scroll_to_options.hasLeft(),
+                                        scroll_to_options.hasTop())
+              .value_or(new_scaled_position);
     }
     box->ScrollToPosition(new_scaled_position, scroll_behavior);
   }
@@ -1189,10 +1201,14 @@
 
   FloatPoint new_scaled_position = viewport->ScrollOffsetToPosition(
       ScrollOffset(new_scaled_left, new_scaled_top));
-  if (SnapCoordinator* coordinator = GetDocument().GetSnapCoordinator()) {
-    new_scaled_position = coordinator->GetSnapPositionForPoint(
-        *GetDocument().GetLayoutView(), new_scaled_position,
-        scroll_to_options.hasLeft(), scroll_to_options.hasTop());
+  if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+    new_scaled_position =
+        GetDocument()
+            .GetSnapCoordinator()
+            ->GetSnapPositionForPoint(
+                *GetDocument().GetLayoutView(), new_scaled_position,
+                scroll_to_options.hasLeft(), scroll_to_options.hasTop())
+            .value_or(new_scaled_position);
   }
   viewport->SetScrollOffset(
       viewport->ScrollPositionToOffset(new_scaled_position),
@@ -1230,10 +1246,14 @@
 
   FloatPoint new_scaled_position =
       viewport->ScrollOffsetToPosition(ScrollOffset(scaled_left, scaled_top));
-  if (SnapCoordinator* coordinator = GetDocument().GetSnapCoordinator()) {
-    new_scaled_position = coordinator->GetSnapPositionForPoint(
-        *GetDocument().GetLayoutView(), new_scaled_position,
-        scroll_to_options.hasLeft(), scroll_to_options.hasTop());
+  if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+    new_scaled_position =
+        GetDocument()
+            .GetSnapCoordinator()
+            ->GetSnapPositionForPoint(
+                *GetDocument().GetLayoutView(), new_scaled_position,
+                scroll_to_options.hasLeft(), scroll_to_options.hasTop())
+            .value_or(new_scaled_position);
   }
   viewport->SetScrollOffset(
       viewport->ScrollPositionToOffset(new_scaled_position),
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
index 5c3f9a1..7c25a9f 100644
--- a/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.cc
@@ -709,11 +709,14 @@
     const ResourceRequest& request,
     const SubstituteData& data,
     ClientRedirectPolicy client_redirect_policy,
-    const base::UnguessableToken& devtools_navigation_token) {
+    const base::UnguessableToken& devtools_navigation_token,
+    std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   DCHECK(frame);
 
   WebDocumentLoaderImpl* document_loader = WebDocumentLoaderImpl::Create(
       frame, request, data, client_redirect_policy, devtools_navigation_token);
+  document_loader->SetExtraData(std::move(extra_data));
+
   if (web_frame_->Client())
     web_frame_->Client()->DidCreateDocumentLoader(document_loader);
   return document_loader;
diff --git a/third_party/blink/renderer/core/exported/local_frame_client_impl.h b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
index d783fc0..7b0b28e 100644
--- a/third_party/blink/renderer/core/exported/local_frame_client_impl.h
+++ b/third_party/blink/renderer/core/exported/local_frame_client_impl.h
@@ -159,7 +159,8 @@
       const ResourceRequest&,
       const SubstituteData&,
       ClientRedirectPolicy,
-      const base::UnguessableToken& devtools_navigation_token) override;
+      const base::UnguessableToken& devtools_navigation_token,
+      std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) override;
   WTF::String UserAgent() override;
   WTF::String DoNotTrackValue() override;
   void TransitionToCommittedForNewPage() override;
diff --git a/third_party/blink/renderer/core/exported/web_frame_test.cc b/third_party/blink/renderer/core/exported/web_frame_test.cc
index d1e3567d..2c234ac 100644
--- a/third_party/blink/renderer/core/exported/web_frame_test.cc
+++ b/third_party/blink/renderer/core/exported/web_frame_test.cc
@@ -7696,7 +7696,7 @@
       history_item->GenerateResourceRequest(mojom::FetchCacheMode::kDefault);
   main_frame->CommitNavigation(WrappedResourceRequest(request),
                                WebFrameLoadType::kBackForward, item, false,
-                               base::UnguessableToken::Create());
+                               base::UnguessableToken::Create(), nullptr);
 
   FrameTestHelpers::ReloadFrame(child_frame);
   EXPECT_EQ(item.UrlString(), main_frame->GetDocument().Url().GetString());
diff --git a/third_party/blink/renderer/core/fetch/fetch_request_data.cc b/third_party/blink/renderer/core/fetch/fetch_request_data.cc
index da10860..b7fd289 100644
--- a/third_party/blink/renderer/core/fetch/fetch_request_data.cc
+++ b/third_party/blink/renderer/core/fetch/fetch_request_data.cc
@@ -5,6 +5,7 @@
 #include "third_party/blink/renderer/core/fetch/fetch_request_data.h"
 
 #include "third_party/blink/public/platform/modules/serviceworker/web_service_worker_request.h"
+#include "third_party/blink/public/platform/web_http_body.h"
 #include "third_party/blink/public/platform/web_url_request.h"
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/fetch/blob_bytes_consumer.h"
diff --git a/third_party/blink/renderer/core/frame/frame_test_helpers.cc b/third_party/blink/renderer/core/frame/frame_test_helpers.cc
index f0d73336..6091704 100644
--- a/third_party/blink/renderer/core/frame/frame_test_helpers.cc
+++ b/third_party/blink/renderer/core/frame/frame_test_helpers.cc
@@ -105,9 +105,10 @@
   if (web_url.ProtocolIs("javascript")) {
     frame->LoadJavaScriptURL(web_url);
   } else {
-    frame->CommitNavigation(
-        WebURLRequest(web_url), blink::WebFrameLoadType::kStandard,
-        blink::WebHistoryItem(), false, base::UnguessableToken::Create());
+    frame->CommitNavigation(WebURLRequest(web_url),
+                            blink::WebFrameLoadType::kStandard,
+                            blink::WebHistoryItem(), false,
+                            base::UnguessableToken::Create(), nullptr);
   }
   PumpPendingRequestsForFrameToLoad(frame);
 }
@@ -126,7 +127,7 @@
   frame->CommitNavigation(
       WrappedResourceRequest(history_item->GenerateResourceRequest(cache_mode)),
       WebFrameLoadType::kBackForward, item,
-      /*is_client_redirect=*/false, base::UnguessableToken::Create());
+      /*is_client_redirect=*/false, base::UnguessableToken::Create(), nullptr);
   PumpPendingRequestsForFrameToLoad(frame);
 }
 
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 19cb481a..53a017d 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -1139,10 +1139,14 @@
                             y * GetFrame()->PageZoomFactor());
   FloatPoint new_scaled_position =
       viewport->ScrollOffsetToPosition(scaled_delta + current_offset);
-  if (SnapCoordinator* coordinator = document()->GetSnapCoordinator()) {
-    new_scaled_position = coordinator->GetSnapPositionForPoint(
-        *document()->GetLayoutView(), new_scaled_position,
-        scroll_to_options.hasLeft(), scroll_to_options.hasTop());
+  if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+    new_scaled_position =
+        document()
+            ->GetSnapCoordinator()
+            ->GetSnapPositionForPoint(
+                *document()->GetLayoutView(), new_scaled_position,
+                scroll_to_options.hasLeft(), scroll_to_options.hasTop())
+            .value_or(new_scaled_position);
   }
 
   ScrollBehavior scroll_behavior = kScrollBehaviorAuto;
@@ -1210,10 +1214,14 @@
 
   FloatPoint new_scaled_position =
       viewport->ScrollOffsetToPosition(ScrollOffset(scaled_x, scaled_y));
-  if (SnapCoordinator* coordinator = document()->GetSnapCoordinator()) {
-    new_scaled_position = coordinator->GetSnapPositionForPoint(
-        *document()->GetLayoutView(), new_scaled_position,
-        scroll_to_options.hasLeft(), scroll_to_options.hasTop());
+  if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled()) {
+    new_scaled_position =
+        document()
+            ->GetSnapCoordinator()
+            ->GetSnapPositionForPoint(
+                *document()->GetLayoutView(), new_scaled_position,
+                scroll_to_options.hasLeft(), scroll_to_options.hasTop())
+            .value_or(new_scaled_position);
   }
 
   ScrollBehavior scroll_behavior = kScrollBehaviorAuto;
@@ -1410,12 +1418,20 @@
 }
 
 void LocalDOMWindow::WarnUnusedPreloads(TimerBase* base) {
-  if (GetFrame() && GetFrame()->Loader().GetDocumentLoader()) {
-    ResourceFetcher* fetcher =
-        GetFrame()->Loader().GetDocumentLoader()->Fetcher();
-    DCHECK(fetcher);
-    if (fetcher->CountPreloads())
-      fetcher->WarnUnusedPreloads();
+  if (!GetFrame() || !GetFrame()->Loader().GetDocumentLoader())
+    return;
+  ResourceFetcher* fetcher =
+      GetFrame()->Loader().GetDocumentLoader()->Fetcher();
+  DCHECK(fetcher);
+  Vector<KURL> urls = fetcher->GetUrlsOfUnusedPreloads();
+  for (const KURL& url : urls) {
+    String message =
+        "The resource " + url.GetString() + " was preloaded using link " +
+        "preload but not used within a few seconds from the window's load " +
+        "event. Please make sure it has an appropriate `as` value and it is " +
+        "preloaded intentionally.";
+    GetFrameConsole()->AddMessage(ConsoleMessage::Create(
+        kJSMessageSource, kWarningMessageLevel, message));
   }
 }
 
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index 4e837ac..cbf67de 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -1430,4 +1430,8 @@
   pause_handle_bindings_.CloseAllBindings();
 }
 
+void LocalFrame::AnimateSnapFling(base::TimeTicks monotonic_time) {
+  GetEventHandler().AnimateSnapFling(monotonic_time);
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
index 7ce43cd..178e41fe 100644
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -92,6 +92,7 @@
 class PerformanceMonitor;
 class PluginData;
 class ScriptController;
+class SharedBuffer;
 class SpellChecker;
 class TextSuggestionController;
 class WebComputedAXTree;
@@ -358,6 +359,8 @@
 
   void ResumeSubresourceLoading();
 
+  void AnimateSnapFling(base::TimeTicks monotonic_time);
+
  private:
   friend class FrameNavigationDisabler;
 
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h
index d63d6d8..3d1b6a6 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -230,7 +230,8 @@
       const ResourceRequest&,
       const SubstituteData&,
       ClientRedirectPolicy,
-      const base::UnguessableToken& devtools_navigation_token) = 0;
+      const base::UnguessableToken& devtools_navigation_token,
+      std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) = 0;
 
   virtual String UserAgent() = 0;
 
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index c933481..1b06b93 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -938,7 +938,7 @@
   CommitDataNavigation(data, WebString::FromUTF8("text/html"),
                        WebString::FromUTF8("UTF-8"), base_url, unreachable_url,
                        replace, WebFrameLoadType::kStandard, WebHistoryItem(),
-                       false);
+                       false, nullptr);
 }
 
 void WebLocalFrameImpl::StopLoading() {
@@ -2024,7 +2024,8 @@
     WebFrameLoadType web_frame_load_type,
     const WebHistoryItem& item,
     bool is_client_redirect,
-    const base::UnguessableToken& devtools_navigation_token) {
+    const base::UnguessableToken& devtools_navigation_token,
+    std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   DCHECK(GetFrame());
   DCHECK(!request.IsNull());
   DCHECK(!request.Url().ProtocolIs("javascript"));
@@ -2040,7 +2041,7 @@
     frame_request.SetClientRedirect(ClientRedirectPolicy::kClientRedirect);
   HistoryItem* history_item = item;
   GetFrame()->Loader().CommitNavigation(frame_request, web_frame_load_type,
-                                        history_item);
+                                        history_item, std::move(extra_data));
 }
 
 blink::mojom::CommitResult WebLocalFrameImpl::CommitSameDocumentNavigation(
@@ -2106,7 +2107,8 @@
     bool replace,
     WebFrameLoadType web_frame_load_type,
     const WebHistoryItem& item,
-    bool is_client_redirect) {
+    bool is_client_redirect,
+    std::unique_ptr<WebDocumentLoader::ExtraData> navigation_data) {
   DCHECK(GetFrame());
 
   // If we are loading substitute data to replace an existing load, then
@@ -2143,7 +2145,8 @@
     frame_request.SetClientRedirect(ClientRedirectPolicy::kClientRedirect);
 
   GetFrame()->Loader().CommitNavigation(frame_request, web_frame_load_type,
-                                        history_item);
+                                        history_item,
+                                        std::move(navigation_data));
 }
 
 WebLocalFrame::FallbackContentResult
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
index 5c97e109..d9996aa 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -263,22 +263,25 @@
       WebFrameLoadType,
       const WebHistoryItem&,
       bool is_client_redirect,
-      const base::UnguessableToken& devtools_navigation_token) override;
+      const base::UnguessableToken& devtools_navigation_token,
+      std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) override;
   blink::mojom::CommitResult CommitSameDocumentNavigation(
       const WebURL&,
       WebFrameLoadType,
       const WebHistoryItem&,
       bool is_client_redirect) override;
   void LoadJavaScriptURL(const WebURL&) override;
-  void CommitDataNavigation(const WebData&,
-                            const WebString& mime_type,
-                            const WebString& text_encoding,
-                            const WebURL& base_url,
-                            const WebURL& unreachable_url,
-                            bool replace,
-                            WebFrameLoadType,
-                            const WebHistoryItem&,
-                            bool is_client_redirect) override;
+  void CommitDataNavigation(
+      const WebData&,
+      const WebString& mime_type,
+      const WebString& text_encoding,
+      const WebURL& base_url,
+      const WebURL& unreachable_url,
+      bool replace,
+      WebFrameLoadType,
+      const WebHistoryItem&,
+      bool is_client_redirect,
+      std::unique_ptr<WebDocumentLoader::ExtraData> navigation_data) override;
   FallbackContentResult MaybeRenderFallbackContent(
       const WebURLError&) const override;
   void ReportContentSecurityPolicyViolation(
diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_party/blink/renderer/core/input/event_handler.cc
index b50b2e24..ee85ab0 100644
--- a/third_party/blink/renderer/core/input/event_handler.cc
+++ b/third_party/blink/renderer/core/input/event_handler.cc
@@ -1229,6 +1229,10 @@
   should_only_fire_drag_over_event_ = false;
 }
 
+void EventHandler::AnimateSnapFling(base::TimeTicks monotonic_time) {
+  scroll_manager_->AnimateSnapFling(monotonic_time);
+}
+
 void EventHandler::SetCapturingMouseEventsNode(Node* n) {
   capturing_mouse_events_node_ = n;
   event_handler_will_reset_capturing_mouse_events_node_ = false;
diff --git a/third_party/blink/renderer/core/input/event_handler.h b/third_party/blink/renderer/core/input/event_handler.h
index 4fb63c87..58a295c 100644
--- a/third_party/blink/renderer/core/input/event_handler.h
+++ b/third_party/blink/renderer/core/input/event_handler.h
@@ -277,6 +277,8 @@
     return *event_handler_registry_;
   }
 
+  void AnimateSnapFling(base::TimeTicks monotonic_time);
+
  private:
   enum NoCursorChangeType { kNoCursorChange };
 
diff --git a/third_party/blink/renderer/core/input/scroll_manager.cc b/third_party/blink/renderer/core/input/scroll_manager.cc
index 7a941f24..6c80d05e 100644
--- a/third_party/blink/renderer/core/input/scroll_manager.cc
+++ b/third_party/blink/renderer/core/input/scroll_manager.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/renderer/core/layout/layout_embedded_content.h"
 #include "third_party/blink/renderer/core/layout/layout_view.h"
 #include "third_party/blink/renderer/core/page/autoscroll_controller.h"
+#include "third_party/blink/renderer/core/page/chrome_client.h"
 #include "third_party/blink/renderer/core/page/page.h"
 #include "third_party/blink/renderer/core/page/scrolling/overscroll_controller.h"
 #include "third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h"
@@ -30,8 +31,38 @@
 #include "third_party/blink/renderer/platform/scroll/scroll_customization.h"
 
 namespace blink {
+namespace {
+
+SnapFlingController::GestureScrollType ToGestureScrollType(
+    WebInputEvent::Type web_event_type) {
+  switch (web_event_type) {
+    case WebInputEvent::kGestureScrollBegin:
+      return SnapFlingController::GestureScrollType::kBegin;
+    case WebInputEvent::kGestureScrollUpdate:
+      return SnapFlingController::GestureScrollType::kUpdate;
+    case WebInputEvent::kGestureScrollEnd:
+      return SnapFlingController::GestureScrollType::kEnd;
+    default:
+      NOTREACHED();
+      return SnapFlingController::GestureScrollType::kBegin;
+  }
+}
+
+SnapFlingController::GestureScrollUpdateInfo GetGestureScrollUpdateInfo(
+    const WebGestureEvent& event) {
+  return {.delta = gfx::Vector2dF(-event.data.scroll_update.delta_x,
+                                  -event.data.scroll_update.delta_y),
+          .is_in_inertial_phase = event.data.scroll_update.inertial_phase ==
+                                  WebGestureEvent::kMomentumPhase,
+          .event_time = event.TimeStamp()};
+}
+
+}  // namespace
 
 ScrollManager::ScrollManager(LocalFrame& frame) : frame_(frame) {
+  if (RuntimeEnabledFeatures::CSSScrollSnapPointsEnabled())
+    snap_fling_controller_ = std::make_unique<cc::SnapFlingController>(this);
+
   Clear();
 }
 
@@ -456,6 +487,12 @@
       return WebInputEventResult::kNotHandled;
     }
   }
+  if (snap_fling_controller_) {
+    if (snap_fling_controller_->HandleGestureScrollUpdate(
+            GetGestureScrollUpdateInfo(gesture_event))) {
+      return WebInputEventResult::kHandledSystem;
+    }
+  }
 
   // Negate the deltas since the gesture event stores finger movement and
   // scrolling occurs in the direction opposite the finger's movement
@@ -538,25 +575,6 @@
   return WebInputEventResult::kNotHandled;
 }
 
-void ScrollManager::SnapAtGestureScrollEnd() {
-  if (!previous_gesture_scrolled_element_)
-    return;
-  SnapCoordinator* snap_coordinator =
-      frame_->GetDocument()->GetSnapCoordinator();
-  Element* document_element = frame_->GetDocument()->documentElement();
-  LayoutBox* layout_box =
-      previous_gesture_scrolled_element_ == document_element
-          ? frame_->GetDocument()->GetLayoutView()
-          : previous_gesture_scrolled_element_->GetLayoutBox();
-  if (!snap_coordinator || !layout_box || !layout_box->GetScrollableArea() ||
-      (!did_scroll_x_for_scroll_gesture_ && !did_scroll_y_for_scroll_gesture_))
-    return;
-
-  snap_coordinator->PerformSnapping(*layout_box,
-                                    did_scroll_x_for_scroll_gesture_,
-                                    did_scroll_y_for_scroll_gesture_);
-}
-
 WebInputEventResult ScrollManager::HandleGestureScrollEnd(
     const WebGestureEvent& gesture_event) {
   TRACE_EVENT0("input", "ScrollManager::handleGestureScrollEnd");
@@ -589,6 +607,101 @@
   return WebInputEventResult::kNotHandled;
 }
 
+LayoutBox* ScrollManager::LayoutBoxForSnapping() const {
+  Element* document_element = frame_->GetDocument()->documentElement();
+  return previous_gesture_scrolled_element_ == document_element
+             ? frame_->GetDocument()->GetLayoutView()
+             : previous_gesture_scrolled_element_->GetLayoutBox();
+}
+
+ScrollableArea* ScrollManager::ScrollableAreaForSnapping() const {
+  Element* document_element = frame_->GetDocument()->documentElement();
+  return previous_gesture_scrolled_element_ == document_element
+             ? frame_->View()->GetScrollableArea()
+             : previous_gesture_scrolled_element_->GetLayoutBox()
+                   ->GetScrollableArea();
+}
+
+void ScrollManager::SnapAtGestureScrollEnd() {
+  if (!previous_gesture_scrolled_element_ ||
+      (!did_scroll_x_for_scroll_gesture_ && !did_scroll_y_for_scroll_gesture_))
+    return;
+  SnapCoordinator* snap_coordinator =
+      frame_->GetDocument()->GetSnapCoordinator();
+  if (!snap_coordinator)
+    return;
+
+  LayoutBox* layout_box = LayoutBoxForSnapping();
+  snap_coordinator->PerformSnapping(*layout_box,
+                                    did_scroll_x_for_scroll_gesture_,
+                                    did_scroll_y_for_scroll_gesture_);
+}
+
+bool ScrollManager::GetSnapFlingInfo(const gfx::Vector2dF& natural_displacement,
+                                     gfx::Vector2dF* out_initial_offset,
+                                     gfx::Vector2dF* out_target_offset) const {
+  if (!previous_gesture_scrolled_element_)
+    return false;
+
+  SnapCoordinator* snap_coordinator =
+      frame_->GetDocument()->GetSnapCoordinator();
+  LayoutBox* layout_box = LayoutBoxForSnapping();
+  if (!snap_coordinator || !layout_box || !layout_box->GetScrollableArea())
+    return false;
+  return snap_coordinator->GetSnapFlingInfo(
+      *layout_box, natural_displacement, out_initial_offset, out_target_offset);
+}
+
+gfx::Vector2dF ScrollManager::ScrollByForSnapFling(
+    const gfx::Vector2dF& delta) {
+  DCHECK(previous_gesture_scrolled_element_);
+  std::unique_ptr<ScrollStateData> scroll_state_data =
+      std::make_unique<ScrollStateData>();
+
+  // TODO(sunyunjia): Plumb the velocity of the snap curve as well.
+  scroll_state_data->delta_x = delta.x();
+  scroll_state_data->delta_y = delta.y();
+  scroll_state_data->is_in_inertial_phase = true;
+  scroll_state_data->from_user_input = true;
+  scroll_state_data->delta_granularity =
+      static_cast<double>(ScrollGranularity::kScrollByPrecisePixel);
+  scroll_state_data->delta_consumed_for_scroll_sequence =
+      delta_consumed_for_scroll_sequence_;
+  ScrollState* scroll_state = ScrollState::Create(std::move(scroll_state_data));
+  scroll_state->SetCurrentNativeScrollingElement(
+      previous_gesture_scrolled_element_);
+
+  CustomizedScroll(*scroll_state);
+
+  ScrollableArea* scrollable_area = ScrollableAreaForSnapping();
+  FloatPoint end_position = scrollable_area->ScrollPosition();
+  return gfx::Vector2dF(end_position.X(), end_position.Y());
+}
+
+void ScrollManager::ScrollEndForSnapFling() {
+  std::unique_ptr<ScrollStateData> scroll_state_data =
+      std::make_unique<ScrollStateData>();
+  scroll_state_data->is_ending = true;
+  scroll_state_data->is_in_inertial_phase = true;
+  scroll_state_data->from_user_input = true;
+  scroll_state_data->delta_consumed_for_scroll_sequence =
+      delta_consumed_for_scroll_sequence_;
+  ScrollState* scroll_state = ScrollState::Create(std::move(scroll_state_data));
+  CustomizedScroll(*scroll_state);
+  NotifyScrollPhaseEndForCustomizedScroll();
+  ClearGestureScrollState();
+}
+
+void ScrollManager::RequestAnimationForSnapFling() {
+  if (Page* page = frame_->GetPage())
+    page->GetChromeClient().ScheduleAnimation(frame_->View());
+}
+
+void ScrollManager::AnimateSnapFling(base::TimeTicks monotonic_time) {
+  DCHECK(snap_fling_controller_);
+  snap_fling_controller_->Animate(monotonic_time);
+}
+
 Page* ScrollManager::GetPage() const {
   return frame_->GetPage();
 }
@@ -696,6 +809,13 @@
     }
   }
 
+  if (snap_fling_controller_) {
+    if (gesture_event.IsGestureScroll() &&
+        (snap_fling_controller_->FilterEventForSnap(
+            ToGestureScrollType(gesture_event.GetType())))) {
+      return WebInputEventResult::kNotHandled;
+    }
+  }
   switch (gesture_event.GetType()) {
     case WebInputEvent::kGestureScrollBegin:
       return HandleGestureScrollBegin(gesture_event);
diff --git a/third_party/blink/renderer/core/input/scroll_manager.h b/third_party/blink/renderer/core/input/scroll_manager.h
index 3849f498..72f0136 100644
--- a/third_party/blink/renderer/core/input/scroll_manager.h
+++ b/third_party/blink/renderer/core/input/scroll_manager.h
@@ -14,6 +14,7 @@
 #include "third_party/blink/renderer/platform/geometry/layout_size.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/heap/visitor.h"
+#include "third_party/blink/renderer/platform/scroll/scroll_snap_data.h"
 #include "third_party/blink/renderer/platform/scroll/scroll_types.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 
@@ -26,6 +27,7 @@
 class PaintLayer;
 class PaintLayerScrollableArea;
 class Page;
+class ScrollableArea;
 class Scrollbar;
 class ScrollState;
 class WebGestureEvent;
@@ -34,9 +36,11 @@
 // user action that causes scrolling or resizing is determined in other *Manager
 // classes and they call into this class for doing the work.
 class CORE_EXPORT ScrollManager
-    : public GarbageCollectedFinalized<ScrollManager> {
+    : public GarbageCollectedFinalized<ScrollManager>,
+      public SnapFlingClient {
  public:
   explicit ScrollManager(LocalFrame&);
+  virtual ~ScrollManager() = default;
   void Trace(blink::Visitor*);
 
   void Clear();
@@ -90,6 +94,16 @@
   void ClearResizeScrollableArea(bool should_not_be_null);
   void SetResizeScrollableArea(PaintLayer*, IntPoint);
 
+  // SnapFlingClient implementation.
+  bool GetSnapFlingInfo(const gfx::Vector2dF& natural_displacement,
+                        gfx::Vector2dF* out_initial_offset,
+                        gfx::Vector2dF* out_target_offset) const override;
+  gfx::Vector2dF ScrollByForSnapFling(const gfx::Vector2dF& delta) override;
+  void ScrollEndForSnapFling() override;
+  void RequestAnimationForSnapFling() override;
+
+  void AnimateSnapFling(base::TimeTicks monotonic_time);
+
  private:
   WebInputEventResult HandleGestureScrollUpdate(const WebGestureEvent&);
   WebInputEventResult HandleGestureScrollBegin(const WebGestureEvent&);
@@ -125,6 +139,9 @@
   void NotifyScrollPhaseBeginForCustomizedScroll(const ScrollState&);
   void NotifyScrollPhaseEndForCustomizedScroll();
 
+  LayoutBox* LayoutBoxForSnapping() const;
+  ScrollableArea* ScrollableAreaForSnapping() const;
+
   // NOTE: If adding a new field to this class please ensure that it is
   // cleared in |ScrollManager::clear()|.
 
@@ -159,6 +176,8 @@
 
   Member<PaintLayerScrollableArea> resize_scrollable_area_;
 
+  std::unique_ptr<SnapFlingController> snap_fling_controller_;
+
   LayoutSize
       offset_from_resize_corner_;  // In the coords of m_resizeScrollableArea.
 
diff --git a/third_party/blink/renderer/core/input/scroll_snap_test.cc b/third_party/blink/renderer/core/input/scroll_snap_test.cc
index 2b7f3f2..e0b7f9c 100644
--- a/third_party/blink/renderer/core/input/scroll_snap_test.cc
+++ b/third_party/blink/renderer/core/input/scroll_snap_test.cc
@@ -21,8 +21,12 @@
   // the pointer/finger's location on touch screen.
   void GestureScroll(double x, double y, double delta_x, double delta_y);
   void ScrollBegin(double x, double y, double hint_x, double hint_y);
-  void ScrollUpdate(double x, double y, double delta_x, double delta_y);
-  void ScrollEnd(double x, double y);
+  void ScrollUpdate(double x,
+                    double y,
+                    double delta_x,
+                    double delta_y,
+                    bool is_in_inertial_phase = false);
+  void ScrollEnd(double x, double y, bool is_in_inertial_phase = false);
   void SetInitialScrollOffset(double x, double y);
 };
 
@@ -99,7 +103,8 @@
 void ScrollSnapTest::ScrollUpdate(double x,
                                   double y,
                                   double delta_x,
-                                  double delta_y) {
+                                  double delta_y,
+                                  bool is_in_inertial_phase) {
   WebGestureEvent event(WebInputEvent::kGestureScrollUpdate,
                         WebInputEvent::kNoModifiers, CurrentTimeTicks(),
                         WebGestureDevice::kWebGestureDeviceTouchscreen);
@@ -107,16 +112,23 @@
   event.SetPositionInScreen(WebFloatPoint(x, y));
   event.data.scroll_update.delta_x = delta_x;
   event.data.scroll_update.delta_y = delta_y;
+  if (is_in_inertial_phase) {
+    event.data.scroll_update.inertial_phase = WebGestureEvent::kMomentumPhase;
+    event.SetTimeStamp(base::TimeTicks());
+  }
   event.SetFrameScale(1);
   GetDocument().GetFrame()->GetEventHandler().HandleGestureScrollEvent(event);
 }
 
-void ScrollSnapTest::ScrollEnd(double x, double y) {
+void ScrollSnapTest::ScrollEnd(double x, double y, bool is_in_inertial_phase) {
   WebGestureEvent event(WebInputEvent::kGestureScrollEnd,
                         WebInputEvent::kNoModifiers, CurrentTimeTicks(),
                         WebGestureDevice::kWebGestureDeviceTouchscreen);
   event.SetPositionInWidget(WebFloatPoint(x, y));
   event.SetPositionInScreen(WebFloatPoint(x, y));
+  event.data.scroll_end.inertial_phase =
+      is_in_inertial_phase ? WebGestureEvent::kMomentumPhase
+                           : WebGestureEvent::kNonMomentumPhase;
   GetDocument().GetFrame()->GetEventHandler().HandleGestureScrollEvent(event);
 }
 
@@ -163,6 +175,33 @@
   ASSERT_EQ(scroller->scrollTop(), 200);
 }
 
+TEST_F(ScrollSnapTest, AnimateFlingToArriveAtSnapPoint) {
+  SetUpForDiv();
+  // Vertically align with the area.
+  SetInitialScrollOffset(0, 200);
+  Element* scroller = GetDocument().getElementById("scroller");
+  ASSERT_EQ(scroller->scrollLeft(), 0);
+  ASSERT_EQ(scroller->scrollTop(), 200);
+
+  ScrollBegin(100, 100, -5, 0);
+  // Starts with a non-inertial GSU.
+  ScrollUpdate(100, 100, -5, 0);
+  // Fling with an inertial GSU.
+  ScrollUpdate(95, 100, -5, 0, true);
+  ScrollEnd(90, 100);
+  Compositor().BeginFrame();
+  // Animate halfway through the fling.
+  Compositor().BeginFrame(0.2);
+  ASSERT_GT(scroller->scrollLeft(), 150);
+  ASSERT_LT(scroller->scrollLeft(), 180);
+  ASSERT_EQ(scroller->scrollTop(), 200);
+  // Finish the animation.
+  Compositor().BeginFrame(0.6);
+
+  ASSERT_EQ(scroller->scrollLeft(), 200);
+  ASSERT_EQ(scroller->scrollTop(), 200);
+}
+
 TEST_F(ScrollSnapTest, SnapWhenBodyViewportDefining) {
   v8::HandleScope HandleScope(v8::Isolate::GetCurrent());
   WebView().Resize(WebSize(300, 300));
diff --git a/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc
index 4418c01..cdd317f 100644
--- a/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_animation_agent.cc
@@ -547,16 +547,18 @@
 
 double InspectorAnimationAgent::NormalizedStartTime(
     blink::Animation& animation) {
+  double time_ms = animation.startTime().value_or(NullValue());
   if (ReferenceTimeline().PlaybackRate() == 0) {
-    return animation.startTime().value_or(NullValue()) +
-           ReferenceTimeline().currentTime() -
-           animation.TimelineInternal()->currentTime();
+    time_ms += ReferenceTimeline().currentTime() -
+               animation.TimelineInternal()->currentTime();
+  } else {
+    time_ms += (animation.TimelineInternal()->ZeroTime() -
+                ReferenceTimeline().ZeroTime())
+                   .InMillisecondsF() *
+               ReferenceTimeline().PlaybackRate();
   }
-  return animation.startTime().value_or(NullValue()) +
-         (animation.TimelineInternal()->ZeroTime() -
-          ReferenceTimeline().ZeroTime())
-                 .InMillisecondsF() *
-             ReferenceTimeline().PlaybackRate();
+  // Round to the closest microsecond.
+  return std::round(time_ms * 1000) / 1000;
 }
 
 void InspectorAnimationAgent::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
index cd51eefb..cd05928 100644
--- a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
@@ -358,7 +358,7 @@
       MaybeEncodeTextContent(
           cached_resource->ResourceBuffer()
               ? ToScriptResource(cached_resource)->DecodedText()
-              : ToScriptResource(cached_resource)->SourceText(),
+              : ToScriptResource(cached_resource)->SourceText().ToString(),
           cached_resource->ResourceBuffer(), result, base64_encoded);
       return true;
     default:
diff --git a/third_party/blink/renderer/core/layout/grid.cc b/third_party/blink/renderer/core/layout/grid.cc
index 89d0145..219dd6f 100644
--- a/third_party/blink/renderer/core/layout/grid.cc
+++ b/third_party/blink/renderer/core/layout/grid.cc
@@ -159,8 +159,6 @@
   auto_repeat_rows_ = 0;
   auto_repeat_empty_columns_ = nullptr;
   auto_repeat_empty_rows_ = nullptr;
-  baseline_grid_items_.resize(0);
-  orthogonal_grid_items_.resize(0);
 }
 
 Grid::GridIterator::GridIterator(GridTrackSizingDirection direction,
diff --git a/third_party/blink/renderer/core/layout/grid.h b/third_party/blink/renderer/core/layout/grid.h
index 135d0b3..28b061d 100644
--- a/third_party/blink/renderer/core/layout/grid.h
+++ b/third_party/blink/renderer/core/layout/grid.h
@@ -46,22 +46,6 @@
   // Note that out of flow children are not grid items.
   bool HasGridItems() const { return !grid_item_area_.IsEmpty(); }
 
-  void AddBaselineAlignedItem(LayoutBox& item) {
-    baseline_grid_items_.push_back(&item);
-  }
-  void AddOrthogonalItem(LayoutBox& item) {
-    orthogonal_grid_items_.push_back(&item);
-  }
-  bool HasAnyOrthogonalGridItem() const {
-    return !orthogonal_grid_items_.IsEmpty();
-  }
-  const Vector<LayoutBox*>& OrthogonalGridItems() const {
-    return orthogonal_grid_items_;
-  }
-  const Vector<LayoutBox*>& BaselineGridItems() const {
-    return baseline_grid_items_;
-  }
-
   GridArea GridItemArea(const LayoutBox&) const;
   void SetGridItemArea(const LayoutBox&, GridArea);
 
@@ -149,9 +133,6 @@
 
   std::unique_ptr<OrderedTrackIndexSet> auto_repeat_empty_columns_{nullptr};
   std::unique_ptr<OrderedTrackIndexSet> auto_repeat_empty_rows_{nullptr};
-
-  Vector<LayoutBox*> orthogonal_grid_items_;
-  Vector<LayoutBox*> baseline_grid_items_;
 };
 
 class VectorGrid final : public Grid {
diff --git a/third_party/blink/renderer/core/layout/layout_grid.cc b/third_party/blink/renderer/core/layout/layout_grid.cc
index 443e52e..7048f763 100644
--- a/third_party/blink/renderer/core/layout/layout_grid.cc
+++ b/third_party/blink/renderer/core/layout/layout_grid.cc
@@ -244,15 +244,12 @@
   // In orthogonal flow cases column track's size is determined by using the
   // computed row track's size, which it was estimated during the first cycle of
   // the sizing algorithm.
-  bool has_any_orthogonal =
-      track_sizing_algorithm_.GetGrid().HasAnyOrthogonalGridItem();
-
   // TODO (lajava): these are just some of the cases which may require
   // a new cycle of the sizing algorithm; there may be more. In addition, not
   // all the cases with orthogonal flows require this extra cycle; we need a
   // more specific condition to detect whether child's min-content contribution
   // has changed or not.
-  if (!has_any_orthogonal)
+  if (!has_any_orthogonal_item_)
     return;
 
   // TODO (lajava): Whenever the min-content contribution of a grid item changes
@@ -292,9 +289,13 @@
     // we need to clear any override height set previously, so it doesn't
     // interfere in current layout execution.
     // Grid never uses the override width, that's why we don't need to clear it.
+    has_any_orthogonal_item_ = false;
     for (auto* child = FirstInFlowChildBox(); child;
-         child = child->NextInFlowSiblingBox())
+         child = child->NextInFlowSiblingBox()) {
       child->ClearOverrideLogicalHeight();
+      if (GridLayoutUtils::IsOrthogonalChild(*this, *child))
+        has_any_orthogonal_item_ = true;
+    }
 
     UpdateLogicalWidth();
 
@@ -773,7 +774,6 @@
 #if DCHECK_IS_ON()
   DCHECK(!grid.HasAnyGridItemPaintOrder());
 #endif
-  DCHECK(!grid.HasAnyOrthogonalGridItem());
   size_t child_index = 0;
   for (LayoutBox* child = grid.GetOrderIterator().First(); child;
        child = grid.GetOrderIterator().Next()) {
@@ -788,10 +788,6 @@
     if (!child->HasOverrideContainingBlockContentLogicalHeight())
       child->SetOverrideContainingBlockContentLogicalHeight(LayoutUnit(-1));
 
-    if (GridLayoutUtils::IsOrthogonalChild(*this, *child))
-      grid.AddOrthogonalItem(*child);
-    if (IsBaselineAlignmentForChild(*child))
-      grid.AddBaselineAlignedItem(*child);
     grid.SetGridItemPaintOrder(*child, child_index++);
 
     GridArea area = grid.GridItemArea(*child);
@@ -865,34 +861,35 @@
   DCHECK(!algorithm.GetGrid().NeedsItemsPlacement());
   if (!GetDocument().View()->IsInPerformLayout())
     return;
-  // Blink does a pre-layout of all the orthogonal boxes in the layout
-  // tree (see how LocalFrameView::PerformLayout calls its
-  // LayoutOrthogonalWritingModeRoots function). However, grid items
-  // don't participate in this process (see the function
-  // PrepareOrthogonalWritingModeRootForLayout) because it's useless
-  // and even wrong if they don't have their corresponding Grid Area.
-  // TODO(jfernandez): Consider rafactoring this code with
-  // LocalFrameView::LayoutOrthogonalWritingModeRoots
-  for (auto* item : algorithm.GetGrid().OrthogonalGridItems()) {
-    DCHECK(GridLayoutUtils::IsOrthogonalChild(*this, *item));
-    if (PrepareOrthogonalWritingModeRootForLayout(*item)) {
-      UpdateGridAreaLogicalSize(
-          *item, algorithm.EstimatedGridAreaBreadthForChild(*item));
-      item->LayoutIfNeeded();
+  for (auto* child = FirstInFlowChildBox(); child;
+       child = child->NextInFlowSiblingBox()) {
+    // Blink does a pre-layout of all the orthogonal boxes in the layout
+    // tree (see how LocalFrameView::PerformLayout calls its
+    // LayoutOrthogonalWritingModeRoots function). However, grid items
+    // don't participate in this process (see the function
+    // PrepareOrthogonalWritingModeRootForLayout) because it's useless
+    // and even wrong if they don't have their corresponding Grid Area.
+    // TODO(jfernandez): Consider rafactoring this code with
+    // LocalFrameView::LayoutOrthogonalWritingModeRoots
+    if (GridLayoutUtils::IsOrthogonalChild(*this, *child)) {
+      if (PrepareOrthogonalWritingModeRootForLayout(*child)) {
+        UpdateGridAreaLogicalSize(
+            *child, algorithm.EstimatedGridAreaBreadthForChild(*child));
+        child->LayoutIfNeeded();
+        continue;
+      }
     }
-  }
-  // We need to layout the item to know whether it must synthesize its
-  // baseline or not, which may imply a cyclic sizing dependency.
-  // TODO (jfernandez): Can we avoid it ?
-  for (auto* item : algorithm.GetGrid().BaselineGridItems()) {
-    DCHECK(IsBaselineAlignmentForChild(*item));
-    if (GridLayoutUtils::IsOrthogonalChild(*this, *item))
-      continue;
-    if (item->HasRelativeLogicalWidth() || item->HasRelativeLogicalHeight()) {
-      UpdateGridAreaLogicalSize(
-          *item, algorithm.EstimatedGridAreaBreadthForChild(*item));
+    // We need to layout the item to know whether it must synthesize its
+    // baseline or not, which may imply a cyclic sizing dependency.
+    // TODO (jfernandez): Can we avoid it ?
+    if (IsBaselineAlignmentForChild(*child)) {
+      if (child->HasRelativeLogicalWidth() ||
+          child->HasRelativeLogicalHeight()) {
+        UpdateGridAreaLogicalSize(
+            *child, algorithm.EstimatedGridAreaBreadthForChild(*child));
+      }
+      child->LayoutIfNeeded();
     }
-    item->LayoutIfNeeded();
   }
 }
 
diff --git a/third_party/blink/renderer/core/layout/layout_grid.h b/third_party/blink/renderer/core/layout/layout_grid.h
index ab494ced..6fb09c71 100644
--- a/third_party/blink/renderer/core/layout/layout_grid.h
+++ b/third_party/blink/renderer/core/layout/layout_grid.h
@@ -333,6 +333,7 @@
   LayoutUnit min_content_height_{-1};
   LayoutUnit max_content_height_{-1};
 
+  bool has_any_orthogonal_item_{false};
   base::Optional<bool> has_definite_logical_height_;
 };
 
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/third_party/blink/renderer/core/loader/base_fetch_context.cc
index 8485e4e..861f8b0 100644
--- a/third_party/blink/renderer/core/loader/base_fetch_context.cc
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.cc
@@ -158,15 +158,6 @@
   return blocked_reason;
 }
 
-void BaseFetchContext::AddWarningConsoleMessage(const String& message,
-                                                LogSource source) const {
-  // When LogSource is extended, this DCHECK should be replaced with a logic to
-  // convert LogSource to blink::MessageSource.
-  DCHECK_EQ(source, kJSSource);
-  AddConsoleMessage(
-      ConsoleMessage::Create(kJSMessageSource, kWarningMessageLevel, message));
-}
-
 void BaseFetchContext::AddErrorConsoleMessage(const String& message,
                                               LogSource source) const {
   // When LogSource is extended, this DCHECK should be replaced with a logic to
diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third_party/blink/renderer/core/loader/base_fetch_context.h
index 45833190..c77076d 100644
--- a/third_party/blink/renderer/core/loader/base_fetch_context.h
+++ b/third_party/blink/renderer/core/loader/base_fetch_context.h
@@ -58,7 +58,6 @@
   virtual std::unique_ptr<WebSocketHandshakeThrottle>
   CreateWebSocketHandshakeThrottle() = 0;
 
-  void AddWarningConsoleMessage(const String&, LogSource) const override;
   void AddErrorConsoleMessage(const String&, LogSource) const override;
   bool IsAdResource(const KURL&,
                     Resource::Type,
diff --git a/third_party/blink/renderer/core/loader/empty_clients.cc b/third_party/blink/renderer/core/loader/empty_clients.cc
index cebab32..9b080758 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.cc
+++ b/third_party/blink/renderer/core/loader/empty_clients.cc
@@ -119,7 +119,8 @@
     const ResourceRequest& request,
     const SubstituteData& substitute_data,
     ClientRedirectPolicy client_redirect_policy,
-    const base::UnguessableToken& devtools_navigation_token) {
+    const base::UnguessableToken& devtools_navigation_token,
+    std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   DCHECK(frame);
 
   return DocumentLoader::Create(frame, request, substitute_data,
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index d44d8d84..ca319346 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -296,7 +296,8 @@
       const ResourceRequest&,
       const SubstituteData&,
       ClientRedirectPolicy,
-      const base::UnguessableToken& devtools_navigation_token) override;
+      const base::UnguessableToken& devtools_navigation_token,
+      std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) override;
 
   String UserAgent() override { return ""; }
 
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 e11c871..def8437 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
@@ -1445,13 +1445,6 @@
   // Should not crash.
 }
 
-TEST_F(FrameFetchContextTest, AddConsoleMessageWhenDetached) {
-  dummy_page_holder = nullptr;
-
-  fetch_context->AddWarningConsoleMessage("foobar", FetchContext::kJSSource);
-  // Should not crash.
-}
-
 TEST_F(FrameFetchContextTest, GetSecurityOriginWhenDetached) {
   scoped_refptr<SecurityOrigin> origin =
       SecurityOrigin::Create(KURL("https://www.example.com"));
diff --git a/third_party/blink/renderer/core/loader/frame_loader.cc b/third_party/blink/renderer/core/loader/frame_loader.cc
index 7c36e2d1..95c48803 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.cc
+++ b/third_party/blink/renderer/core/loader/frame_loader.cc
@@ -215,10 +215,10 @@
       frame_->IsMainFrame() ? network::mojom::RequestContextFrameType::kTopLevel
                             : network::mojom::RequestContextFrameType::kNested);
 
-  provisional_document_loader_ =
-      Client()->CreateDocumentLoader(frame_, initial_request, SubstituteData(),
-                                     ClientRedirectPolicy::kNotClientRedirect,
-                                     base::UnguessableToken::Create());
+  provisional_document_loader_ = Client()->CreateDocumentLoader(
+      frame_, initial_request, SubstituteData(),
+      ClientRedirectPolicy::kNotClientRedirect,
+      base::UnguessableToken::Create(), nullptr /* extra_data */);
   provisional_document_loader_->StartLoading();
 
   frame_->GetDocument()->CancelParsing();
@@ -836,7 +836,7 @@
   }
 
   StartLoad(request, frame_load_type, policy, nullptr,
-            true /* check_with_client */);
+            true /* check_with_client */, nullptr);
 
   // TODO(csharrison): In M70 when UserActivation v2 should ship, we can remove
   // the check that the pages are equal, because consumption should not be
@@ -848,9 +848,11 @@
   }
 }
 
-void FrameLoader::CommitNavigation(const FrameLoadRequest& passed_request,
-                                   WebFrameLoadType frame_load_type,
-                                   HistoryItem* history_item) {
+void FrameLoader::CommitNavigation(
+    const FrameLoadRequest& passed_request,
+    WebFrameLoadType frame_load_type,
+    HistoryItem* history_item,
+    std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   CHECK(!passed_request.OriginDocument());
   CHECK(passed_request.FrameName().IsEmpty());
   CHECK(!passed_request.Form());
@@ -885,7 +887,7 @@
   //   with regards to the last commit.
   // In this rare case, we intentionally proceed as cross-document.
   StartLoad(request, frame_load_type, kNavigationPolicyCurrentTab, history_item,
-            false /* check_with_client */);
+            false /* check_with_client */, std::move(extra_data));
 }
 
 mojom::CommitResult FrameLoader::CommitSameDocumentNavigation(
@@ -1393,11 +1395,13 @@
   }
 }
 
-void FrameLoader::StartLoad(FrameLoadRequest& frame_load_request,
-                            WebFrameLoadType type,
-                            NavigationPolicy navigation_policy,
-                            HistoryItem* history_item,
-                            bool check_with_client) {
+void FrameLoader::StartLoad(
+    FrameLoadRequest& frame_load_request,
+    WebFrameLoadType type,
+    NavigationPolicy navigation_policy,
+    HistoryItem* history_item,
+    bool check_with_client,
+    std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   DCHECK(Client()->HasWebView());
   ResourceRequest& resource_request = frame_load_request.GetResourceRequest();
   WebNavigationType navigation_type = DetermineNavigationType(
@@ -1463,8 +1467,9 @@
   if (!CancelProvisionalLoaderForNewNavigation(navigation_policy))
     return;
 
-  provisional_document_loader_ = CreateDocumentLoader(
-      resource_request, frame_load_request, type, navigation_type);
+  provisional_document_loader_ =
+      CreateDocumentLoader(resource_request, frame_load_request, type,
+                           navigation_type, std::move(extra_data));
 
   // This seems to correspond to step 9 of the specification:
   // "9. Abort the active document of browsingContext."
@@ -1748,14 +1753,15 @@
     const ResourceRequest& request,
     const FrameLoadRequest& frame_load_request,
     WebFrameLoadType load_type,
-    WebNavigationType navigation_type) {
+    WebNavigationType navigation_type,
+    std::unique_ptr<WebDocumentLoader::ExtraData> extra_data) {
   DocumentLoader* loader = Client()->CreateDocumentLoader(
       frame_, request,
       frame_load_request.GetSubstituteData().IsValid()
           ? frame_load_request.GetSubstituteData()
           : DefaultSubstituteDataForURL(request.Url()),
       frame_load_request.ClientRedirect(),
-      frame_load_request.GetDevToolsNavigationToken());
+      frame_load_request.GetDevToolsNavigationToken(), std::move(extra_data));
 
   loader->SetLoadType(load_type);
   loader->SetNavigationType(navigation_type);
diff --git a/third_party/blink/renderer/core/loader/frame_loader.h b/third_party/blink/renderer/core/loader/frame_loader.h
index 3901d0f2..d79a103f 100644
--- a/third_party/blink/renderer/core/loader/frame_loader.h
+++ b/third_party/blink/renderer/core/loader/frame_loader.h
@@ -37,6 +37,7 @@
 #include "third_party/blink/public/mojom/blob/blob_url_store.mojom-blink.h"
 #include "third_party/blink/public/platform/web_insecure_request_policy.h"
 #include "third_party/blink/public/web/commit_result.mojom-shared.h"
+#include "third_party/blink/public/web/web_document_loader.h"
 #include "third_party/blink/public/web/web_frame_load_type.h"
 #include "third_party/blink/public/web/web_navigation_type.h"
 #include "third_party/blink/public/web/web_triggering_event_info.h"
@@ -105,9 +106,11 @@
   // that browser process has already performed any checks necessary.
   // For history navigations, a history item should be provided and
   // an appropriate WebFrameLoadType should be given.
-  void CommitNavigation(const FrameLoadRequest&,
-                        WebFrameLoadType = WebFrameLoadType::kStandard,
-                        HistoryItem* = nullptr);
+  void CommitNavigation(
+      const FrameLoadRequest&,
+      WebFrameLoadType = WebFrameLoadType::kStandard,
+      HistoryItem* = nullptr,
+      std::unique_ptr<WebDocumentLoader::ExtraData> extra_data = nullptr);
 
   // Called when the browser process has asked this renderer process to commit a
   // same document navigation in that frame. Returns false if the navigation
@@ -256,7 +259,8 @@
                  WebFrameLoadType,
                  NavigationPolicy,
                  HistoryItem*,
-                 bool check_with_client);
+                 bool check_with_client,
+                 std::unique_ptr<WebDocumentLoader::ExtraData> extra_data);
 
   void ClearInitialScrollState();
 
@@ -278,10 +282,12 @@
   std::unique_ptr<TracedValue> ToTracedValue() const;
   void TakeObjectSnapshot() const;
 
-  DocumentLoader* CreateDocumentLoader(const ResourceRequest&,
-                                       const FrameLoadRequest&,
-                                       WebFrameLoadType,
-                                       WebNavigationType);
+  DocumentLoader* CreateDocumentLoader(
+      const ResourceRequest&,
+      const FrameLoadRequest&,
+      WebFrameLoadType,
+      WebNavigationType,
+      std::unique_ptr<WebDocumentLoader::ExtraData>);
 
   LocalFrameClient* Client() const;
 
diff --git a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
index b524de6..81cbd3ab 100644
--- a/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
+++ b/third_party/blink/renderer/core/loader/modulescript/document_module_script_fetcher.cc
@@ -7,6 +7,7 @@
 #include "third_party/blink/renderer/core/inspector/console_message.h"
 #include "third_party/blink/renderer/core/script/layered_api.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
 
 namespace blink {
@@ -64,7 +65,7 @@
   if (layered_api_url.IsNull())
     return false;
 
-  const String source_text = blink::layered_api::GetSourceText(layered_api_url);
+  String source_text = blink::layered_api::GetSourceText(layered_api_url);
 
   if (source_text.IsNull()) {
     HeapVector<Member<ConsoleMessage>> error_messages;
@@ -76,7 +77,7 @@
   }
 
   ModuleScriptCreationParams params(
-      layered_api_url, source_text,
+      layered_api_url, MovableString(source_text.ReleaseImpl()),
       fetch_params.GetResourceRequest().GetFetchCredentialsMode(),
       kSharableCrossOrigin);
   client_->NotifyFetchFinished(params, HeapVector<Member<ConsoleMessage>>());
diff --git a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
index 929924f..f9d9b548 100644
--- a/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
+++ b/third_party/blink/renderer/core/loader/modulescript/module_script_creation_params.h
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/platform/cross_thread_copier.h"
 #include "third_party/blink/renderer/platform/loader/fetch/access_control_status.h"
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
 namespace blink {
@@ -19,23 +20,34 @@
  public:
   ModuleScriptCreationParams(
       const KURL& response_url,
-      const String& source_text,
+      const MovableString& source_text,
       network::mojom::FetchCredentialsMode fetch_credentials_mode,
       AccessControlStatus access_control_status)
       : response_url_(response_url),
+        is_isolated_(false),
         source_text_(source_text),
+        isolated_source_text_(),
         fetch_credentials_mode_(fetch_credentials_mode),
         access_control_status_(access_control_status) {}
+
   ~ModuleScriptCreationParams() = default;
 
   ModuleScriptCreationParams IsolatedCopy() const {
+    String isolated_source_text = GetSourceText().ToString().IsolatedCopy();
     return ModuleScriptCreationParams(
-        GetResponseUrl().Copy(), GetSourceText().IsolatedCopy(),
+        GetResponseUrl().Copy(), isolated_source_text,
         GetFetchCredentialsMode(), GetAccessControlStatus());
   }
 
   const KURL& GetResponseUrl() const { return response_url_; };
-  const String& GetSourceText() const { return source_text_; }
+  const MovableString& GetSourceText() const {
+    if (is_isolated_) {
+      source_text_ = MovableString(isolated_source_text_.ReleaseImpl());
+      isolated_source_text_ = String();
+      is_isolated_ = false;
+    }
+    return source_text_;
+  }
   network::mojom::FetchCredentialsMode GetFetchCredentialsMode() const {
     return fetch_credentials_mode_;
   }
@@ -44,13 +56,31 @@
   }
 
   bool IsSafeToSendToAnotherThread() const {
-    return response_url_.IsSafeToSendToAnotherThread() &&
-           source_text_.IsSafeToSendToAnotherThread();
+    return response_url_.IsSafeToSendToAnotherThread() && is_isolated_;
   }
 
  private:
+  // Creates an isolated copy.
+  ModuleScriptCreationParams(
+      const KURL& response_url,
+      const String& isolated_source_text,
+      network::mojom::FetchCredentialsMode fetch_credentials_mode,
+      AccessControlStatus access_control_status)
+      : response_url_(response_url),
+        is_isolated_(true),
+        source_text_(),
+        isolated_source_text_(isolated_source_text),
+        fetch_credentials_mode_(fetch_credentials_mode),
+        access_control_status_(access_control_status) {}
+
   const KURL response_url_;
-  const String source_text_;
+
+  // Mutable because an isolated copy can become bound to a thread when
+  // calling GetSourceText().
+  mutable bool is_isolated_;
+  mutable MovableString source_text_;
+  mutable String isolated_source_text_;
+
   const network::mojom::FetchCredentialsMode fetch_credentials_mode_;
   const AccessControlStatus access_control_status_;
 };
diff --git a/third_party/blink/renderer/core/loader/resource/script_resource.cc b/third_party/blink/renderer/core/loader/resource/script_resource.cc
index 8c9cab8..21f6686 100644
--- a/third_party/blink/renderer/core/loader/resource/script_resource.cc
+++ b/third_party/blink/renderer/core/loader/resource/script_resource.cc
@@ -199,14 +199,14 @@
       dump->Guid(), String(WTF::Partitions::kAllocatedObjectPoolName));
 }
 
-const String& ScriptResource::SourceText() {
+const MovableString& ScriptResource::SourceText() {
   DCHECK(IsLoaded());
 
   if (source_text_.IsNull() && Data()) {
     String source_text = DecodedText();
     ClearData();
     SetDecodedSize(source_text.CharactersSizeInBytes());
-    source_text_ = AtomicString(source_text);
+    source_text_ = MovableString(source_text.ReleaseImpl());
   }
 
   return source_text_;
@@ -233,7 +233,7 @@
 }
 
 void ScriptResource::DestroyDecodedDataForFailedRevalidation() {
-  source_text_ = AtomicString();
+  source_text_ = MovableString();
   SetDecodedSize(0);
 }
 
diff --git a/third_party/blink/renderer/core/loader/resource/script_resource.h b/third_party/blink/renderer/core/loader/resource/script_resource.h
index 9d838a06..97dee5e8 100644
--- a/third_party/blink/renderer/core/loader/resource/script_resource.h
+++ b/third_party/blink/renderer/core/loader/resource/script_resource.h
@@ -33,6 +33,7 @@
 #include "third_party/blink/renderer/platform/loader/fetch/resource_client.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_loader_options.h"
 #include "third_party/blink/renderer/platform/loader/fetch/text_resource_decoder_options.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 
 namespace blink {
 
@@ -68,7 +69,7 @@
 
   void SetSerializedCachedMetadata(const char*, size_t) override;
 
-  const String& SourceText();
+  const MovableString& SourceText();
 
   AccessControlStatus CalculateAccessControlStatus(const SecurityOrigin*) const;
 
@@ -101,7 +102,7 @@
 
   bool CanUseCacheValidator() const override;
 
-  AtomicString source_text_;
+  MovableString source_text_;
 };
 
 DEFINE_RESOURCE_TYPE_CASTS(Script);
diff --git a/third_party/blink/renderer/core/page/page_animator.cc b/third_party/blink/renderer/core/page/page_animator.cc
index 7b3fedded..3096104 100644
--- a/third_party/blink/renderer/core/page/page_animator.cc
+++ b/third_party/blink/renderer/core/page/page_animator.cc
@@ -72,6 +72,7 @@
               monotonic_animation_start_time.since_origin().InSecondsF());
         }
       }
+      document->GetFrame()->AnimateSnapFling(monotonic_animation_start_time);
       SVGDocumentExtensions::ServiceOnAnimationFrame(*document);
     }
     // TODO(skyostil): This function should not run for documents without views.
diff --git a/third_party/blink/renderer/core/page/scrolling/snap_coordinator.cc b/third_party/blink/renderer/core/page/scrolling/snap_coordinator.cc
index 33fcee6..83ca617 100644
--- a/third_party/blink/renderer/core/page/scrolling/snap_coordinator.cc
+++ b/third_party/blink/renderer/core/page/scrolling/snap_coordinator.cc
@@ -235,25 +235,26 @@
   return snap_area_data;
 }
 
-FloatPoint SnapCoordinator::GetSnapPositionForPoint(
+base::Optional<FloatPoint> SnapCoordinator::GetSnapPositionForPoint(
     const LayoutBox& snap_container,
     const FloatPoint& point,
     bool did_scroll_x,
     bool did_scroll_y) {
   auto iter = snap_container_map_.find(&snap_container);
   if (iter == snap_container_map_.end())
-    return point;
+    return base::nullopt;
 
   const SnapContainerData& data = iter->value;
   if (!data.size())
-    return point;
+    return base::nullopt;
 
   gfx::ScrollOffset snap_position;
   if (data.FindSnapPosition(gfx::ScrollOffset(point.X(), point.Y()),
                             did_scroll_x, did_scroll_y, &snap_position)) {
-    return FloatPoint(snap_position.x(), snap_position.y());
+    FloatPoint snap_point(snap_position.x(), snap_position.y());
+    return snap_point;
   }
-  return point;
+  return base::nullopt;
 }
 
 void SnapCoordinator::PerformSnapping(const LayoutBox& snap_container,
@@ -264,12 +265,14 @@
     return;
 
   FloatPoint current_position = scrollable_area->ScrollPosition();
-  FloatPoint snap_position = GetSnapPositionForPoint(
+  base::Optional<FloatPoint> snap_point = GetSnapPositionForPoint(
       snap_container, current_position, did_scroll_x, did_scroll_y);
+  if (!snap_point.has_value())
+    return;
 
-  if (snap_position != current_position) {
+  if (snap_point.value() != current_position) {
     scrollable_area->SetScrollOffset(
-        scrollable_area->ScrollPositionToOffset(snap_position),
+        scrollable_area->ScrollPositionToOffset(snap_point.value()),
         kProgrammaticScroll, kScrollBehaviorSmooth);
   }
 }
@@ -302,6 +305,30 @@
   return base::nullopt;
 }
 
+bool SnapCoordinator::GetSnapFlingInfo(
+    const LayoutBox& snap_container,
+    const gfx::Vector2dF& natural_displacement,
+    gfx::Vector2dF* out_initial_offset,
+    gfx::Vector2dF* out_target_offset) {
+  ScrollableArea* scrollable_area = ScrollableAreaForSnapping(snap_container);
+  if (!scrollable_area)
+    return false;
+
+  FloatPoint current_position = scrollable_area->ScrollPosition();
+  *out_initial_offset = gfx::Vector2dF(current_position);
+  FloatPoint original_end =
+      current_position +
+      FloatPoint(natural_displacement.x(), natural_displacement.y());
+  bool did_scroll_x = natural_displacement.x() != 0;
+  bool did_scroll_y = natural_displacement.y() != 0;
+  base::Optional<FloatPoint> snap_end = GetSnapPositionForPoint(
+      snap_container, original_end, did_scroll_x, did_scroll_y);
+  if (!snap_end.has_value())
+    return false;
+  *out_target_offset = gfx::Vector2dF(snap_end.value());
+  return true;
+}
+
 #ifndef NDEBUG
 
 void SnapCoordinator::ShowSnapAreaMap() {
diff --git a/third_party/blink/renderer/core/page/scrolling/snap_coordinator.h b/third_party/blink/renderer/core/page/scrolling/snap_coordinator.h
index d21599a..2c3ad76 100644
--- a/third_party/blink/renderer/core/page/scrolling/snap_coordinator.h
+++ b/third_party/blink/renderer/core/page/scrolling/snap_coordinator.h
@@ -57,10 +57,15 @@
   void PerformSnapping(const LayoutBox& snap_container,
                        bool did_scroll_x,
                        bool did_scroll_y);
-  FloatPoint GetSnapPositionForPoint(const LayoutBox& snap_container,
-                                     const FloatPoint& natural_position,
-                                     bool did_scroll_x,
-                                     bool did_scroll_y);
+  base::Optional<FloatPoint> GetSnapPositionForPoint(
+      const LayoutBox& snap_container,
+      const FloatPoint& natural_position,
+      bool did_scroll_x,
+      bool did_scroll_y);
+  bool GetSnapFlingInfo(const LayoutBox& snap_container,
+                        const gfx::Vector2dF& natural_displacement,
+                        gfx::Vector2dF* out_initial_offset,
+                        gfx::Vector2dF* out_target_offset);
 
 #ifndef NDEBUG
   void ShowSnapAreaMap();
diff --git a/third_party/blink/renderer/core/page/scrolling/snap_coordinator_test.cc b/third_party/blink/renderer/core/page/scrolling/snap_coordinator_test.cc
index 4fc0260..119f7ba3 100644
--- a/third_party/blink/renderer/core/page/scrolling/snap_coordinator_test.cc
+++ b/third_party/blink/renderer/core/page/scrolling/snap_coordinator_test.cc
@@ -642,10 +642,12 @@
 
   SnapCoordinator* snap_coordinator = GetDocument().GetSnapCoordinator();
   LayoutBox* snap_container = scroller_element->GetLayoutBox();
-  FloatPoint snap_position = snap_coordinator->GetSnapPositionForPoint(
-      *snap_container, FloatPoint(150, 150), true, false);
-  EXPECT_EQ(200 - 8 - 10, snap_position.X());
-  EXPECT_EQ(150, snap_position.Y());
+  base::Optional<FloatPoint> snap_position =
+      snap_coordinator->GetSnapPositionForPoint(
+          *snap_container, FloatPoint(150, 150), true, false);
+  EXPECT_TRUE(snap_position.has_value());
+  EXPECT_EQ(200 - 8 - 10, snap_position.value().X());
+  EXPECT_EQ(150, snap_position.value().Y());
 }
 
 TEST_F(SnapCoordinatorTest, DoesNotSnapOnNonSnappingAxis) {
@@ -658,10 +660,10 @@
 
   SnapCoordinator* snap_coordinator = GetDocument().GetSnapCoordinator();
   LayoutBox* snap_container = scroller_element->GetLayoutBox();
-  FloatPoint snap_position = snap_coordinator->GetSnapPositionForPoint(
-      *snap_container, FloatPoint(150, 150), true, false);
-  EXPECT_EQ(150, snap_position.X());
-  EXPECT_EQ(150, snap_position.Y());
+  base::Optional<FloatPoint> snap_position =
+      snap_coordinator->GetSnapPositionForPoint(
+          *snap_container, FloatPoint(150, 150), true, false);
+  EXPECT_FALSE(snap_position.has_value());
 }
 
 TEST_F(SnapCoordinatorTest, DoesNotSnapOnEmptyContainer) {
@@ -674,10 +676,11 @@
 
   SnapCoordinator* snap_coordinator = GetDocument().GetSnapCoordinator();
   LayoutBox* snap_container = scroller_element->GetLayoutBox();
-  FloatPoint snap_position = snap_coordinator->GetSnapPositionForPoint(
-      *snap_container, FloatPoint(150, 150), true, false);
-  EXPECT_EQ(150, snap_position.X());
-  EXPECT_EQ(150, snap_position.Y());
+  base::Optional<FloatPoint> snap_position =
+      snap_coordinator->GetSnapPositionForPoint(
+          *snap_container, FloatPoint(150, 150), true, false);
+  ;
+  EXPECT_FALSE(snap_position.has_value());
 }
 
 TEST_F(SnapCoordinatorTest, DoesNotSnapOnNonSnapContainer) {
@@ -690,10 +693,10 @@
 
   SnapCoordinator* snap_coordinator = GetDocument().GetSnapCoordinator();
   LayoutBox* snap_container = scroller_element->GetLayoutBox();
-  FloatPoint snap_position = snap_coordinator->GetSnapPositionForPoint(
-      *snap_container, FloatPoint(150, 150), true, false);
-  EXPECT_EQ(150, snap_position.X());
-  EXPECT_EQ(150, snap_position.Y());
+  base::Optional<FloatPoint> snap_position =
+      snap_coordinator->GetSnapPositionForPoint(
+          *snap_container, FloatPoint(150, 150), true, false);
+  EXPECT_FALSE(snap_position.has_value());
 }
 
 }  // namespace
diff --git a/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc b/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc
index da34ba1..6cdc7fc8 100644
--- a/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_foreign_object_painter.cc
@@ -13,6 +13,7 @@
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
 #include "third_party/blink/renderer/core/paint/paint_layer_painter.h"
 #include "third_party/blink/renderer/core/paint/svg_paint_context.h"
+#include "third_party/blink/renderer/platform/graphics/paint/display_item_cache_skipper.h"
 
 namespace blink {
 
@@ -26,6 +27,14 @@
   if (!layout_svg_foreign_object_.FirstFragment().HasLocalBorderBoxProperties())
     return;
 
+  // TODO(crbug.com/797779): For now foreign object contents don't know whether
+  // they are painted in a fragmented context and may do something bad in a
+  // fragmented context, e.g. creating subsequences. Skip cache to avoid that.
+  // This will be unnecessary when the contents are fragment aware.
+  base::Optional<DisplayItemCacheSkipper> cache_skipper;
+  if (layout_svg_foreign_object_.Layer()->Parent()->EnclosingPaginationLayer())
+    cache_skipper.emplace(paint_info.context);
+
   // <foreignObject> is a replaced normal-flow stacking element.
   // See IsReplacedNormalFlowStacking in paint_layer_painter.cc.
   PaintLayerPaintingInfo layer_painting_info(
diff --git a/third_party/blink/renderer/core/paint/svg_image_painter.cc b/third_party/blink/renderer/core/paint/svg_image_painter.cc
index ddac9665..977d09f 100644
--- a/third_party/blink/renderer/core/paint/svg_image_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_image_painter.cc
@@ -62,7 +62,11 @@
 
 void SVGImagePainter::PaintForeground(const PaintInfo& paint_info) {
   const LayoutImageResource* image_resource = layout_svg_image_.ImageResource();
-  IntSize image_viewport_size = ExpandedIntSize(ComputeImageViewportSize());
+  // TODO(fs): Reduce the number of conversions.
+  // (FloatSize -> IntSize -> LayoutSize currently.)
+  FloatSize float_image_viewport_size = ComputeImageViewportSize();
+  float_image_viewport_size.Scale(layout_svg_image_.StyleRef().EffectiveZoom());
+  IntSize image_viewport_size = ExpandedIntSize(float_image_viewport_size);
   if (image_viewport_size.IsEmpty())
     return;
 
diff --git a/third_party/blink/renderer/core/script/classic_script.h b/third_party/blink/renderer/core/script/classic_script.h
index 13f2f7cf..873272c 100644
--- a/third_party/blink/renderer/core/script/classic_script.h
+++ b/third_party/blink/renderer/core/script/classic_script.h
@@ -42,7 +42,7 @@
   ScriptType GetScriptType() const override { return ScriptType::kClassic; }
   void RunScript(LocalFrame*, const SecurityOrigin*) const override;
   String InlineSourceTextForCSP() const override {
-    return script_source_code_.Source();
+    return script_source_code_.Source().ToString();
   }
 
   const ScriptSourceCode script_source_code_;
diff --git a/third_party/blink/renderer/core/script/module_map_test.cc b/third_party/blink/renderer/core/script/module_map_test.cc
index a65230b..1a6729df 100644
--- a/third_party/blink/renderer/core/script/module_map_test.cc
+++ b/third_party/blink/renderer/core/script/module_map_test.cc
@@ -114,7 +114,7 @@
                ModuleScriptFetcher::Client* client) override {
       TestRequest* test_request = new TestRequest(
           ModuleScriptCreationParams(
-              request.Url(), "",
+              request.Url(), MovableString(String("").ReleaseImpl()),
               request.GetResourceRequest().GetFetchCredentialsMode(),
               kSharableCrossOrigin),
           client);
diff --git a/third_party/blink/renderer/core/script/module_script.cc b/third_party/blink/renderer/core/script/module_script.cc
index 7e724a7..513b8de9 100644
--- a/third_party/blink/renderer/core/script/module_script.cc
+++ b/third_party/blink/renderer/core/script/module_script.cc
@@ -12,7 +12,7 @@
 namespace blink {
 
 // https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-module-script
-ModuleScript* ModuleScript::Create(const String& original_source_text,
+ModuleScript* ModuleScript::Create(const MovableString& original_source_text,
                                    Modulator* modulator,
                                    const KURL& source_url,
                                    const KURL& base_url,
@@ -21,7 +21,7 @@
                                    const TextPosition& start_position) {
   // <spec step="1">If scripting is disabled for settings's responsible browsing
   // context, then set source to the empty string.</spec>
-  String source_text;
+  MovableString source_text;
   if (!modulator->IsScriptingDisabled())
     source_text = original_source_text;
 
@@ -41,7 +41,7 @@
                                  "ModuleScript", "Create");
 
   ScriptModule result = ScriptModule::Compile(
-      isolate, source_text, source_url, base_url, options,
+      isolate, source_text.ToString(), source_url, base_url, options,
       access_control_status, start_position, exception_state);
 
   // CreateInternal processes Steps 4 and 8-10.
@@ -101,14 +101,14 @@
                                           ScriptModule record,
                                           const KURL& base_url,
                                           const ScriptFetchOptions& options) {
-  String dummy_source_text = "";
+  MovableString dummy_source_text(String("").ReleaseImpl());
   KURL dummy_source_url;
   return CreateInternal(dummy_source_text, modulator, record, dummy_source_url,
                         base_url, options, TextPosition::MinimumPosition());
 }
 
 // https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-module-script
-ModuleScript* ModuleScript::CreateInternal(const String& source_text,
+ModuleScript* ModuleScript::CreateInternal(const MovableString& source_text,
                                            Modulator* modulator,
                                            ScriptModule result,
                                            const KURL& source_url,
@@ -141,7 +141,7 @@
                            const KURL& source_url,
                            const KURL& base_url,
                            const ScriptFetchOptions& fetch_options,
-                           const String& source_text,
+                           const MovableString& source_text,
                            const TextPosition& start_position)
     : Script(fetch_options, base_url),
       settings_object_(settings_object),
@@ -234,7 +234,7 @@
 }
 
 String ModuleScript::InlineSourceTextForCSP() const {
-  return source_text_;
+  return source_text_.ToString();
 }
 
 std::ostream& operator<<(std::ostream& stream,
diff --git a/third_party/blink/renderer/core/script/module_script.h b/third_party/blink/renderer/core/script/module_script.h
index d476795..ef633df 100644
--- a/third_party/blink/renderer/core/script/module_script.h
+++ b/third_party/blink/renderer/core/script/module_script.h
@@ -16,6 +16,7 @@
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
 #include "third_party/blink/renderer/platform/weborigin/kurl_hash.h"
 #include "third_party/blink/renderer/platform/wtf/hash_map.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_position.h"
 
 namespace blink {
@@ -26,7 +27,7 @@
  public:
   // https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-module-script
   static ModuleScript* Create(
-      const String& source_text,
+      const MovableString& source_text,
       Modulator*,
       const KURL& source_url,
       const KURL& base_url,
@@ -70,10 +71,10 @@
                const KURL& source_url,
                const KURL& base_url,
                const ScriptFetchOptions&,
-               const String& source_text,
+               const MovableString& source_text,
                const TextPosition& start_position);
 
-  static ModuleScript* CreateInternal(const String& source_text,
+  static ModuleScript* CreateInternal(const MovableString& source_text,
                                       Modulator*,
                                       ScriptModule,
                                       const KURL& source_url,
@@ -135,7 +136,7 @@
   TraceWrapperV8Reference<v8::Value> error_to_rethrow_;
 
   // For CSP check.
-  const String source_text_;
+  const MovableString source_text_;
 
   const TextPosition start_position_;
   HashMap<String, KURL> specifier_to_url_cache_;
diff --git a/third_party/blink/renderer/core/script/script_loader.cc b/third_party/blink/renderer/core/script/script_loader.cc
index c936aa1..a036112 100644
--- a/third_party/blink/renderer/core/script/script_loader.cc
+++ b/third_party/blink/renderer/core/script/script_loader.cc
@@ -54,6 +54,7 @@
 #include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h"
 #include "third_party/blink/renderer/platform/weborigin/security_origin.h"
 #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_hash.h"
 
@@ -515,8 +516,8 @@
         Modulator* modulator = Modulator::From(
             ToScriptStateForMainWorld(context_document->GetFrame()));
         ModuleScript* module_script = ModuleScript::Create(
-            element_->TextFromChildren(), modulator, source_url, base_url,
-            options, kSharableCrossOrigin, position);
+            MovableString(element_->TextFromChildren().Impl()), modulator,
+            source_url, base_url, options, kSharableCrossOrigin, position);
 
         // <spec step="25.2.B.2">If this returns null, set the script's script
         // to null and return; the script is ready.</spec>
diff --git a/third_party/blink/renderer/core/testing/sim/sim_test.cc b/third_party/blink/renderer/core/testing/sim/sim_test.cc
index 7327418..ab5ee76 100644
--- a/third_party/blink/renderer/core/testing/sim/sim_test.cc
+++ b/third_party/blink/renderer/core/testing/sim/sim_test.cc
@@ -49,7 +49,7 @@
   WebURLRequest request{KURL(url)};
   WebView().MainFrameImpl()->CommitNavigation(
       request, WebFrameLoadType::kStandard, WebHistoryItem(), false,
-      base::UnguessableToken::Create());
+      base::UnguessableToken::Create(), nullptr);
 }
 
 LocalDOMWindow& SimTest::Window() {
diff --git a/third_party/blink/renderer/modules/locks/lock_options.idl b/third_party/blink/renderer/modules/locks/lock_options.idl
index ce2a2908..cbe48a99 100644
--- a/third_party/blink/renderer/modules/locks/lock_options.idl
+++ b/third_party/blink/renderer/modules/locks/lock_options.idl
@@ -9,5 +9,5 @@
     LockMode mode = "exclusive";
     boolean ifAvailable = false;
     boolean steal = false;
-    AbortSignal? signal;
+    AbortSignal signal;
 };
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder.cc b/third_party/blink/renderer/modules/mediarecorder/media_recorder.cc
index f9a607d..06ae247 100644
--- a/third_party/blink/renderer/modules/mediarecorder/media_recorder.cc
+++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder.cc
@@ -202,6 +202,12 @@
             mime_type_ + ") is not supported.");
     return;
   }
+  // If the user requested no mimeType, query |recorder_handler_|.
+  if (options.mimeType().IsEmpty()) {
+    const String actual_mime_type = recorder_handler_->ActualMimeType();
+    if (!actual_mime_type.IsEmpty())
+      mime_type_ = actual_mime_type;
+  }
   stopped_ = false;
 }
 
diff --git a/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl b/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl
index b0b79ce..ec0ccfdc 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl
+++ b/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl
@@ -11,7 +11,7 @@
 partial interface Document {
     [Measure] readonly attribute boolean pictureInPictureEnabled;
 
-    [CallWith=ScriptState, Measure] Promise<void> exitPictureInPicture();
+    [CallWith=ScriptState, Measure, NewObject] Promise<void> exitPictureInPicture();
 
     // TODO(crbug.com/656517): Define this attribute in DocumentOrShadowRoot.
     [Measure] readonly attribute HTMLVideoElement? pictureInPictureElement;
diff --git a/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl b/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl
index 45217b68..66ab145 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl
+++ b/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl
@@ -8,7 +8,7 @@
     RuntimeEnabled=PictureInPictureAPI
 ]
 partial interface HTMLVideoElement {
-    [CallWith=ScriptState, Measure] Promise<PictureInPictureWindow> requestPictureInPicture();
+    [CallWith=ScriptState, Measure, NewObject] Promise<PictureInPictureWindow> requestPictureInPicture();
 
     attribute EventHandler onenterpictureinpicture;
     attribute EventHandler onleavepictureinpicture;
diff --git a/third_party/blink/renderer/modules/serviceworkers/service_worker_window_client_callback.h b/third_party/blink/renderer/modules/serviceworkers/service_worker_window_client_callback.h
index cf630b2..523df71 100644
--- a/third_party/blink/renderer/modules/serviceworkers/service_worker_window_client_callback.h
+++ b/third_party/blink/renderer/modules/serviceworkers/service_worker_window_client_callback.h
@@ -7,6 +7,7 @@
 
 #include "base/macros.h"
 #include "third_party/blink/public/platform/modules/serviceworker/web_service_worker_clients_info.h"
+#include "third_party/blink/renderer/platform/heap/handle.h"
 
 namespace blink {
 
diff --git a/third_party/blink/renderer/modules/vr/navigator_vr.cc b/third_party/blink/renderer/modules/vr/navigator_vr.cc
index 288b98b..8158472 100644
--- a/third_party/blink/renderer/modules/vr/navigator_vr.cc
+++ b/third_party/blink/renderer/modules/vr/navigator_vr.cc
@@ -6,6 +6,7 @@
 
 #include "services/metrics/public/cpp/ukm_builders.h"
 #include "third_party/blink/public/platform/platform.h"
+#include "third_party/blink/public/platform/web_security_origin.h"
 #include "third_party/blink/public/web/web_frame.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/core/dom/document.h"
diff --git a/third_party/blink/renderer/platform/bindings/string_resource.cc b/third_party/blink/renderer/platform/bindings/string_resource.cc
index 00677094..3be41ac 100644
--- a/third_party/blink/renderer/platform/bindings/string_resource.cc
+++ b/third_party/blink/renderer/platform/bindings/string_resource.cc
@@ -26,7 +26,7 @@
 
 template <>
 struct StringTraits<AtomicString> {
-  static const AtomicString& FromStringResource(StringResourceBase* resource) {
+  static const AtomicString FromStringResource(StringResourceBase* resource) {
     return resource->GetAtomicString();
   }
   template <typename V8StringTrait>
diff --git a/third_party/blink/renderer/platform/bindings/string_resource.h b/third_party/blink/renderer/platform/bindings/string_resource.h
index e56acc5b..41b0f5a 100644
--- a/third_party/blink/renderer/platform/bindings/string_resource.h
+++ b/third_party/blink/renderer/platform/bindings/string_resource.h
@@ -9,6 +9,7 @@
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/allocator.h"
 #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/threading.h"
 #include "v8/include/v8.h"
 
@@ -39,6 +40,17 @@
         string.CharactersSizeInBytes());
   }
 
+  explicit StringResourceBase(const MovableString& string)
+      : movable_string_(string) {
+#if DCHECK_IS_ON()
+    thread_id_ = WTF::CurrentThread();
+#endif
+    // TODO(lizeb): This is only true without compression.
+    DCHECK(!string.IsNull());
+    v8::Isolate::GetCurrent()->AdjustAmountOfExternalAllocatedMemory(
+        string.CharactersSizeInBytes());
+  }
+
   virtual ~StringResourceBase() {
 #if DCHECK_IS_ON()
     DCHECK(thread_id_ == WTF::CurrentThread());
@@ -51,12 +63,24 @@
         -reduced_external_memory);
   }
 
-  const String& GetWTFString() { return plain_string_; }
+  const String& GetWTFString() {
+    if (!movable_string_.IsNull()) {
+      DCHECK(plain_string_.IsNull());
+      DCHECK(atomic_string_.IsNull());
+      return movable_string_.ToString();
+    }
+    return plain_string_;
+  }
 
-  const AtomicString& GetAtomicString() {
+  AtomicString GetAtomicString() {
 #if DCHECK_IS_ON()
     DCHECK(thread_id_ == WTF::CurrentThread());
 #endif
+    if (!movable_string_.IsNull()) {
+      DCHECK(plain_string_.IsNull());
+      DCHECK(atomic_string_.IsNull());
+      return AtomicString(movable_string_.ToString());
+    }
     if (atomic_string_.IsNull()) {
       atomic_string_ = AtomicString(plain_string_);
       DCHECK(!atomic_string_.IsNull());
@@ -78,6 +102,9 @@
   // the original string alive because v8 may keep derived pointers
   // into that string.
   AtomicString atomic_string_;
+  // If this string is movable, its value is held here, and the other
+  // members above are null.
+  MovableString movable_string_;
 
  private:
 #if DCHECK_IS_ON()
@@ -128,6 +155,48 @@
   DISALLOW_COPY_AND_ASSIGN(StringResource8);
 };
 
+class MovableStringResource16 final
+    : public StringResourceBase,
+      public v8::String::ExternalStringResource {
+ public:
+  explicit MovableStringResource16(const MovableString& string)
+      : StringResourceBase(string) {
+    DCHECK(!movable_string_.Is8Bit());
+  }
+
+  // V8 external resources are "compressible", not "movable".
+  bool IsCompressible() const override { return true; }
+
+  size_t length() const override { return movable_string_.length(); }
+
+  const uint16_t* data() const override {
+    return reinterpret_cast<const uint16_t*>(movable_string_.Characters16());
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(MovableStringResource16);
+};
+
+class MovableStringResource8 final
+    : public StringResourceBase,
+      public v8::String::ExternalOneByteStringResource {
+ public:
+  explicit MovableStringResource8(const MovableString& string)
+      : StringResourceBase(string) {
+    DCHECK(movable_string_.Is8Bit());
+  }
+
+  // V8 external resources are "compressible", not "movable".
+  bool IsCompressible() const override { return true; }
+
+  size_t length() const override { return movable_string_.length(); }
+
+  const char* data() const override {
+    return reinterpret_cast<const char*>(movable_string_.Characters8());
+  }
+
+  DISALLOW_COPY_AND_ASSIGN(MovableStringResource8);
+};
+
 enum ExternalMode { kExternalize, kDoNotExternalize };
 
 template <typename StringType>
diff --git a/third_party/blink/renderer/platform/bindings/v8_binding.h b/third_party/blink/renderer/platform/bindings/v8_binding.h
index 219cd19..f81525c 100644
--- a/third_party/blink/renderer/platform/bindings/v8_binding.h
+++ b/third_party/blink/renderer/platform/bindings/v8_binding.h
@@ -42,6 +42,7 @@
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_view.h"
 #include "v8/include/v8.h"
 
@@ -291,6 +292,14 @@
       isolate, string.Impl());
 }
 
+inline v8::Local<v8::String> V8String(v8::Isolate* isolate,
+                                      const MovableString& string) {
+  if (string.IsNull())
+    return v8::String::Empty(isolate);
+  return V8PerIsolateData::From(isolate)->GetStringCache()->V8ExternalString(
+      isolate, string);
+}
+
 inline v8::Local<v8::String> V8AtomicString(v8::Isolate* isolate,
                                             const StringView& string) {
   DCHECK(isolate);
diff --git a/third_party/blink/renderer/platform/bindings/v8_value_cache.cc b/third_party/blink/renderer/platform/bindings/v8_value_cache.cc
index c80e76a..7fe6873e2 100644
--- a/third_party/blink/renderer/platform/bindings/v8_value_cache.cc
+++ b/third_party/blink/renderer/platform/bindings/v8_value_cache.cc
@@ -61,6 +61,28 @@
       ->InvalidateLastString();
 }
 
+MovableStringCacheMapTraits::MapType*
+MovableStringCacheMapTraits::MapFromWeakCallbackInfo(
+    const v8::WeakCallbackInfo<WeakCallbackDataType>& data) {
+  return &(V8PerIsolateData::From(data.GetIsolate())
+               ->GetStringCache()
+               ->movable_string_cache_);
+}
+
+void MovableStringCacheMapTraits::Dispose(v8::Isolate* isolate,
+                                          v8::Global<v8::String> value,
+                                          MovableStringImpl* key) {
+  key->Release();
+}
+
+void MovableStringCacheMapTraits::DisposeWeak(
+    const v8::WeakCallbackInfo<WeakCallbackDataType>& data) {
+  data.GetParameter()->Release();
+}
+
+void MovableStringCacheMapTraits::OnWeakCallback(
+    const v8::WeakCallbackInfo<WeakCallbackDataType>& data) {}
+
 void StringCache::Dispose() {
   // The MapType::Dispose callback calls StringCache::InvalidateLastString,
   // which will only work while the destructor has not yet finished. Thus,
@@ -91,6 +113,29 @@
   return new_string;
 }
 
+static v8::Local<v8::String> MakeExternalString(v8::Isolate* isolate,
+                                                const MovableString& string) {
+  if (string.Is8Bit()) {
+    auto* string_resource = new MovableStringResource8(string);
+    v8::Local<v8::String> new_string;
+    if (!v8::String::NewExternalOneByte(isolate, string_resource)
+             .ToLocal(&new_string)) {
+      delete string_resource;
+      return v8::String::Empty(isolate);
+    }
+    return new_string;
+  }
+
+  auto* string_resource = new MovableStringResource16(string);
+  v8::Local<v8::String> new_string;
+  if (!v8::String::NewExternalTwoByte(isolate, string_resource)
+           .ToLocal(&new_string)) {
+    delete string_resource;
+    return v8::String::Empty(isolate);
+  }
+  return new_string;
+}
+
 v8::Local<v8::String> StringCache::V8ExternalStringSlow(
     v8::Isolate* isolate,
     StringImpl* string_impl) {
@@ -110,6 +155,21 @@
   return CreateStringAndInsertIntoCache(isolate, string_impl);
 }
 
+v8::Local<v8::String> StringCache::V8ExternalString(
+    v8::Isolate* isolate,
+    const MovableString& string) {
+  if (!string.length())
+    return v8::String::Empty(isolate);
+
+  MovableStringCacheMapTraits::MapType::PersistentValueReference
+      cached_v8_string = movable_string_cache_.GetReference(string.Impl());
+  if (!cached_v8_string.IsEmpty()) {
+    return cached_v8_string.NewLocal(isolate);
+  }
+
+  return CreateStringAndInsertIntoCache(isolate, string);
+}
+
 void StringCache::SetReturnValueFromStringSlow(
     v8::ReturnValue<v8::Value> return_value,
     StringImpl* string_impl) {
@@ -154,6 +214,29 @@
   return new_string;
 }
 
+v8::Local<v8::String> StringCache::CreateStringAndInsertIntoCache(
+    v8::Isolate* isolate,
+    const MovableString& string) {
+  MovableStringImpl* string_impl = string.Impl();
+  DCHECK(!movable_string_cache_.Contains(string_impl));
+  DCHECK(string_impl->length());
+
+  v8::Local<v8::String> new_string =
+      MakeExternalString(isolate, MovableString(string));
+  DCHECK(!new_string.IsEmpty());
+  DCHECK(new_string->Length());
+
+  v8::UniquePersistent<v8::String> wrapper(isolate, new_string);
+
+  string_impl->AddRef();
+  // MovableStringImpl objects are not cache in |string_cache_| or
+  // |last_string_impl_|.
+  MovableStringCacheMapTraits::MapType::PersistentValueReference unused;
+  movable_string_cache_.Set(string_impl, std::move(wrapper), &unused);
+
+  return new_string;
+}
+
 void StringCache::InvalidateLastString() {
   last_string_impl_ = nullptr;
   last_v8_string_.Reset();
diff --git a/third_party/blink/renderer/platform/bindings/v8_value_cache.h b/third_party/blink/renderer/platform/bindings/v8_value_cache.h
index cbb9b70..66ed25cd 100644
--- a/third_party/blink/renderer/platform/bindings/v8_value_cache.h
+++ b/third_party/blink/renderer/platform/bindings/v8_value_cache.h
@@ -33,6 +33,7 @@
 #include "third_party/blink/renderer/platform/wtf/hash_map.h"
 #include "third_party/blink/renderer/platform/wtf/noncopyable.h"
 #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 #include "v8/include/v8.h"
 
@@ -74,6 +75,44 @@
   static void DisposeWeak(const v8::WeakCallbackInfo<WeakCallbackDataType>&);
 };
 
+class MovableStringCacheMapTraits
+    : public V8GlobalValueMapTraits<MovableStringImpl*,
+                                    v8::String,
+                                    v8::kWeakWithParameter> {
+  STATIC_ONLY(MovableStringCacheMapTraits);
+
+ public:
+  // Weak traits:
+  typedef MovableStringImpl WeakCallbackDataType;
+  typedef v8::GlobalValueMap<MovableStringImpl*,
+                             v8::String,
+                             MovableStringCacheMapTraits>
+      MapType;
+
+  static WeakCallbackDataType* WeakCallbackParameter(
+      MapType* map,
+      MovableStringImpl* key,
+      v8::Local<v8::String>& value) {
+    return key;
+  }
+  static void DisposeCallbackData(WeakCallbackDataType* callback_data) {}
+
+  static MapType* MapFromWeakCallbackInfo(
+      const v8::WeakCallbackInfo<WeakCallbackDataType>&);
+
+  static MovableStringImpl* KeyFromWeakCallbackInfo(
+      const v8::WeakCallbackInfo<WeakCallbackDataType>& data) {
+    return data.GetParameter();
+  }
+
+  static void OnWeakCallback(const v8::WeakCallbackInfo<WeakCallbackDataType>&);
+
+  static void Dispose(v8::Isolate*,
+                      v8::Global<v8::String> value,
+                      MovableStringImpl* key);
+  static void DisposeWeak(const v8::WeakCallbackInfo<WeakCallbackDataType>&);
+};
+
 // String cache helps convert WTF strings (StringImpl*) into v8 strings by
 // only creating a v8::String for a particular StringImpl* once and caching it
 // for future use. It is held by and can be retrieved from V8PerIsolateData, and
@@ -84,7 +123,8 @@
   WTF_MAKE_NONCOPYABLE(StringCache);
 
  public:
-  explicit StringCache(v8::Isolate* isolate) : string_cache_(isolate) {}
+  explicit StringCache(v8::Isolate* isolate)
+      : string_cache_(isolate), movable_string_cache_(isolate) {}
 
   v8::Local<v8::String> V8ExternalString(v8::Isolate* isolate,
                                          StringImpl* string_impl) {
@@ -94,6 +134,9 @@
     return V8ExternalStringSlow(isolate, string_impl);
   }
 
+  v8::Local<v8::String> V8ExternalString(v8::Isolate* isolate,
+                                         const MovableString& string);
+
   void SetReturnValueFromString(v8::ReturnValue<v8::Value> return_value,
                                 StringImpl* string_impl) {
     DCHECK(string_impl);
@@ -106,16 +149,20 @@
   void Dispose();
 
   friend class StringCacheMapTraits;
+  friend class MovableStringCacheMapTraits;
 
  private:
   v8::Local<v8::String> V8ExternalStringSlow(v8::Isolate*, StringImpl*);
   void SetReturnValueFromStringSlow(v8::ReturnValue<v8::Value>, StringImpl*);
   v8::Local<v8::String> CreateStringAndInsertIntoCache(v8::Isolate*,
                                                        StringImpl*);
+  v8::Local<v8::String> CreateStringAndInsertIntoCache(v8::Isolate*,
+                                                       const MovableString&);
   void InvalidateLastString();
 
   StringCacheMapTraits::MapType string_cache_;
   StringCacheMapTraits::MapType::PersistentValueReference last_v8_string_;
+  MovableStringCacheMapTraits::MapType movable_string_cache_;
 
   // Note: RefPtr is a must as we cache by StringImpl* equality, not identity
   // hence lastStringImpl might be not a key of the cache (in sense of identity)
diff --git a/third_party/blink/renderer/platform/exported/web_service_worker_request.cc b/third_party/blink/renderer/platform/exported/web_service_worker_request.cc
index b8df6fba..ad4cb581 100644
--- a/third_party/blink/renderer/platform/exported/web_service_worker_request.cc
+++ b/third_party/blink/renderer/platform/exported/web_service_worker_request.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/public/platform/modules/serviceworker/web_service_worker_request.h"
 
+#include "third_party/blink/public/platform/web_http_body.h"
 #include "third_party/blink/public/platform/web_http_header_visitor.h"
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/public/platform/web_url_request.h"
diff --git a/third_party/blink/renderer/platform/geometry/float_point.cc b/third_party/blink/renderer/platform/geometry/float_point.cc
index 75a820a..fda6393 100644
--- a/third_party/blink/renderer/platform/geometry/float_point.cc
+++ b/third_party/blink/renderer/platform/geometry/float_point.cc
@@ -116,6 +116,10 @@
   return gfx::ScrollOffset(x_, y_);
 }
 
+FloatPoint::operator gfx::Vector2dF() const {
+  return gfx::Vector2dF(x_, y_);
+}
+
 std::ostream& operator<<(std::ostream& ostream, const FloatPoint& point) {
   return ostream << point.ToString();
 }
diff --git a/third_party/blink/renderer/platform/geometry/float_point.h b/third_party/blink/renderer/platform/geometry/float_point.h
index fcabd694..acca3168 100644
--- a/third_party/blink/renderer/platform/geometry/float_point.h
+++ b/third_party/blink/renderer/platform/geometry/float_point.h
@@ -47,6 +47,7 @@
 namespace gfx {
 class PointF;
 class ScrollOffset;
+class Vector2dF;
 }
 
 namespace blink {
@@ -135,6 +136,7 @@
 
   operator gfx::PointF() const;
   explicit operator gfx::ScrollOffset() const;
+  explicit operator gfx::Vector2dF() const;
 
   String ToString() const;
 
diff --git a/third_party/blink/renderer/platform/heap/heap_stats_collector.h b/third_party/blink/renderer/platform/heap/heap_stats_collector.h
index fe85907..a5f4293 100644
--- a/third_party/blink/renderer/platform/heap/heap_stats_collector.h
+++ b/third_party/blink/renderer/platform/heap/heap_stats_collector.h
@@ -222,6 +222,10 @@
   // Statistics for the previously running garbage collection.
   const Event& previous() const { return previous_; }
 
+  TimeDelta marking_time_so_far() const {
+    return TimeDelta::FromMilliseconds(current_.marking_time_in_ms());
+  }
+
  private:
   // Statistics for the currently running garbage collection. Note that the
   // Event may not be fully populated yet as some phase may not have been run.
diff --git a/third_party/blink/renderer/platform/heap/thread_state.cc b/third_party/blink/renderer/platform/heap/thread_state.cc
index d0e68cb1..4b712e31 100644
--- a/third_party/blink/renderer/platform/heap/thread_state.cc
+++ b/third_party/blink/renderer/platform/heap/thread_state.cc
@@ -88,8 +88,8 @@
 
 // Duration of one incremental marking step. Should be short enough that it
 // doesn't cause jank even though it is scheduled as a normal task.
-constexpr TimeDelta kIncrementalMarkingStepDuration =
-    TimeDelta::FromMilliseconds(1);
+constexpr TimeDelta kDefaultIncrementalMarkingStepDuration =
+    TimeDelta::FromMilliseconds(2);
 
 constexpr size_t kMaxTerminationGCLoops = 20;
 
@@ -600,6 +600,8 @@
   VLOG(2) << "[state:" << this << "] ScheduleGCIfNeeded";
   DCHECK(CheckThread());
 
+  UpdateIncrementalMarkingStepDuration();
+
   // Allocation is allowed during sweeping, but those allocations should not
   // trigger nested GCs.
   if (IsGCForbidden() || SweepForbidden())
@@ -1451,6 +1453,9 @@
         Heap().stats_collector(),
         ThreadHeapStatsCollector::kIncrementalMarkingStartMarking);
     AtomicPauseScope atomic_pause_scope(this);
+    next_incremental_marking_step_duration_ =
+        kDefaultIncrementalMarkingStepDuration;
+    previous_incremental_marking_time_left_ = TimeDelta::Max();
     MarkPhasePrologue(BlinkGC::kNoHeapPointersOnStack,
                       BlinkGC::kIncrementalMarking, reason);
     MarkPhaseVisitRoots();
@@ -1468,8 +1473,8 @@
           << "IncrementalMarking: Step";
   AtomicPauseScope atomic_pause_scope(this);
   DCHECK(IsMarkingInProgress());
-  bool complete = MarkPhaseAdvanceMarking(CurrentTimeTicks() +
-                                          kIncrementalMarkingStepDuration);
+  bool complete = MarkPhaseAdvanceMarking(
+      CurrentTimeTicks() + next_incremental_marking_step_duration_);
   if (complete)
     ScheduleIncrementalMarkingFinalize();
   else
@@ -1758,4 +1763,17 @@
   }
 }
 
+void ThreadState::UpdateIncrementalMarkingStepDuration() {
+  if (!IsIncrementalMarking())
+    return;
+  TimeDelta time_left = Heap().stats_collector()->estimated_marking_time() -
+                        Heap().stats_collector()->marking_time_so_far();
+  // Increase step size if estimated time left is increasing.
+  if (previous_incremental_marking_time_left_ < time_left) {
+    constexpr double ratio = 2.0;
+    next_incremental_marking_step_duration_ *= ratio;
+  }
+  previous_incremental_marking_time_left_ = time_left;
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/heap/thread_state.h b/third_party/blink/renderer/platform/heap/thread_state.h
index 6f256a1..6ba1d02 100644
--- a/third_party/blink/renderer/platform/heap/thread_state.h
+++ b/third_party/blink/renderer/platform/heap/thread_state.h
@@ -655,6 +655,8 @@
 
   void RunScheduledGC(BlinkGC::StackState);
 
+  void UpdateIncrementalMarkingStepDuration();
+
   void EagerSweep();
 
   void InvokePreFinalizers();
@@ -703,6 +705,9 @@
   bool object_resurrection_forbidden_;
   bool in_atomic_pause_;
 
+  TimeDelta next_incremental_marking_step_duration_;
+  TimeDelta previous_incremental_marking_time_left_;
+
   GarbageCollectedMixinConstructorMarkerBase* gc_mixin_marker_;
 
   GCState gc_state_;
diff --git a/third_party/blink/renderer/platform/loader/BUILD.gn b/third_party/blink/renderer/platform/loader/BUILD.gn
index 0ce4622..2f3598e 100644
--- a/third_party/blink/renderer/platform/loader/BUILD.gn
+++ b/third_party/blink/renderer/platform/loader/BUILD.gn
@@ -42,6 +42,7 @@
     "fetch/raw_resource.h",
     "fetch/resource.cc",
     "fetch/resource.h",
+    "fetch/resource_client.cc",
     "fetch/resource_client.h",
     "fetch/resource_client_walker.h",
     "fetch/resource_error.cc",
diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_context.cc b/third_party/blink/renderer/platform/loader/fetch/fetch_context.cc
index 5b87b98..872c88e2 100644
--- a/third_party/blink/renderer/platform/loader/fetch/fetch_context.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/fetch_context.cc
@@ -110,8 +110,6 @@
 
 void FetchContext::AddResourceTiming(const ResourceTimingInfo&) {}
 
-void FetchContext::AddWarningConsoleMessage(const String&, LogSource) const {}
-
 void FetchContext::AddErrorConsoleMessage(const String&, LogSource) const {}
 
 void FetchContext::PopulateResourceRequest(
diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_context.h b/third_party/blink/renderer/platform/loader/fetch/fetch_context.h
index acb593e..337efbf 100644
--- a/third_party/blink/renderer/platform/loader/fetch/fetch_context.h
+++ b/third_party/blink/renderer/platform/loader/fetch/fetch_context.h
@@ -214,7 +214,6 @@
     return false;
   }
 
-  virtual void AddWarningConsoleMessage(const String&, LogSource) const;
   virtual void AddErrorConsoleMessage(const String&, LogSource) const;
 
   virtual const SecurityOrigin* GetSecurityOrigin() const { return nullptr; }
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_client.cc b/third_party/blink/renderer/platform/loader/fetch/resource_client.cc
new file mode 100644
index 0000000..cc5b402
--- /dev/null
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_client.cc
@@ -0,0 +1,50 @@
+/*
+    Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
+    Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
+    Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
+    rights reserved.
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+    Boston, MA 02110-1301, USA.
+
+    This class provides all functionality needed for loading images, style
+    sheets and html pages from the web. It has a memory cache for these objects.
+*/
+
+#include "third_party/blink/renderer/platform/loader/fetch/resource_client.h"
+
+#include "third_party/blink/renderer/platform/loader/fetch/resource.h"
+
+namespace blink {
+
+void ResourceClient::Trace(Visitor* visitor) {
+  visitor->Trace(resource_);
+}
+
+void ResourceClient::SetResource(Resource* new_resource,
+                                 base::SingleThreadTaskRunner* task_runner) {
+  if (new_resource == resource_)
+    return;
+
+  // Some ResourceClient implementations reenter this so we need to
+  // prevent double removal.
+  if (Resource* old_resource = resource_.Release())
+    old_resource->RemoveClient(this);
+  resource_ = new_resource;
+  if (resource_)
+    resource_->AddClient(this, task_runner);
+}
+
+}  //  namespace blink
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_client.h b/third_party/blink/renderer/platform/loader/fetch/resource_client.h
index 932aeb8..b952720 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_client.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_client.h
@@ -27,13 +27,18 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_RESOURCE_CLIENT_H_
 
 #include "third_party/blink/renderer/platform/heap/handle.h"
-#include "third_party/blink/renderer/platform/loader/fetch/resource.h"
 #include "third_party/blink/renderer/platform/platform_export.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
 #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
 
+namespace base {
+class SingleThreadTaskRunner;
+}
+
 namespace blink {
 
+class Resource;
+
 class PLATFORM_EXPORT ResourceClient : public GarbageCollectedMixin {
   USING_PRE_FINALIZER(ResourceClient, ClearResource);
 
@@ -69,7 +74,7 @@
   // Name for debugging, e.g. shown in memory-infra.
   virtual String DebugName() const = 0;
 
-  void Trace(blink::Visitor* visitor) override { visitor->Trace(resource_); }
+  void Trace(Visitor* visitor) override;
 
  protected:
   ResourceClient() = default;
@@ -87,18 +92,7 @@
   friend class CSSFontFaceSrcValue;
 
   void SetResource(Resource* new_resource,
-                   base::SingleThreadTaskRunner* task_runner) {
-    if (new_resource == resource_)
-      return;
-
-    // Some ResourceClient implementations reenter this so
-    // we need to prevent double removal.
-    if (Resource* old_resource = resource_.Release())
-      old_resource->RemoveClient(this);
-    resource_ = new_resource;
-    if (resource_)
-      resource_->AddClient(this, task_runner);
-  }
+                   base::SingleThreadTaskRunner* task_runner);
 
   Member<Resource> resource_;
 };
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 caddaa0..d38fc90 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -1409,18 +1409,14 @@
   matched_preloads_.clear();
 }
 
-void ResourceFetcher::WarnUnusedPreloads() {
+Vector<KURL> ResourceFetcher::GetUrlsOfUnusedPreloads() {
+  Vector<KURL> urls;
   for (const auto& pair : preloads_) {
     Resource* resource = pair.value;
-    if (resource && resource->IsLinkPreload() && resource->IsUnusedPreload()) {
-      Context().AddWarningConsoleMessage(
-          "The resource " + resource->Url().GetString() +
-              " was preloaded using link preload but not used within a few " +
-              "seconds from the window's load event. Please make sure it has " +
-              "an appropriate `as` value and it is preloaded intentionally.",
-          FetchContext::kJSSource);
-    }
+    if (resource && resource->IsLinkPreload() && resource->IsUnusedPreload())
+      urls.push_back(resource->Url());
   }
+  return urls;
 }
 
 ArchiveResource* ResourceFetcher::CreateArchive(Resource* resource) {
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
index f3cc44f..38152b32 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
@@ -120,8 +120,7 @@
 
   int CountPreloads() const { return preloads_.size(); }
   void ClearPreloads(ClearPreloadsPolicy = kClearAllPreloads);
-  void LogPreloadStats(ClearPreloadsPolicy);
-  void WarnUnusedPreloads();
+  Vector<KURL> GetUrlsOfUnusedPreloads();
 
   MHTMLArchive* Archive() const { return archive_.Get(); }
   ArchiveResource* CreateArchive(Resource*);
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 d12e78c..e2b63eb 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -34,6 +34,7 @@
 #include "third_party/blink/public/platform/platform.h"
 #include "third_party/blink/public/platform/web_cors.h"
 #include "third_party/blink/public/platform/web_data.h"
+#include "third_party/blink/public/platform/web_security_origin.h"
 #include "third_party/blink/public/platform/web_url_error.h"
 #include "third_party/blink/public/platform/web_url_request.h"
 #include "third_party/blink/public/platform/web_url_response.h"
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 c10d3a4..cc93416 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_request.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_request.h
@@ -29,6 +29,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_LOADER_FETCH_RESOURCE_REQUEST_H_
 
 #include <memory>
+#include "base/macros.h"
 #include "base/optional.h"
 #include "base/time/time.h"
 #include "base/unguessable_token.h"
@@ -47,9 +48,12 @@
 #include "third_party/blink/renderer/platform/weborigin/kurl.h"
 #include "third_party/blink/renderer/platform/weborigin/referrer.h"
 #include "third_party/blink/renderer/platform/wtf/ref_counted.h"
+#include "third_party/blink/renderer/platform/wtf/time.h"
 
 namespace blink {
 
+class EncodedFormData;
+class SecurityOrigin;
 struct CrossThreadResourceRequestData;
 
 // A ResourceRequest is a "request" object for ResourceLoader. Conceptually
@@ -453,7 +457,7 @@
 //  - Non-simple members need explicit copying (e.g., String::IsolatedCopy,
 //    KURL::Copy) rather than the copy constructor or the assignment operator.
 struct PLATFORM_EXPORT CrossThreadResourceRequestData {
-  WTF_MAKE_NONCOPYABLE(CrossThreadResourceRequestData);
+  DISALLOW_COPY_AND_ASSIGN(CrossThreadResourceRequestData);
   USING_FAST_MALLOC(CrossThreadResourceRequestData);
 
  public:
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
index 64387dc..c237e92 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
@@ -280,29 +280,36 @@
   RunTask(QueueType::kTest, Seconds(22), base::TimeDelta::FromSeconds(4));
 
   scheduler_->SetRendererBackgrounded(true);
+  // Wait for internally triggered tasks to run.
+  constexpr int kCoolingOfTimeSeconds = 10;
 
-  RunTask(QueueType::kControl, Seconds(26), base::TimeDelta::FromSeconds(2));
-  RunTask(QueueType::kFrameThrottleable, Seconds(28),
+  RunTask(QueueType::kControl, Seconds(26 + kCoolingOfTimeSeconds),
+          base::TimeDelta::FromSeconds(2));
+  RunTask(QueueType::kFrameThrottleable, Seconds(28 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(8));
-  RunTask(QueueType::kUnthrottled, Seconds(38),
+  RunTask(QueueType::kUnthrottled, Seconds(38 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(5));
-  RunTask(QueueType::kFrameLoading, Seconds(45),
+  RunTask(QueueType::kFrameLoading, Seconds(45 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(10));
-  RunTask(QueueType::kFrameThrottleable, Seconds(60),
+  RunTask(QueueType::kFrameThrottleable, Seconds(60 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(5));
-  RunTask(QueueType::kCompositor, Seconds(70),
+  RunTask(QueueType::kCompositor, Seconds(70 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(20));
-  RunTask(QueueType::kIdle, Seconds(90), base::TimeDelta::FromSeconds(5));
-  RunTask(QueueType::kFrameLoadingControl, Seconds(100),
+  RunTask(QueueType::kIdle, Seconds(90 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(5));
-  RunTask(QueueType::kControl, Seconds(106), base::TimeDelta::FromSeconds(6));
-  RunTask(QueueType::kFrameThrottleable, Seconds(114),
+  RunTask(QueueType::kFrameLoadingControl, Seconds(100 + kCoolingOfTimeSeconds),
+          base::TimeDelta::FromSeconds(5));
+  RunTask(QueueType::kControl, Seconds(106 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(6));
-  RunTask(QueueType::kFramePausable, Seconds(120),
+  RunTask(QueueType::kFrameThrottleable, Seconds(114 + kCoolingOfTimeSeconds),
+          base::TimeDelta::FromSeconds(6));
+  RunTask(QueueType::kFramePausable, Seconds(120 + kCoolingOfTimeSeconds),
           base::TimeDelta::FromSeconds(17));
-  RunTask(QueueType::kIdle, Seconds(140), base::TimeDelta::FromSeconds(15));
+  RunTask(QueueType::kIdle, Seconds(140 + kCoolingOfTimeSeconds),
+          base::TimeDelta::FromSeconds(15));
 
-  RunTask(QueueType::kDetached, Seconds(156), base::TimeDelta::FromSeconds(2));
+  RunTask(QueueType::kDetached, Seconds(156 + kCoolingOfTimeSeconds),
+          base::TimeDelta::FromSeconds(2));
 
   std::vector<base::Bucket> expected_samples = {
       {static_cast<int>(QueueType::kControl), 11},
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
index 5739991..9cf061d 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
@@ -36,6 +36,7 @@
 #include "third_party/blink/renderer/platform/scheduler/main_thread/auto_advancing_virtual_time_domain.h"
 #include "third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h"
 #include "third_party/blink/renderer/platform/scheduler/renderer/webthread_impl_for_renderer_scheduler.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 
 namespace blink {
 namespace scheduler {
@@ -1027,6 +1028,15 @@
   } else {
     main_thread_only().metrics_helper.OnRendererForegrounded(now);
   }
+
+  auto& movable_string_table = MovableStringTable::Instance();
+  movable_string_table.SetRendererBackgrounded(backgrounded);
+  if (backgrounded) {
+    DefaultTaskRunner()->PostDelayedTask(
+        FROM_HERE,
+        base::BindOnce([]() { MovableStringTable::Instance().MaybeParkAll(); }),
+        base::TimeDelta::FromSeconds(10));
+  }
 }
 
 void MainThreadSchedulerImpl::SetSchedulerKeepActive(bool keep_active) {
@@ -2688,9 +2698,17 @@
     }
   }
 
-  if (!is_disjoint_window || !ContainsLocalMainFrame())
+  if (!is_disjoint_window)
     return;
 
+  if (!ContainsLocalMainFrame()) {
+    UMA_HISTOGRAM_CUSTOM_COUNTS(
+        "RendererScheduler.ExpectedTaskQueueingDurationWithoutMainFrame",
+        queueing_time.InMicroseconds(), kMinExpectedQueueingTimeBucket,
+        kMaxExpectedQueueingTimeBucket, kNumberExpectedQueueingTimeBuckets);
+    return;
+  }
+
   UMA_HISTOGRAM_TIMES("RendererScheduler.ExpectedTaskQueueingDuration",
                       queueing_time);
   UMA_HISTOGRAM_CUSTOM_COUNTS(
diff --git a/third_party/blink/renderer/platform/scroll/scroll_snap_data.h b/third_party/blink/renderer/platform/scroll/scroll_snap_data.h
index 6cc9550..0aa5294 100644
--- a/third_party/blink/renderer/platform/scroll/scroll_snap_data.h
+++ b/third_party/blink/renderer/platform/scroll/scroll_snap_data.h
@@ -6,6 +6,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_PLATFORM_SCROLL_SCROLL_SNAP_DATA_H_
 
 #include "cc/input/scroll_snap_data.h"
+#include "cc/input/snap_fling_controller.h"
 
 // This file defines classes and structs used in SnapCoordinator.h
 
@@ -19,6 +20,8 @@
 using ScrollSnapAlign = cc::ScrollSnapAlign;
 using SnapAreaData = cc::SnapAreaData;
 using SnapContainerData = cc::SnapContainerData;
+using SnapFlingController = cc::SnapFlingController;
+using SnapFlingClient = cc::SnapFlingClient;
 
 }  // namespace blink
 
diff --git a/third_party/blink/renderer/platform/wtf/BUILD.gn b/third_party/blink/renderer/platform/wtf/BUILD.gn
index 7eac1bdc..dba0b46 100644
--- a/third_party/blink/renderer/platform/wtf/BUILD.gn
+++ b/third_party/blink/renderer/platform/wtf/BUILD.gn
@@ -144,6 +144,8 @@
     "text/cstring.cc",
     "text/cstring.h",
     "text/integer_to_string_conversion.h",
+    "text/movable_string.cc",
+    "text/movable_string.h",
     "text/number_parsing_options.h",
     "text/parsing_utilities.h",
     "text/string_buffer.h",
@@ -324,6 +326,7 @@
     "text/atomic_string_test.cc",
     "text/cstring_test.cc",
     "text/integer_to_string_conversion_test.cc",
+    "text/movable_string_test.cc",
     "text/string_buffer_test.cc",
     "text/string_builder_test.cc",
     "text/string_impl_test.cc",
diff --git a/third_party/blink/renderer/platform/wtf/DEPS b/third_party/blink/renderer/platform/wtf/DEPS
index 886c40c..46d4d53 100644
--- a/third_party/blink/renderer/platform/wtf/DEPS
+++ b/third_party/blink/renderer/platform/wtf/DEPS
@@ -11,6 +11,7 @@
     "+base/memory/ptr_util.h",
     "+base/memory/ref_counted.h",
     "+base/memory/weak_ptr.h",
+    "+base/metrics/histogram_macros.h",
     "+base/numerics",
     "+base/optional.h",
     "+base/process/process_metrics.h",
diff --git a/third_party/blink/renderer/platform/wtf/text/movable_string.cc b/third_party/blink/renderer/platform/wtf/text/movable_string.cc
new file mode 100644
index 0000000..70f2eed1
--- /dev/null
+++ b/third_party/blink/renderer/platform/wtf/text/movable_string.cc
@@ -0,0 +1,154 @@
+// 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/platform/wtf/text/movable_string.h"
+
+#include "base/metrics/histogram_macros.h"
+
+namespace WTF {
+
+namespace {
+
+enum class ParkingAction {
+  kParkedInBackground = 0,
+  kUnparkedInBackground = 1,
+  kUnparkedInForeground = 2,
+  kMaxValue = kUnparkedInForeground
+};
+
+bool IsLargeEnough(const StringImpl* impl) {
+  // Don't attempt to park strings smaller than this size.
+  static constexpr unsigned int kSizeThreshold = 10000;
+  return impl && impl->length() > kSizeThreshold;
+}
+
+void RecordParkingAction(ParkingAction action) {
+  UMA_HISTOGRAM_ENUMERATION("Memory.MovableStringParkingAction", action);
+}
+
+}  // namespace
+
+MovableStringImpl::MovableStringImpl() = default;
+
+MovableStringImpl::MovableStringImpl(scoped_refptr<StringImpl>&& impl)
+    : string_(std::move(impl)), is_parked_(false) {}
+
+MovableStringImpl::~MovableStringImpl() {
+  MovableStringTable::Instance().Remove(string_.Impl());
+}
+
+bool MovableStringImpl::Is8Bit() const {
+  return string_.Is8Bit();
+}
+
+bool MovableStringImpl::IsNull() const {
+  return string_.IsNull();
+}
+
+const String& MovableStringImpl::ToString() {
+  Unpark();
+  return string_;
+}
+
+unsigned MovableStringImpl::CharactersSizeInBytes() const {
+  return string_.CharactersSizeInBytes();
+}
+
+bool MovableStringImpl::Park() {
+  // Cannot park strings with several references.
+  if (string_.Impl()->HasOneRef()) {
+    RecordParkingAction(ParkingAction::kParkedInBackground);
+    is_parked_ = true;
+  }
+  return is_parked_;
+}
+
+void MovableStringImpl::Unpark() {
+  if (!is_parked_)
+    return;
+
+  bool backgrounded = MovableStringTable::Instance().IsRendererBackgrounded();
+  RecordParkingAction(backgrounded ? ParkingAction::kUnparkedInBackground
+                                   : ParkingAction::kUnparkedInBackground);
+  is_parked_ = false;
+}
+
+MovableString::MovableString(scoped_refptr<StringImpl>&& impl) {
+  // Don't move small strings.
+  if (IsLargeEnough(impl.get())) {
+    impl_ = MovableStringTable::Instance().Add(std::move(impl));
+  } else {
+    impl_ = base::MakeRefCounted<MovableStringImpl>(std::move(impl));
+  }
+}
+
+MovableString::~MovableString() = default;
+
+bool MovableString::Is8Bit() const {
+  return impl_->Is8Bit();
+}
+
+bool MovableString::IsNull() const {
+  return impl_->IsNull();
+}
+const String& MovableString::ToString() const {
+  return impl_->ToString();
+}
+
+unsigned MovableString::CharactersSizeInBytes() const {
+  return impl_->CharactersSizeInBytes();
+}
+
+MovableStringTable::MovableStringTable() = default;
+MovableStringTable::~MovableStringTable() = default;
+
+scoped_refptr<MovableStringImpl> MovableStringTable::Add(
+    scoped_refptr<StringImpl>&& string) {
+  StringImpl* raw_ptr = string.get();
+  auto it = table_.find(raw_ptr);
+  if (it != table_.end()) {
+    return it->second;
+  }
+  auto new_movable_string =
+      base::MakeRefCounted<MovableStringImpl>(std::move(string));
+  table_.emplace(raw_ptr, new_movable_string.get());
+  return new_movable_string;
+}
+
+void MovableStringTable::Remove(StringImpl* string) {
+  if (!IsLargeEnough(string))
+    return;
+
+  auto it = table_.find(string);
+  DCHECK(it != table_.end());
+  table_.erase(it);
+}
+
+void MovableStringTable::SetRendererBackgrounded(bool backgrounded) {
+  backgrounded_ = backgrounded;
+}
+
+bool MovableStringTable::IsRendererBackgrounded() const {
+  return backgrounded_;
+}
+
+void MovableStringTable::MaybeParkAll() {
+  if (!IsRendererBackgrounded())
+    return;
+
+  size_t total_size = 0, count = 0;
+  for (auto& kv : table_) {
+    MovableStringImpl* str = kv.second;
+    str->Park();
+    total_size += str->CharactersSizeInBytes();
+    count += 1;
+  }
+
+  size_t total_size_kb = total_size / 1000;
+  UMA_HISTOGRAM_COUNTS_100000("Memory.MovableStringsTotalSizeKb",
+                              total_size_kb);
+  UMA_HISTOGRAM_COUNTS_1000("Memory.MovableStringsCount", table_.size());
+}
+
+}  // namespace WTF
diff --git a/third_party/blink/renderer/platform/wtf/text/movable_string.h b/third_party/blink/renderer/platform/wtf/text/movable_string.h
new file mode 100644
index 0000000..b9d0240
--- /dev/null
+++ b/third_party/blink/renderer/platform/wtf/text/movable_string.h
@@ -0,0 +1,131 @@
+// 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_PLATFORM_WTF_TEXT_MOVABLE_STRING_H_
+#define THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_MOVABLE_STRING_H_
+
+#include <map>
+#include <set>
+#include <utility>
+
+#include "base/gtest_prod_util.h"
+#include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
+#include "third_party/blink/renderer/platform/wtf/wtf_thread_data.h"
+
+// MovableString represents a string that may be moved in memory, that it its
+// underlying memory address may change. Its content can be retrieved with the
+// |ToString()| method.
+// As a consequence, the inner pointer should never be cached, and only touched
+// through a string returned by the |ToString()| method.
+//
+// As with WTF::AtomicString, this class is *not* thread-safe, and strings
+// created on a thread must always be used on the same thread.
+//
+// Implementation note: the string content is not moved yet, it is merely
+// used to gather statistics.
+
+namespace WTF {
+
+class WTF_EXPORT MovableStringImpl final
+    : public RefCounted<MovableStringImpl> {
+ public:
+  MovableStringImpl();
+  explicit MovableStringImpl(scoped_refptr<StringImpl>&& impl);
+  ~MovableStringImpl();
+
+  // The returned string may be used as a normal one, as long as the
+  // returned value (or a copy of it) is alive.
+  const String& ToString();
+
+  // See the matching String methods.
+  bool Is8Bit() const;
+  bool IsNull() const;
+  unsigned length() const { return string_.length(); }
+  unsigned CharactersSizeInBytes() const;
+
+  // A parked string cannot be accessed until it has been |Unpark()|-ed.
+  // Returns true iff the string has been parked.
+  bool Park();
+  // Returns true if the string is parked.
+  bool is_parked() const { return is_parked_; }
+
+ private:
+  void Unpark();
+
+  String string_;
+  bool is_parked_;
+
+  DISALLOW_COPY_AND_ASSIGN(MovableStringImpl);
+};
+
+class WTF_EXPORT MovableString final {
+ public:
+  MovableString() : impl_(base::MakeRefCounted<MovableStringImpl>(nullptr)) {}
+  explicit MovableString(scoped_refptr<StringImpl>&& impl);
+  MovableString(const MovableString& rhs) : impl_(rhs.impl_) {}
+  ~MovableString();
+
+  // See the matching String methods.
+  bool Is8Bit() const;
+  bool IsNull() const;
+  unsigned length() const { return impl_->length(); }
+  MovableStringImpl* Impl() const { return impl_.get(); }
+  // Returns an unparked version of the string.
+  // The string is guaranteed to be valid for
+  // max(lifetime of a copy of the returned reference, current thread task).
+  const String& ToString() const;
+  unsigned CharactersSizeInBytes() const;
+
+  // Causes the string to be unparked. Note that the pointer must not be
+  // cached.
+  const LChar* Characters8() const { return ToString().Characters8(); }
+  const UChar* Characters16() const { return ToString().Characters16(); }
+
+ private:
+  scoped_refptr<MovableStringImpl> impl_;
+};
+
+// Per-thread registry of all MovableString instances. NOT thread-safe.
+class WTF_EXPORT MovableStringTable final {
+ public:
+  MovableStringTable();
+  ~MovableStringTable();
+
+  static MovableStringTable& Instance() {
+    return WtfThreadData().GetMovableStringTable();
+  }
+
+  scoped_refptr<MovableStringImpl> Add(scoped_refptr<StringImpl>&&);
+
+  // This is for ~MovableStringImpl to unregister a string before
+  // destruction since the table is holding raw pointers. It should not be used
+  // directly.
+  void Remove(StringImpl*);
+
+  void SetRendererBackgrounded(bool backgrounded);
+  bool IsRendererBackgrounded() const;
+
+  // Parks all the strings in the table if currently in background.
+  void MaybeParkAll();
+
+ private:
+  bool backgrounded_;
+  // Could bet a set where the hashing function is
+  // MovableStringImpl::string_.Impl(), but clearer this way.
+  std::map<StringImpl*, MovableStringImpl*> table_;
+
+  FRIEND_TEST_ALL_PREFIXES(MovableStringTest, TableSimple);
+  FRIEND_TEST_ALL_PREFIXES(MovableStringTest, TableMultiple);
+
+  DISALLOW_COPY_AND_ASSIGN(MovableStringTable);
+};
+
+}  // namespace WTF
+
+using WTF::MovableStringTable;
+using WTF::MovableString;
+using WTF::MovableStringImpl;
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_TEXT_MOVABLE_STRING_H_
diff --git a/third_party/blink/renderer/platform/wtf/text/movable_string_test.cc b/third_party/blink/renderer/platform/wtf/text/movable_string_test.cc
new file mode 100644
index 0000000..e1268f4c
--- /dev/null
+++ b/third_party/blink/renderer/platform/wtf/text/movable_string_test.cc
@@ -0,0 +1,131 @@
+// 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/platform/wtf/text/movable_string.h"
+
+#include <vector>
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace WTF {
+
+TEST(MovableStringTest, Simple) {
+  MovableString movable_abc(String("abc").ReleaseImpl());
+
+  EXPECT_TRUE(MovableString().IsNull());
+  EXPECT_FALSE(movable_abc.IsNull());
+  EXPECT_TRUE(movable_abc.Is8Bit());
+  EXPECT_EQ(3u, movable_abc.length());
+  EXPECT_EQ(3u, movable_abc.CharactersSizeInBytes());
+
+  EXPECT_EQ(String("abc"), movable_abc.ToString());
+  MovableString copy = movable_abc;
+  EXPECT_EQ(copy.Impl(), movable_abc.Impl());
+}
+
+TEST(MovableStringTest, Park) {
+  MovableString movable(String("abc").Impl());
+  EXPECT_FALSE(movable.Impl()->is_parked());
+  EXPECT_TRUE(movable.Impl()->Park());
+  EXPECT_TRUE(movable.Impl()->is_parked());
+
+  // Not the only one to have a reference to the string.
+  String abc("abc");
+  MovableString movable2(abc.Impl());
+  EXPECT_FALSE(movable2.Impl()->Park());
+  abc = String();
+  EXPECT_TRUE(movable2.Impl()->Park());
+}
+
+TEST(MovableStringTest, Unpark) {
+  MovableString movable(String("abc").Impl());
+  EXPECT_FALSE(movable.Impl()->is_parked());
+  EXPECT_TRUE(movable.Impl()->Park());
+  EXPECT_TRUE(movable.Impl()->is_parked());
+
+  String unparked = movable.ToString();
+  EXPECT_EQ(String("abc"), unparked);
+  EXPECT_FALSE(movable.Impl()->is_parked());
+}
+
+TEST(MovableStringTest, TableSimple) {
+  std::vector<char> data(20000, 'a');
+  MovableString movable(String(data.data(), data.size()).ReleaseImpl());
+  ASSERT_FALSE(movable.Impl()->is_parked());
+
+  auto& table = MovableStringTable::Instance();
+  EXPECT_EQ(1u, table.table_.size());
+
+  // Small strings are not in the table.
+  MovableString small(String("abc").ReleaseImpl());
+  EXPECT_EQ(1u, table.table_.size());
+
+  // No parking as the current state is not "backgrounded".
+  table.SetRendererBackgrounded(false);
+  ASSERT_FALSE(table.IsRendererBackgrounded());
+  table.MaybeParkAll();
+  EXPECT_FALSE(movable.Impl()->is_parked());
+
+  table.SetRendererBackgrounded(true);
+  ASSERT_TRUE(table.IsRendererBackgrounded());
+  table.MaybeParkAll();
+  EXPECT_TRUE(movable.Impl()->is_parked());
+
+  // Park and unpark.
+  movable.ToString();
+  EXPECT_FALSE(movable.Impl()->is_parked());
+  table.MaybeParkAll();
+  EXPECT_TRUE(movable.Impl()->is_parked());
+
+  // More than one reference, no parking.
+  String alive_unparked = movable.ToString();
+  table.MaybeParkAll();
+  EXPECT_FALSE(movable.Impl()->is_parked());
+
+  // Other reference is dropped, OK to park.
+  alive_unparked = String();
+  table.MaybeParkAll();
+  EXPECT_TRUE(movable.Impl()->is_parked());
+}
+
+TEST(MovableStringTest, TableMultiple) {
+  std::vector<char> data(20000, 'a');
+  MovableString movable(String(data.data(), data.size()).ReleaseImpl());
+  MovableString movable2(String(data.data(), data.size()).ReleaseImpl());
+
+  auto& table = MovableStringTable::Instance();
+  EXPECT_EQ(2u, table.table_.size());
+
+  movable2 = MovableString();
+  EXPECT_EQ(1u, table.table_.size());
+
+  MovableString copy = movable;
+  movable = MovableString();
+  EXPECT_EQ(1u, table.table_.size());
+  copy = MovableString();
+  EXPECT_EQ(0u, table.table_.size());
+
+  String str(data.data(), data.size());
+  MovableString movable3(str.Impl());
+  EXPECT_EQ(1u, table.table_.size());
+  // De-duplicated.
+  MovableString other_movable3(str.Impl());
+  EXPECT_EQ(1u, table.table_.size());
+  EXPECT_EQ(movable3.Impl(), other_movable3.Impl());
+
+  // If all the references to a string are in the table, park it.
+  str = String();
+  table.SetRendererBackgrounded(true);
+  ASSERT_TRUE(table.IsRendererBackgrounded());
+  table.MaybeParkAll();
+  EXPECT_TRUE(movable3.Impl()->is_parked());
+
+  // Only drop it from the table when the last one is gone.
+  movable3 = MovableString();
+  EXPECT_EQ(1u, table.table_.size());
+  other_movable3 = MovableString();
+  EXPECT_EQ(0u, table.table_.size());
+}
+
+}  // namespace WTF
diff --git a/third_party/blink/renderer/platform/wtf/wtf_thread_data.cc b/third_party/blink/renderer/platform/wtf/wtf_thread_data.cc
index 91bdf2e..1bd1b103 100644
--- a/third_party/blink/renderer/platform/wtf/wtf_thread_data.cc
+++ b/third_party/blink/renderer/platform/wtf/wtf_thread_data.cc
@@ -28,6 +28,7 @@
 
 #include "third_party/blink/renderer/platform/wtf/stack_util.h"
 #include "third_party/blink/renderer/platform/wtf/text/atomic_string_table.h"
+#include "third_party/blink/renderer/platform/wtf/text/movable_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_codec_icu.h"
 
 namespace WTF {
@@ -36,6 +37,7 @@
 
 WTFThreadData::WTFThreadData()
     : atomic_string_table_(new AtomicStringTable),
+      movable_string_table_(new MovableStringTable),
       cached_converter_icu_(new ICUConverterWrapper),
       thread_id_(internal::CurrentThreadSyscall()) {}
 
diff --git a/third_party/blink/renderer/platform/wtf/wtf_thread_data.h b/third_party/blink/renderer/platform/wtf/wtf_thread_data.h
index c45674e3..84707d24 100644
--- a/third_party/blink/renderer/platform/wtf/wtf_thread_data.h
+++ b/third_party/blink/renderer/platform/wtf/wtf_thread_data.h
@@ -41,6 +41,7 @@
 namespace WTF {
 
 class AtomicStringTable;
+class MovableStringTable;
 struct ICUConverterWrapper;
 
 class WTF_EXPORT WTFThreadData {
@@ -52,6 +53,8 @@
 
   AtomicStringTable& GetAtomicStringTable() { return *atomic_string_table_; }
 
+  MovableStringTable& GetMovableStringTable() { return *movable_string_table_; }
+
   ICUConverterWrapper& CachedConverterICU() { return *cached_converter_icu_; }
 
   ThreadIdentifier ThreadId() const { return thread_id_; }
@@ -65,6 +68,7 @@
 
  private:
   std::unique_ptr<AtomicStringTable> atomic_string_table_;
+  std::unique_ptr<MovableStringTable> movable_string_table_;
   std::unique_ptr<ICUConverterWrapper> cached_converter_icu_;
 
   ThreadIdentifier thread_id_;
diff --git a/third_party/blink/tools/audit_non_blink_usage.py b/third_party/blink/tools/audit_non_blink_usage.py
index 189c6b8..d11b59d 100755
--- a/third_party/blink/tools/audit_non_blink_usage.py
+++ b/third_party/blink/tools/audit_non_blink_usage.py
@@ -146,6 +146,7 @@
             'gfx::Size',
             'gfx::SizeF',
             'gfx::Transform',
+            'gfx::Vector2dF',
             # Wrapper of SkRegion used in Chromium.
             'cc::Region',
 
diff --git a/third_party/harfbuzz-ng/BUILD.gn b/third_party/harfbuzz-ng/BUILD.gn
index c8bd9c6..89491023 100644
--- a/third_party/harfbuzz-ng/BUILD.gn
+++ b/third_party/harfbuzz-ng/BUILD.gn
@@ -46,6 +46,7 @@
 
     sources = [
       "src/src/hb-atomic-private.hh",
+      "src/src/hb-blob-private.hh",
       "src/src/hb-blob.cc",
       "src/src/hb-blob.h",
       "src/src/hb-buffer-deserialize-json.hh",
@@ -157,6 +158,7 @@
       "src/src/hb-shaper-list.hh",
       "src/src/hb-shaper-private.hh",
       "src/src/hb-shaper.cc",
+      "src/src/hb-static.cc",
       "src/src/hb-string-array.hh",
       "src/src/hb-subset-glyf.hh",
       "src/src/hb-subset-plan.h",
@@ -176,6 +178,7 @@
       "HAVE_ICU",
       "HAVE_ICU_BUILTIN",
       "HAVE_INTEL_ATOMIC_PRIMITIVES",
+      "HB_NO_MMAP",
     ]
 
     if (is_component_build) {
diff --git a/third_party/harfbuzz-ng/README.chromium b/third_party/harfbuzz-ng/README.chromium
index 98165ba..777219af 100644
--- a/third_party/harfbuzz-ng/README.chromium
+++ b/third_party/harfbuzz-ng/README.chromium
@@ -1,9 +1,9 @@
 Name: harfbuzz-ng
 Short Name: harfbuzz-ng
 URL: http://harfbuzz.org
-Version: 1.7.6
-Date: 20180319
-Revision: 957e7756634a4fdf1654041e20e883cf964ecac9
+Version: 1.8.2
+Date: 20180703
+Revision: 2cb075fe26201f3e370fccfff6c1bc242b5acc79
 Security Critical: yes
 License: MIT
 License File: src/COPYING
@@ -31,16 +31,26 @@
     dump-khmer-data.cc
     dump-myanmar-data.cc
     dump-use-data.cc
+    hb-aat-fmtx-table.hh
+    hb-aat-gcid-table.hh
     hb-aat-layout-ankr-table.hh
+    hb-aat-layout-bsln-table.hh
     hb-aat-layout-common-private.hh
+    hb-aat-layout-feat-table.hh
     hb-aat-layout-kerx-table.hh
     hb-aat-layout-morx-table.hh
     hb-aat-layout-private.hh
     hb-aat-layout-trak-table.hh
     hb-aat-layout.cc
+    hb-aat-ltag-table.hh
     hb-directwrite.cc
     hb-directwrite.h
     hb-fallback-shape.cc
+    hb-map-private.hh
+    hb-map.cc
+    hb-map.h
+    hb-ot-color-sbix-table.hh
+    hb-ot-color-svg-table.hh
     hb-ot-color.cc
     hb-subset-glyf.cc
     hb-subset-input.cc
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 9090019..a604354 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -5843,6 +5843,14 @@
   </description>
 </action>
 
+<action name="InProductHelp.ShouldTriggerHelpUI.IPH_BottomToolbarTip">
+  <owner>gambard@chromium.org</owner>
+  <description>
+    The feature engagement tracker tried to determine whether in-product help
+    should be shown to the user.
+  </description>
+</action>
+
 <action name="InProductHelp.ShouldTriggerHelpUI.IPH_ChromeHomeExpand">
   <owner>twellington@chromium.org</owner>
   <owner>mdjones@chromium.org</owner>
@@ -6103,6 +6111,15 @@
 </action>
 
 <action
+    name="InProductHelp.ShouldTriggerHelpUIResult.NotTriggered.IPH_BottomToolbarTip">
+  <owner>gambard@chromium.org</owner>
+  <description>
+    The feature engagement tracker tried to determine whether in-product help
+    should be shown to the user.
+  </description>
+</action>
+
+<action
     name="InProductHelp.ShouldTriggerHelpUIResult.NotTriggered.IPH_ChromeHomeExpand">
   <owner>twellington@chromium.org</owner>
   <owner>mdjones@chromium.org</owner>
@@ -6361,6 +6378,15 @@
 </action>
 
 <action
+    name="InProductHelp.ShouldTriggerHelpUIResult.Triggered.IPH_BottomToolbarTip">
+  <owner>gambard@chromium.org</owner>
+  <description>
+    The feature engagement tracker tried to determine whether in-product help
+    should be shown to the user.
+  </description>
+</action>
+
+<action
     name="InProductHelp.ShouldTriggerHelpUIResult.Triggered.IPH_ChromeHomeExpand">
   <owner>twellington@chromium.org</owner>
   <owner>mdjones@chromium.org</owner>
@@ -6595,6 +6621,15 @@
 </action>
 
 <action
+    name="InProductHelp.ShouldTriggerHelpUIResult.WouldHaveTriggered.IPH_BottomToolbarTip">
+  <owner>gambard@chromium.org</owner>
+  <description>
+    The feature engagement tracker tried to determine whether in-product help
+    should be shown to the user.
+  </description>
+</action>
+
+<action
     name="InProductHelp.ShouldTriggerHelpUIResult.WouldHaveTriggered.IPH_ChromeHomeExpand">
   <owner>twellington@chromium.org</owner>
   <owner>mdjones@chromium.org</owner>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 2013607..ad62223d 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -7642,6 +7642,7 @@
   <int value="12" label="Suggestion clicked"/>
   <int value="13" label="UI dismissed without open"/>
   <int value="14" label="UI dismissed after open"/>
+  <int value="15" label="UI button shown"/>
 </enum>
 
 <enum name="CookieCommitProblem">
@@ -10828,6 +10829,7 @@
   <int value="9" label="ClearAll"/>
   <int value="10" label="OpenFolder"/>
   <int value="11" label="Resume"/>
+  <int value="12" label="RetryDownload"/>
 </enum>
 
 <enum name="DownloadedFileAction">
@@ -35710,6 +35712,12 @@
   <int value="1" label="Parent Frame Known"/>
 </enum>
 
+<enum name="ParkingAction">
+  <int value="0" label="Parked in Background"/>
+  <int value="1" label="Unparked in Background"/>
+  <int value="2" label="Unparked in Foreground"/>
+</enum>
+
 <enum name="ParsedCookieStatus">
   <obsolete>
     Deprecated as of 9/2013. Experiment to measure control characters in cookies
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 5bea0b1..e88e9a1b 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -1519,8 +1519,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -1534,8 +1534,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7644,8 +7644,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7659,8 +7659,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7674,8 +7674,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7689,8 +7689,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7715,8 +7715,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7729,8 +7729,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7786,8 +7786,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7799,8 +7799,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7813,8 +7813,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7826,8 +7826,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7856,8 +7856,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7910,8 +7910,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7929,8 +7929,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -7942,8 +7942,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8113,8 +8113,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8127,8 +8127,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8141,8 +8141,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8230,8 +8230,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8282,8 +8282,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8391,8 +8391,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8418,8 +8418,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8609,8 +8609,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -8646,8 +8646,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -11607,8 +11607,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12170,8 +12170,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12184,8 +12184,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12199,8 +12199,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12256,8 +12256,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12294,8 +12294,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12354,8 +12354,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12369,8 +12369,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12383,8 +12383,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12658,8 +12658,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12672,8 +12672,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12687,8 +12687,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12745,8 +12745,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12783,8 +12783,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -12867,8 +12867,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -14266,8 +14266,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -14286,8 +14286,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -19120,8 +19120,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -19134,8 +19134,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -19147,8 +19147,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -19161,8 +19161,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -19175,8 +19175,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -19188,8 +19188,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -21429,8 +21429,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -22914,8 +22914,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23030,8 +23030,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23048,8 +23048,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23066,8 +23066,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23889,8 +23889,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23903,8 +23903,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23920,8 +23920,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23936,8 +23936,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -23950,8 +23950,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24138,8 +24138,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24158,8 +24158,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24219,8 +24219,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24237,8 +24237,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24269,8 +24269,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24291,8 +24291,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24313,8 +24313,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24332,8 +24332,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24362,8 +24362,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24380,8 +24380,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24412,8 +24412,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24434,8 +24434,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24456,8 +24456,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24475,8 +24475,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24697,8 +24697,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24714,8 +24714,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24766,8 +24766,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24787,8 +24787,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24809,8 +24809,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24828,8 +24828,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24872,8 +24872,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24889,8 +24889,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24942,8 +24942,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24963,8 +24963,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24985,8 +24985,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -25004,8 +25004,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -25246,8 +25246,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -25281,8 +25281,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -26252,8 +26252,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -26492,8 +26492,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -26661,8 +26661,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -26676,8 +26676,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -27495,8 +27495,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -31667,8 +31667,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -31681,8 +31681,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -31879,8 +31879,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -31906,8 +31906,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32336,8 +32336,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32349,8 +32349,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32370,8 +32370,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32384,8 +32384,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32406,8 +32406,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32435,8 +32435,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -32729,8 +32729,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36853,8 +36853,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36867,8 +36867,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36881,8 +36881,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36896,8 +36896,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36911,8 +36911,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36925,8 +36925,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36971,8 +36971,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36984,8 +36984,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -36998,8 +36998,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -37288,8 +37288,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -38616,8 +38616,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -38632,8 +38632,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -43491,6 +43491,32 @@
   <summary>Size of messages received by IPC::ChannelReader.</summary>
 </histogram>
 
+<histogram name="Memory.MovableStringParkingAction" enum="ParkingAction">
+  <owner>lizeb@chromium.org</owner>
+  <summary>
+    Recorded each time a Movable String is (un)parked, with the context:
+    foreground/background.
+  </summary>
+</histogram>
+
+<histogram name="Memory.MovableStringsCount" units="count">
+  <owner>lizeb@chromium.org</owner>
+  <summary>
+    This records the number of movable Javascript source string resources in a
+    given renderer, at the time page is backgrounded. Recorded alongside
+    Memory.MovableStringsTotalSizeKb.
+  </summary>
+</histogram>
+
+<histogram name="Memory.MovableStringsTotalSizeKb" units="KB">
+  <owner>lizeb@chromium.org</owner>
+  <summary>
+    This records the total size of movable Javascript source string resources in
+    a given renderer, at the time page is backgrounded. Recorded alongside
+    Memory.MovableStringsCount.
+  </summary>
+</histogram>
+
 <histogram name="Memory.NativeClient" units="KB">
   <obsolete>
     Deprecated 11/2017. No direct replacement.
@@ -46410,8 +46436,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -50772,6 +50798,9 @@
 
 <histogram name="Net.HttpResponseInfo.ConnectionInfo.MainFrame"
     enum="ConnectionInfo">
+  <obsolete>
+    Deprecated as of July 2018.
+  </obsolete>
   <owner>mmenke@chromium.org</owner>
   <summary>
     Application protocol used in HTTP responses to requests for main frames.
@@ -50781,6 +50810,9 @@
 
 <histogram name="Net.HttpResponseInfo.ConnectionInfo.SubResource"
     enum="ConnectionInfo">
+  <obsolete>
+    Deprecated as of July 2018.
+  </obsolete>
   <owner>mmenke@chromium.org</owner>
   <summary>
     Application protocol used in HTTP responses to requests for resources other
@@ -51129,6 +51161,9 @@
 </histogram>
 
 <histogram name="Net.LoadPrefetch.Pattern" enum="PrefetchStatus">
+  <obsolete>
+    Deprecated July 2018
+  </obsolete>
   <owner>droger@chromium.org</owner>
   <owner>mattcary@chromium.org</owner>
   <owner>pasko@chromium.org</owner>
@@ -51630,6 +51665,9 @@
 </histogram>
 
 <histogram name="Net.Prefetch.Pattern" enum="PrefetchStatus">
+  <obsolete>
+    Deprecated July 2018
+  </obsolete>
   <owner>jkarlin@chromium.org</owner>
   <summary>
     The completion status of prefetches that have finished loading.
@@ -51661,6 +51699,9 @@
 </histogram>
 
 <histogram name="Net.Prefetch.TimeBeforeCancel" units="ms">
+  <obsolete>
+    Deprecated July 2018
+  </obsolete>
   <owner>jkarlin@chromium.org</owner>
   <summary>
     Time spent on prefetch requests before the request was canceled.
@@ -51671,6 +51712,9 @@
 </histogram>
 
 <histogram name="Net.Prefetch.TimeSpentOnPrefetchHit" units="ms">
+  <obsolete>
+    Deprecated July 2018
+  </obsolete>
   <owner>jkarlin@chromium.org</owner>
   <summary>
     Time spent on requests that were served from a cache entry whose
@@ -51679,6 +51723,9 @@
 </histogram>
 
 <histogram name="Net.Prefetch.TimeSpentPrefetchingFromCache" units="ms">
+  <obsolete>
+    Deprecated July 2018
+  </obsolete>
   <owner>jkarlin@chromium.org</owner>
   <summary>Time spent on prefetch requests when fetched from cache.</summary>
   <details>
@@ -51687,6 +51734,9 @@
 </histogram>
 
 <histogram name="Net.Prefetch.TimeSpentPrefetchingFromNetwork" units="ms">
+  <obsolete>
+    Deprecated July 2018
+  </obsolete>
   <owner>jkarlin@chromium.org</owner>
   <summary>
     Time spent on prefetch requests when fetched from the network, including
@@ -53935,8 +53985,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -67389,8 +67439,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -67504,8 +67554,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -67518,8 +67568,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -67532,8 +67582,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -69084,6 +69134,17 @@
   </summary>
 </histogram>
 
+<histogram name="PasswordManager.TimeBetweenStoreAndServer" units="ms"
+    expires_after="2018-11-01">
+  <owner>dvadym@chromium.org</owner>
+  <owner>vabr@chromium.org</owner>
+  <summary>
+    The time between receiving saved credentials from the password store and
+    predictions from the Autofill server. Recorded each time when predictions
+    for a form are received.
+  </summary>
+</histogram>
+
 <histogram name="PasswordManager.TimeReadingExportedPasswords" units="ms">
   <owner>cfroussios@chromium.org</owner>
   <owner>ioanap@chromium.org</owner>
@@ -75154,8 +75215,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -79068,8 +79129,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -79085,8 +79146,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -79383,8 +79444,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -79650,8 +79711,27 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
+  </summary>
+</histogram>
+
+<histogram
+    name="RendererScheduler.ExpectedTaskQueueingDurationWithoutMainFrame"
+    units="microseconds">
+  <owner>tdresser@chromium.org</owner>
+  <owner>npm@chromium.org</owner>
+  <summary>
+    The estimated queueing duration which would be observed for additional high
+    priority tasks posted to the RendererScheduler, in microseconds, for
+    renderer processes that do not host any main frame. Recorded for each 1000
+    ms window.
+
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -80260,8 +80340,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -82558,8 +82638,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -83887,8 +83967,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -83903,8 +83983,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85402,8 +85482,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85416,8 +85496,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85454,8 +85534,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85492,8 +85572,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85522,8 +85602,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85552,8 +85632,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85580,8 +85660,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85653,8 +85733,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85681,8 +85761,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85702,8 +85782,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85731,8 +85811,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85749,8 +85829,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85767,8 +85847,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85813,8 +85893,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85846,8 +85926,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85863,8 +85943,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85883,8 +85963,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85908,8 +85988,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85923,8 +86003,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -85953,8 +86033,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96646,8 +96726,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96686,8 +96766,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96758,8 +96838,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96773,8 +96853,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96788,8 +96868,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96878,8 +96958,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -96986,8 +97066,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -97012,8 +97092,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -97278,8 +97358,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -97294,8 +97374,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -101737,8 +101817,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105177,8 +105257,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105256,8 +105336,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105277,8 +105357,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105298,8 +105378,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105341,8 +105421,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105354,8 +105434,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105381,8 +105461,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105403,8 +105483,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105418,8 +105498,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105433,8 +105513,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105448,8 +105528,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105463,8 +105543,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105478,8 +105558,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105493,8 +105573,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105508,8 +105588,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105523,8 +105603,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105538,8 +105618,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105559,8 +105639,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -105624,8 +105704,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106246,8 +106326,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106266,8 +106346,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106280,8 +106360,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106294,8 +106374,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106316,8 +106396,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106342,8 +106422,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106358,8 +106438,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -106536,8 +106616,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -108552,8 +108632,8 @@
     Warning: This metric may include reports from clients with low-resolution
     clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
     will cause this metric to have an abnormal distribution. When considering
-    revising this histogram, see UMA_HISTOGRAM_CUSTOM_HIGH_RESOLUTION_TIMES for
-    the solution.
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -117397,6 +117477,7 @@
   <suffix name="IPH_BadgedReadingList"
       label="In product help badged reading list."/>
   <suffix name="IPH_Bookmark" label="In product help bookmark."/>
+  <suffix name="IPH_BottomToolbarTip" label="In product help bottom toolbar."/>
   <suffix name="IPH_ChromeHomeExpand"
       label="In product help for Chrome Home shown on cold start."/>
   <suffix name="IPH_ChromeHomeMenuHeader"
diff --git a/tools/perf/benchmarks/startup_mobile.py b/tools/perf/benchmarks/startup_mobile.py
index 710b990b..2912cf1 100644
--- a/tools/perf/benchmarks/startup_mobile.py
+++ b/tools/perf/benchmarks/startup_mobile.py
@@ -33,11 +33,8 @@
 # iterations as needed without being affected by pageset-repeat being set by
 # bisect/Pinpoint.
 #
-# Note: this benchmark is not yet ready for FYI bots because:
-# 1. The requests are not routed through WPR yet.
-# 2. The benchmark is not yet careful with evicting OS pagecache at proper
-#    times.
-# As soon as these two functions are implemented, we will replace
+# Note: this benchmark is not yet ready for FYI bots. When we ensure that
+# evicting OS pagecache happens at proper times, we will replace
 # 'experimental.startup.android.coldish' with 'experimental.startup.mobile'.
 # After adding warm starts the resulting benchmark can replace the
 # 'start_with_url.*' family that has aged quite a bit.
@@ -61,15 +58,12 @@
     self._finder_options = finder_options
     self._possible_browser = browser_finder.FindBrowser(self._finder_options)
     self._current_story = None
-
-    # This is an Android-only shared state.
+    # Allow using this shared state only on Android.
     assert isinstance(self.platform, android_platform.AndroidPlatform)
     self._finder_options.browser_options.browser_user_agent_type = 'mobile'
-
-    # TODO(pasko): This will always use live sites. Should use options to
-    # configure network_controller properly. See e.g.: https://goo.gl/nAsyFr
-    self.platform.network_controller.Open(wpr_modes.WPR_OFF)
     self.platform.Initialize()
+    self.platform.network_controller.Open(wpr_modes.WPR_REPLAY)
+    self._story_set = story_set
 
   @property
   def platform(self):
@@ -109,8 +103,10 @@
       self.CloseBrowser(browser)
 
   def WillRunStory(self, story):
-    # TODO(pasko): Should start replay to use WPR recordings.
-    # See e.g.: https://goo.gl/UJuu8a
+    self.platform.network_controller.StartReplay(
+        self._story_set.WprFilePathForStory(story))
+    # Note: There is no need in StopReplay(), the |network_controller| will do
+    # it on Close().
     self._possible_browser.SetUpEnvironment(
         self._finder_options.browser_options)
     self._current_story = story
@@ -136,7 +132,6 @@
     # that occur when closing the browser while tracing is running.  When the
     # linked bug is fixed, it should be possible to replace this with just
     # browser.Close().
-
     try:
       # a) Explicitly call flush tracing so that we retain a copy of the
       # trace from this browser before it's closed.
@@ -159,6 +154,9 @@
     self._action_runner = None
 
   def Run(self, state):
+    """Drives the benchmark with repetitions."""
+    # TODO(pasko): Find a way to fail the benchmark when WPR is set up
+    # incorrectly and error pages get loaded.
     for _ in xrange(10):
       state.LaunchBrowser('http://bbc.co.uk')
       with state.FindBrowser() as browser:
@@ -168,7 +166,9 @@
 
 class _MobileStartupStorySet(story_module.StorySet):
   def __init__(self):
-    super(_MobileStartupStorySet, self).__init__()
+    super(_MobileStartupStorySet, self).__init__(
+          archive_data_file='../page_sets/data/startup_pages.json',
+          cloud_storage_bucket=story_module.PARTNER_BUCKET)
     self.AddStory(_MobileStartupWithIntentStory())
 
 
diff --git a/tools/perf/contrib/orderfile/OWNERS b/tools/perf/contrib/orderfile/OWNERS
new file mode 100644
index 0000000..d45b803a
--- /dev/null
+++ b/tools/perf/contrib/orderfile/OWNERS
@@ -0,0 +1,3 @@
+lizeb@chromium.org
+mattcary@chromium.org
+pasko@chromium.org
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py
index 3a356d94a..e89ccaa 100755
--- a/tools/perf/core/perf_data_generator.py
+++ b/tools/perf/core/perf_data_generator.py
@@ -111,161 +111,6 @@
     waterfall = add_builder(
         waterfall, builder, additional_compile_targets=targets)
 
-  # These configurations are taken from chromium_perf.py in
-  # build/scripts/slave/recipe_modules/chromium_tests and must be kept in sync
-  # to generate the correct json for each tester
-  waterfall = add_tester(
-    waterfall, 'Android Nexus5X Perf', 'android-nexus5X', 'android',
-    swarming=[
-      {
-       'os': 'Android',
-       'pool': 'chrome.tests.perf',
-       'device_os': 'MMB29Q',
-       'device_type': 'bullhead',
-       'device_os_flavor': 'google',
-       'device_ids': [
-           'build211-b7--device1', 'build211-b7--device2',
-           'build211-b7--device3', 'build211-b7--device4',
-           'build211-b7--device5', 'build211-b7--device6',
-           'build211-b7--device7',
-           'build212-b7--device1', 'build212-b7--device2',
-           'build212-b7--device3', 'build212-b7--device4',
-           'build212-b7--device5', 'build212-b7--device6',
-           'build212-b7--device7',
-           'build213-b7--device1', 'build213-b7--device2',
-           'build213-b7--device3', 'build213-b7--device4',
-           'build213-b7--device5', 'build213-b7--device6',
-           'build213-b7--device7',
-          ],
-       'perf_tests': [
-         ('tracing_perftests', 'build211-b7--device2'),
-         ('gpu_perftests', 'build211-b7--device2'),
-         ('media_perftests', 'build212-b7--device7'),
-         ('components_perftests', 'build212-b7--device1'),
-       ],
-       'perf_tests_with_args': [
-         ('angle_perftests', 'build211-b7--device4', ['--shard-timeout=300'],
-           'angle_perftests'),
-       ]
-      }
-    ])
-  waterfall = add_tester(
-    waterfall, 'Android Nexus5 Perf', 'android-nexus5', 'android',
-    swarming=[
-      {
-       'os': 'Android',
-       'pool': 'chrome.tests.perf',
-       'device_os': 'KOT49H',
-       'device_type': 'hammerhead',
-       'device_os_flavor': 'google',
-       'device_ids': [
-           'build199-b7--device1', 'build199-b7--device2',
-           'build199-b7--device3', 'build199-b7--device4',
-           'build199-b7--device5', 'build199-b7--device6',
-           'build199-b7--device7',
-           'build200-b7--device1', 'build200-b7--device2',
-           'build200-b7--device3', 'build200-b7--device4',
-           'build200-b7--device5', 'build200-b7--device6',
-           'build200-b7--device7',
-           'build201-b7--device1', 'build201-b7--device2',
-           'build201-b7--device3', 'build201-b7--device4',
-           'build201-b7--device5', 'build201-b7--device6',
-           'build201-b7--device7',
-          ],
-       'perf_tests': [
-         ('tracing_perftests', 'build199-b7--device2'),
-         ('gpu_perftests', 'build199-b7--device2'),
-         ('components_perftests', 'build201-b7--device5'),
-        ],
-       'perf_tests_with_args': [
-         ('angle_perftests', 'build199-b7--device3', ['--shard-timeout=300'],
-           'angle_perftests'),
-       ]
-      }
-    ])
-
-  waterfall = add_tester(
-    waterfall, 'Android One Perf', 'android-nexus7v2', 'android',
-    swarming=[
-      {
-       'os': 'Android',
-       'pool': 'chrome.tests.perf',
-       'device_os': 'LMY47W',
-       'device_type': 'sprout',
-       'device_os_flavor': 'google',
-       'device_ids': [
-           'build191-b7--device1', 'build191-b7--device2',
-           'build191-b7--device3', 'build191-b7--device4',
-           'build191-b7--device5', 'build191-b7--device6',
-           'build191-b7--device7',
-           'build192-b7--device1', 'build192-b7--device2',
-           'build192-b7--device3', 'build192-b7--device4',
-           'build192-b7--device5', 'build192-b7--device6',
-           'build192-b7--device7',
-           'build193-b7--device1', 'build193-b7--device2',
-           'build193-b7--device3', 'build193-b7--device4',
-           'build193-b7--device5', 'build193-b7--device6',
-           'build193-b7--device7',
-          ],
-       'perf_tests': [
-         ('tracing_perftests', 'build191-b7--device2'),
-         # ('gpu_perftests', 'build192-b7--device2'), https://crbug.com/775219
-        ]
-      }
-    ])
-
-  waterfall = add_tester(
-    waterfall, 'Android Nexus5X WebView Perf', 'android-webview-nexus5X',
-    'android', swarming=[
-      {
-       'os': 'Android',
-       'pool': 'chrome.tests.perf-webview',
-       'device_os': 'MOB30K',
-       'device_type': 'bullhead',
-       'device_os_flavor': 'aosp',
-       'device_ids': [
-           'build188-b7--device1', 'build188-b7--device2',
-           'build188-b7--device3', 'build188-b7--device4',
-           'build188-b7--device5', 'build188-b7--device6',
-           'build188-b7--device7',
-           'build189-b7--device1', 'build189-b7--device2',
-           'build189-b7--device3', 'build189-b7--device4',
-           'build189-b7--device5', 'build189-b7--device6',
-           'build189-b7--device7',
-           'build190-b7--device1', 'build190-b7--device2',
-           'build190-b7--device3', 'build190-b7--device4',
-           'build190-b7--device5', 'build190-b7--device6',
-           'build190-b7--device7',
-          ],
-      }
-    ], replace_system_webview=True)
-
-  waterfall = add_tester(
-    waterfall, 'Android Nexus6 WebView Perf', 'android-webview-nexus6',
-    'android', swarming=[
-      {
-       'os': 'Android',
-       'pool': 'chrome.tests.perf-webview',
-       'device_os': 'MOB30K',
-       'device_type': 'shamu',
-       'device_os_flavor': 'aosp',
-       'device_ids': [
-           'build202-b7--device1', 'build202-b7--device2',
-           'build202-b7--device3', 'build202-b7--device4',
-           'build202-b7--device5', 'build202-b7--device6',
-           'build202-b7--device7',
-           'build203-b7--device1', 'build203-b7--device2',
-           'build203-b7--device3', 'build203-b7--device4',
-           'build203-b7--device5', 'build203-b7--device6',
-           'build203-b7--device7',
-           'build204-b7--device1', 'build204-b7--device2',
-           'build204-b7--device3', 'build204-b7--device4',
-           'build204-b7--device5', 'build204-b7--device6',
-           'build204-b7--device7',
-          ],
-      }
-    ], replace_system_webview=True)
-
   return waterfall
 
 
@@ -732,7 +577,8 @@
       # TODO(eyaich): Determine new way to generate ownership based
       # on the benchmark bot map instead of on the generated tests
       # for new perf recipe.
-      if name is 'performance_test_suite':
+      if (name is 'performance_test_suite'
+          or name is 'performance_webview_test_suite'):
         continue
       test_names.add(name)
 
@@ -960,8 +806,172 @@
   }
 }
 
+# These configurations are taken from chromium_perf.py in
+# build/scripts/slave/recipe_modules/chromium_tests and must be kept in sync
+# to generate the correct json for each tester
 NEW_PERF_RECIPE_MIGRATED_TESTERS = {
   'testers' : {
+    'Android Nexus5X Perf': {
+      'tests': [
+        {
+          'isolate': 'performance_test_suite',
+          'num_shards': 16,
+          'extra_args': [
+              '--run-ref-build',
+              '--test-shard-map-filename=android_nexus5x_16_shard_map.json',
+          ],
+        },
+        {
+          'isolate': 'media_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'components_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'tracing_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'gpu_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'angle_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+          'extra_args': [
+              '--shard-timeout=300'
+          ],
+        }
+      ],
+      'platform': 'android',
+      'dimension': {
+        'pool': 'chrome.tests.perf',
+        'os': 'Android',
+        'device_type': 'bullhead',
+        'device_os': 'MMB29Q',
+        'device_os_flavor': 'google',
+      },
+      'device_ids': [],
+    },
+    'Android Nexus5 Perf': {
+      'tests': [
+        {
+          'isolate': 'performance_test_suite',
+          'num_shards': 16,
+          'extra_args': [
+              '--run-ref-build',
+              '--test-shard-map-filename=android_nexus5_16_shard_map.json',
+          ],
+        },
+        {
+          'isolate': 'tracing_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'components_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'gpu_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        },
+        {
+          'isolate': 'angle_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+          'extra_args': [
+              '--shard-timeout=300'
+          ],
+        }
+      ],
+      'platform': 'android',
+      'dimension': {
+        'pool': 'chrome.tests.perf',
+        'os': 'Android',
+        'device_type': 'hammerhead',
+        'device_os': 'KOT49H',
+        'device_os_flavor': 'google',
+      },
+      'device_ids': [],
+    },
+    'Android One Perf': {
+      'tests': [
+        {
+          'isolate': 'performance_test_suite',
+          'num_shards': 16,
+          'extra_args': [
+              '--run-ref-build',
+              '--test-shard-map-filename=android_one_16_shard_map.json',
+          ],
+        },
+        {
+          'isolate': 'tracing_perftests',
+          'num_shards': 1,
+          'telemetry': False,
+        }
+      ],
+      'platform': 'android',
+      'dimension': {
+        'pool': 'chrome.tests.perf',
+        'os': 'Android',
+        'device_type': 'sprout',
+        'device_os': 'LMY47W',
+        'device_os_flavor': 'google',
+      },
+      'device_ids': [],
+    },
+    'Android Nexus5X WebView Perf': {
+      'tests': [
+        {
+          'isolate': 'performance_webview_test_suite',
+          'num_shards': 16,
+          'extra_args': [
+              '--run-ref-build',
+              '--test-shard-map-filename=android_nexus5x_webview_16_shard_map.json',
+          ],
+        }
+      ],
+      'platform': 'android',
+      'dimension': {
+        'pool': 'chrome.tests.perf-webview',
+        'os': 'Android',
+        'device_type': 'bullhead',
+        'device_os': 'MOB30K',
+        'device_os_flavor': 'aosp',
+      },
+      'device_ids': [],
+    },
+    'Android Nexus6 WebView Perf': {
+      'tests': [
+        {
+          'isolate': 'performance_webview_test_suite',
+          'num_shards': 16,
+          'extra_args': [
+              '--run-ref-build',
+              '--test-shard-map-filename=android_nexus6_webview_16_shard_map.json',
+          ],
+        }
+      ],
+      'platform': 'android',
+      'dimension': {
+        'pool': 'chrome.tests.perf-webview',
+        'os': 'Android',
+        'device_type': 'shamu',
+        'device_os': 'MOB30K',
+        'device_os_flavor': 'aosp',
+      },
+      'device_ids': [],
+    },
     'Win 10 High-DPI Perf': {
       'tests': [
         {
diff --git a/tools/perf/core/perf_json_config_validator.py b/tools/perf/core/perf_json_config_validator.py
index 28a92ba..5cfc978 100644
--- a/tools/perf/core/perf_json_config_validator.py
+++ b/tools/perf/core/perf_json_config_validator.py
@@ -12,7 +12,6 @@
     'gpu', 'device_ids', 'os', 'pool', 'perf_tests', 'perf_tests_with_args',
     'device_os', 'device_type', 'device_os_flavor', 'id'}
 _VALID_PERF_POOLS = {
-    'Chrome-perf',
     'chrome.tests.perf', 'chrome.tests.perf-webview',
     'chrome.tests.perf-fyi', 'chrome.tests.perf-webview-fyi'}
 
diff --git a/tools/perf/core/shard_maps/android_nexus5_16_shard_map.json b/tools/perf/core/shard_maps/android_nexus5_16_shard_map.json
new file mode 100644
index 0000000..c1dc63d6
--- /dev/null
+++ b/tools/perf/core/shard_maps/android_nexus5_16_shard_map.json
@@ -0,0 +1,198 @@
+{
+    "0": {
+        "benchmarks": {
+            "system_health.common_mobile": {},
+            "v8.browsing_mobile-future": {
+                "end": 1
+            }
+        }
+    },
+    "1": {
+        "benchmarks": {
+            "v8.browsing_mobile-future": {
+                "begin": 1
+            },
+            "rendering.mobile": {
+                "end": 38
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 38,
+                "end": 154
+            }
+        }
+    },
+    "3": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 154,
+                "end": 287
+            }
+        }
+    },
+    "4": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 287,
+                "end": 402
+            }
+        }
+    },
+    "5": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 402
+            },
+            "blink_perf.image_decoder": {},
+            "power.desktop": {},
+            "speedometer-future": {},
+            "blink_perf.owp_storage": {},
+            "memory.desktop": {},
+            "start_with_url.warm.startup_pages": {},
+            "wasm": {},
+            "dummy_benchmark.histogram_benchmark_1": {},
+            "speedometer": {},
+            "memory.long_running_idle_gmail_tbmv2": {},
+            "octane": {},
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "blink_perf.svg": {
+                "end": 17
+            }
+        }
+    },
+    "6": {
+        "benchmarks": {
+            "blink_perf.svg": {
+                "begin": 17
+            },
+            "system_health.webview_startup": {},
+            "speedometer2-future": {},
+            "jetstream": {},
+            "smoothness.tough_pinch_zoom_cases": {},
+            "power.idle_platform": {},
+            "power.typical_10_mobile": {},
+            "v8.runtime_stats.top_25": {},
+            "loading.mobile": {
+                "end": 13
+            }
+        }
+    },
+    "7": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 13,
+                "end": 51
+            }
+        }
+    },
+    "8": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 51,
+                "end": 90
+            }
+        }
+    },
+    "9": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 90
+            },
+            "speedometer2": {},
+            "v8.browsing_desktop-future": {},
+            "webrtc": {},
+            "blink_perf.shadow_dom": {},
+            "blink_perf.events": {},
+            "blink_perf.layout": {
+                "end": 56
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "blink_perf.layout": {
+                "begin": 56
+            },
+            "memory.long_running_idle_gmail_background_tbmv2": {},
+            "tab_switching.typical_25": {},
+            "blink_perf.dom": {},
+            "media.mobile": {},
+            "start_with_url.cold.startup_pages": {},
+            "blink_perf.bindings": {},
+            "system_health.memory_desktop": {},
+            "media.desktop": {},
+            "smoothness.gpu_rasterization.tough_pinch_zoom_cases": {},
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "v8.browsing_desktop": {},
+            "blink_perf.parser": {
+                "end": 2
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "blink_perf.parser": {
+                "begin": 2
+            },
+            "memory.top_10_mobile": {},
+            "blink_perf.canvas": {
+                "end": 10
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "blink_perf.canvas": {
+                "begin": 10
+            },
+            "loading.desktop": {},
+            "dromaeo": {},
+            "kraken": {},
+            "oortonline_tbmv2": {},
+            "system_health.common_desktop": {},
+            "rasterize_and_record_micro.top_25": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "system_health.memory_mobile": {
+                "end": 14
+            }
+        }
+    },
+    "13": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 14,
+                "end": 44
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 44,
+                "end": 61
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 61
+            },
+            "rendering.desktop": {},
+            "blink_perf.css": {},
+            "v8.browsing_mobile": {},
+            "blink_perf.paint": {},
+            "tracing.tracing_with_background_memory_infra": {}
+        }
+    },
+    "extra_infos": {
+        "num_stories": 1831,
+        "predicted_min_shard_time": 6474.900130548907,
+        "predicted_min_shard_index": 5,
+        "predicted_max_shard_time": 7029.422927251217,
+        "predicted_max_shard_index": 8
+    }
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus5x_16_shard_map.json b/tools/perf/core/shard_maps/android_nexus5x_16_shard_map.json
new file mode 100644
index 0000000..a8db406
--- /dev/null
+++ b/tools/perf/core/shard_maps/android_nexus5x_16_shard_map.json
@@ -0,0 +1,193 @@
+{
+    "0": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "end": 56
+            }
+        }
+    },
+    "1": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 56
+            },
+            "v8.browsing_mobile-future": {},
+            "rendering.mobile": {
+                "end": 20
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 20,
+                "end": 134
+            }
+        }
+    },
+    "3": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 134,
+                "end": 261
+            }
+        }
+    },
+    "4": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 261,
+                "end": 380
+            }
+        }
+    },
+    "5": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 380
+            },
+            "blink_perf.image_decoder": {},
+            "power.desktop": {},
+            "speedometer-future": {},
+            "blink_perf.owp_storage": {},
+            "memory.desktop": {},
+            "start_with_url.warm.startup_pages": {},
+            "wasm": {},
+            "dummy_benchmark.histogram_benchmark_1": {},
+            "speedometer": {},
+            "memory.long_running_idle_gmail_tbmv2": {},
+            "octane": {}
+        }
+    },
+    "6": {
+        "benchmarks": {
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "blink_perf.svg": {},
+            "system_health.webview_startup": {},
+            "speedometer2-future": {},
+            "jetstream": {},
+            "smoothness.tough_pinch_zoom_cases": {},
+            "power.idle_platform": {},
+            "power.typical_10_mobile": {},
+            "v8.runtime_stats.top_25": {},
+            "loading.mobile": {
+                "end": 9
+            }
+        }
+    },
+    "7": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 9,
+                "end": 32
+            }
+        }
+    },
+    "8": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 32,
+                "end": 73
+            }
+        }
+    },
+    "9": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 73
+            },
+            "speedometer2": {},
+            "v8.browsing_desktop-future": {},
+            "webrtc": {
+                "end": 7
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "webrtc": {
+                "begin": 7
+            },
+            "blink_perf.shadow_dom": {},
+            "blink_perf.events": {},
+            "blink_perf.layout": {},
+            "memory.long_running_idle_gmail_background_tbmv2": {},
+            "tab_switching.typical_25": {},
+            "blink_perf.dom": {},
+            "media.mobile": {},
+            "start_with_url.cold.startup_pages": {
+                "end": 1
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "start_with_url.cold.startup_pages": {
+                "begin": 1
+            },
+            "blink_perf.bindings": {},
+            "system_health.memory_desktop": {},
+            "media.desktop": {},
+            "smoothness.gpu_rasterization.tough_pinch_zoom_cases": {},
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "v8.browsing_desktop": {},
+            "blink_perf.parser": {},
+            "memory.top_10_mobile": {
+                "end": 11
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "memory.top_10_mobile": {
+                "begin": 11
+            },
+            "blink_perf.canvas": {},
+            "loading.desktop": {},
+            "dromaeo": {},
+            "kraken": {},
+            "oortonline_tbmv2": {},
+            "system_health.common_desktop": {},
+            "rasterize_and_record_micro.top_25": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "system_health.memory_mobile": {
+                "end": 8
+            }
+        }
+    },
+    "13": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 8,
+                "end": 40
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 40,
+                "end": 60
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 60
+            },
+            "rendering.desktop": {},
+            "blink_perf.css": {},
+            "v8.browsing_mobile": {},
+            "blink_perf.paint": {},
+            "tracing.tracing_with_background_memory_infra": {}
+        }
+    },
+    "extra_infos": {
+        "num_stories": 1831,
+        "predicted_min_shard_time": 6374.08457633656,
+        "predicted_min_shard_index": 13,
+        "predicted_max_shard_time": 6578.783756939434,
+        "predicted_max_shard_index": 15
+    }
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus5x_webview_16_shard_map.json b/tools/perf/core/shard_maps/android_nexus5x_webview_16_shard_map.json
new file mode 100644
index 0000000..6a017ed
--- /dev/null
+++ b/tools/perf/core/shard_maps/android_nexus5x_webview_16_shard_map.json
@@ -0,0 +1,189 @@
+{
+    "0": {
+        "benchmarks": {
+            "system_health.common_mobile": {}
+        }
+    },
+    "1": {
+        "benchmarks": {
+            "v8.browsing_mobile-future": {},
+            "rendering.mobile": {
+                "end": 34
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 34,
+                "end": 119
+            }
+        }
+    },
+    "3": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 119,
+                "end": 214
+            }
+        }
+    },
+    "4": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 214,
+                "end": 355
+            }
+        }
+    },
+    "5": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 355
+            },
+            "blink_perf.image_decoder": {},
+            "power.desktop": {},
+            "speedometer-future": {},
+            "blink_perf.owp_storage": {},
+            "memory.desktop": {},
+            "start_with_url.warm.startup_pages": {},
+            "wasm": {},
+            "dummy_benchmark.histogram_benchmark_1": {},
+            "speedometer": {},
+            "memory.long_running_idle_gmail_tbmv2": {}
+        }
+    },
+    "6": {
+        "benchmarks": {
+            "octane": {},
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "blink_perf.svg": {},
+            "system_health.webview_startup": {},
+            "speedometer2-future": {},
+            "jetstream": {},
+            "smoothness.tough_pinch_zoom_cases": {},
+            "power.idle_platform": {},
+            "power.typical_10_mobile": {},
+            "v8.runtime_stats.top_25": {},
+            "loading.mobile": {
+                "end": 2
+            }
+        }
+    },
+    "7": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 2,
+                "end": 36
+            }
+        }
+    },
+    "8": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 36,
+                "end": 73
+            }
+        }
+    },
+    "9": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 73
+            },
+            "speedometer2": {},
+            "v8.browsing_desktop-future": {},
+            "webrtc": {},
+            "blink_perf.shadow_dom": {},
+            "blink_perf.events": {},
+            "blink_perf.layout": {
+                "end": 18
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "blink_perf.layout": {
+                "begin": 18
+            },
+            "memory.long_running_idle_gmail_background_tbmv2": {},
+            "tab_switching.typical_25": {},
+            "blink_perf.dom": {},
+            "media.mobile": {},
+            "start_with_url.cold.startup_pages": {},
+            "blink_perf.bindings": {},
+            "system_health.memory_desktop": {},
+            "media.desktop": {},
+            "smoothness.gpu_rasterization.tough_pinch_zoom_cases": {
+                "end": 1
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "smoothness.gpu_rasterization.tough_pinch_zoom_cases": {
+                "begin": 1
+            },
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "v8.browsing_desktop": {},
+            "blink_perf.parser": {},
+            "memory.top_10_mobile": {
+                "end": 16
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "memory.top_10_mobile": {
+                "begin": 16
+            },
+            "blink_perf.canvas": {},
+            "loading.desktop": {},
+            "dromaeo": {},
+            "kraken": {},
+            "oortonline_tbmv2": {},
+            "system_health.common_desktop": {},
+            "rasterize_and_record_micro.top_25": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "system_health.memory_mobile": {
+                "end": 8
+            }
+        }
+    },
+    "13": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 8,
+                "end": 34
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 34
+            },
+            "rendering.desktop": {},
+            "blink_perf.css": {
+                "end": 26
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "blink_perf.css": {
+                "begin": 26
+            },
+            "v8.browsing_mobile": {},
+            "blink_perf.paint": {},
+            "tracing.tracing_with_background_memory_infra": {}
+        }
+    },
+    "extra_infos": {
+        "num_stories": 1831,
+        "predicted_min_shard_time": 5465.107848972246,
+        "predicted_min_shard_index": 8,
+        "predicted_max_shard_time": 5846.401148678389,
+        "predicted_max_shard_index": 9
+    }
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_nexus6_webview_16_shard_map.json b/tools/perf/core/shard_maps/android_nexus6_webview_16_shard_map.json
new file mode 100644
index 0000000..a8dc022a
--- /dev/null
+++ b/tools/perf/core/shard_maps/android_nexus6_webview_16_shard_map.json
@@ -0,0 +1,195 @@
+{
+    "0": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "end": 59
+            }
+        }
+    },
+    "1": {
+        "benchmarks": {
+            "system_health.common_mobile": {
+                "begin": 59
+            },
+            "v8.browsing_mobile-future": {
+                "end": 23
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "v8.browsing_mobile-future": {
+                "begin": 23
+            },
+            "rendering.mobile": {
+                "end": 83
+            }
+        }
+    },
+    "3": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 83,
+                "end": 183
+            }
+        }
+    },
+    "4": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 183,
+                "end": 311
+            }
+        }
+    },
+    "5": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 311,
+                "end": 410
+            }
+        }
+    },
+    "6": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 410
+            },
+            "blink_perf.image_decoder": {},
+            "power.desktop": {},
+            "speedometer-future": {},
+            "blink_perf.owp_storage": {},
+            "memory.desktop": {},
+            "start_with_url.warm.startup_pages": {},
+            "wasm": {},
+            "dummy_benchmark.histogram_benchmark_1": {},
+            "speedometer": {},
+            "memory.long_running_idle_gmail_tbmv2": {},
+            "octane": {},
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "blink_perf.svg": {}
+        }
+    },
+    "7": {
+        "benchmarks": {
+            "system_health.webview_startup": {},
+            "speedometer2-future": {},
+            "jetstream": {},
+            "smoothness.tough_pinch_zoom_cases": {},
+            "power.idle_platform": {},
+            "power.typical_10_mobile": {},
+            "v8.runtime_stats.top_25": {},
+            "loading.mobile": {},
+            "speedometer2": {},
+            "v8.browsing_desktop-future": {},
+            "webrtc": {
+                "end": 4
+            }
+        }
+    },
+    "8": {
+        "benchmarks": {
+            "webrtc": {
+                "begin": 4
+            },
+            "blink_perf.shadow_dom": {},
+            "blink_perf.events": {},
+            "blink_perf.layout": {},
+            "memory.long_running_idle_gmail_background_tbmv2": {},
+            "tab_switching.typical_25": {},
+            "blink_perf.dom": {
+                "end": 3
+            }
+        }
+    },
+    "9": {
+        "benchmarks": {
+            "blink_perf.dom": {
+                "begin": 3
+            },
+            "media.mobile": {},
+            "start_with_url.cold.startup_pages": {},
+            "blink_perf.bindings": {},
+            "system_health.memory_desktop": {},
+            "media.desktop": {},
+            "smoothness.gpu_rasterization.tough_pinch_zoom_cases": {},
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "v8.browsing_desktop": {},
+            "blink_perf.parser": {},
+            "memory.top_10_mobile": {
+                "end": 2
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "memory.top_10_mobile": {
+                "begin": 2
+            },
+            "blink_perf.canvas": {},
+            "loading.desktop": {},
+            "dromaeo": {
+                "end": 1
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "dromaeo": {
+                "begin": 1
+            },
+            "kraken": {},
+            "oortonline_tbmv2": {},
+            "system_health.common_desktop": {},
+            "rasterize_and_record_micro.top_25": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "system_health.memory_mobile": {
+                "end": 11
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 11,
+                "end": 25
+            }
+        }
+    },
+    "13": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 25,
+                "end": 56
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 56
+            },
+            "rendering.desktop": {},
+            "blink_perf.css": {},
+            "v8.browsing_mobile": {
+                "end": 11
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "v8.browsing_mobile": {
+                "begin": 11
+            },
+            "blink_perf.paint": {},
+            "tracing.tracing_with_background_memory_infra": {}
+        }
+    },
+    "extra_infos": {
+        "num_stories": 1831,
+        "predicted_min_shard_time": 4026.912091346061,
+        "predicted_min_shard_index": 6,
+        "predicted_max_shard_time": 4917.357624929295,
+        "predicted_max_shard_index": 7
+    }
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/android_one_16_shard_map.json b/tools/perf/core/shard_maps/android_one_16_shard_map.json
new file mode 100644
index 0000000..6c847331
--- /dev/null
+++ b/tools/perf/core/shard_maps/android_one_16_shard_map.json
@@ -0,0 +1,188 @@
+{
+    "0": {
+        "benchmarks": {
+            "system_health.common_mobile": {}
+        }
+    },
+    "1": {
+        "benchmarks": {
+            "v8.browsing_mobile-future": {},
+            "rendering.mobile": {
+                "end": 66
+            }
+        }
+    },
+    "2": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 66,
+                "end": 179
+            }
+        }
+    },
+    "3": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 179,
+                "end": 301
+            }
+        }
+    },
+    "4": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 301,
+                "end": 405
+            }
+        }
+    },
+    "5": {
+        "benchmarks": {
+            "rendering.mobile": {
+                "begin": 405
+            },
+            "blink_perf.image_decoder": {},
+            "power.desktop": {},
+            "speedometer-future": {},
+            "blink_perf.owp_storage": {},
+            "memory.desktop": {},
+            "start_with_url.warm.startup_pages": {},
+            "wasm": {},
+            "dummy_benchmark.histogram_benchmark_1": {},
+            "speedometer": {},
+            "memory.long_running_idle_gmail_tbmv2": {},
+            "octane": {},
+            "dummy_benchmark.noisy_benchmark_1": {},
+            "blink_perf.svg": {},
+            "system_health.webview_startup": {},
+            "speedometer2-future": {}
+        }
+    },
+    "6": {
+        "benchmarks": {
+            "jetstream": {},
+            "smoothness.tough_pinch_zoom_cases": {},
+            "power.idle_platform": {},
+            "power.typical_10_mobile": {},
+            "v8.runtime_stats.top_25": {},
+            "loading.mobile": {
+                "end": 16
+            }
+        }
+    },
+    "7": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 16,
+                "end": 44
+            }
+        }
+    },
+    "8": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 44,
+                "end": 81
+            }
+        }
+    },
+    "9": {
+        "benchmarks": {
+            "loading.mobile": {
+                "begin": 81
+            },
+            "speedometer2": {},
+            "v8.browsing_desktop-future": {},
+            "webrtc": {},
+            "blink_perf.shadow_dom": {},
+            "blink_perf.events": {},
+            "blink_perf.layout": {
+                "end": 4
+            }
+        }
+    },
+    "10": {
+        "benchmarks": {
+            "blink_perf.layout": {
+                "begin": 4
+            },
+            "memory.long_running_idle_gmail_background_tbmv2": {},
+            "tab_switching.typical_25": {},
+            "blink_perf.dom": {},
+            "media.mobile": {},
+            "start_with_url.cold.startup_pages": {},
+            "blink_perf.bindings": {
+                "end": 6
+            }
+        }
+    },
+    "11": {
+        "benchmarks": {
+            "blink_perf.bindings": {
+                "begin": 6
+            },
+            "system_health.memory_desktop": {},
+            "media.desktop": {},
+            "smoothness.gpu_rasterization.tough_pinch_zoom_cases": {},
+            "rasterize_and_record_micro.partial_invalidation": {},
+            "v8.browsing_desktop": {},
+            "blink_perf.parser": {},
+            "memory.top_10_mobile": {
+                "end": 14
+            }
+        }
+    },
+    "12": {
+        "benchmarks": {
+            "memory.top_10_mobile": {
+                "begin": 14
+            },
+            "blink_perf.canvas": {},
+            "loading.desktop": {},
+            "dromaeo": {},
+            "kraken": {},
+            "oortonline_tbmv2": {},
+            "system_health.common_desktop": {},
+            "rasterize_and_record_micro.top_25": {},
+            "dummy_benchmark.stable_benchmark_1": {},
+            "system_health.memory_mobile": {
+                "end": 8
+            }
+        }
+    },
+    "13": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 8,
+                "end": 30
+            }
+        }
+    },
+    "14": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 30,
+                "end": 56
+            }
+        }
+    },
+    "15": {
+        "benchmarks": {
+            "system_health.memory_mobile": {
+                "begin": 56
+            },
+            "rendering.desktop": {},
+            "blink_perf.css": {},
+            "v8.browsing_mobile": {},
+            "blink_perf.paint": {},
+            "tracing.tracing_with_background_memory_infra": {}
+        }
+    },
+    "extra_infos": {
+        "num_stories": 1831,
+        "predicted_min_shard_time": 6597.883216755167,
+        "predicted_min_shard_index": 5,
+        "predicted_max_shard_time": 7949.06828325507,
+        "predicted_max_shard_index": 6
+    }
+}
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/benchmark_bot_map.json b/tools/perf/core/shard_maps/benchmark_bot_map.json
index cc8b2e5..32163ac8 100644
--- a/tools/perf/core/shard_maps/benchmark_bot_map.json
+++ b/tools/perf/core/shard_maps/benchmark_bot_map.json
@@ -5,9 +5,6 @@
       "blink_perf.owp_storage": {
         "end": 3
       },
-      "scheduler.tough_scheduling_cases": {
-        "end": 2
-      },
       "system_health.memory_mobile": {},
       "blink_perf.paint": {
         "end": 4
@@ -21,9 +18,6 @@
         "begin":3
       },
       "memory.top_10_mobile": {},
-      "scheduler.tough_scheduling_cases": {
-        "begin": 2
-      },
       "blink_perf.paint": {
         "begin": 4,
         "end": 10
@@ -35,8 +29,7 @@
       "blink_perf.paint": {
         "begin": 10
       },
-      "rasterize_and_record_micro.partial_invalidation": {},
-      "smoothness.tough_pinch_zoom_cases": {}
+      "rasterize_and_record_micro.partial_invalidation": {}
     }
   }
 }
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5_story_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5_story_timing.json
new file mode 100644
index 0000000..e7375333
--- /dev/null
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus5_story_timing.json
@@ -0,0 +1,8110 @@
+[
+    {
+        "duration": "28.55544418181817",
+        "name": "blink_perf.bindings/append-child.html"
+    },
+    {
+        "duration": "14.91228509595959",
+        "name": "blink_perf.bindings/create-element.html"
+    },
+    {
+        "duration": "14.31976860101011",
+        "name": "blink_perf.bindings/document-implementation.html"
+    },
+    {
+        "duration": "15.781693545454548",
+        "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
+    },
+    {
+        "duration": "14.957782111111106",
+        "name": "blink_perf.bindings/first-child.html"
+    },
+    {
+        "duration": "33.71667009090908",
+        "name": "blink_perf.bindings/gc-forest.html"
+    },
+    {
+        "duration": "67.31368998989902",
+        "name": "blink_perf.bindings/gc-mini-tree.html"
+    },
+    {
+        "duration": "137.70375152525253",
+        "name": "blink_perf.bindings/gc-tree.html"
+    },
+    {
+        "duration": "13.268331626262626",
+        "name": "blink_perf.bindings/get-attribute-rare.html"
+    },
+    {
+        "duration": "14.701780636363642",
+        "name": "blink_perf.bindings/get-attribute.html"
+    },
+    {
+        "duration": "13.945697479797976",
+        "name": "blink_perf.bindings/get-element-by-id.html"
+    },
+    {
+        "duration": "13.729081136363638",
+        "name": "blink_perf.bindings/get-elements-by-tag-name.html"
+    },
+    {
+        "duration": "14.311148959595963",
+        "name": "blink_perf.bindings/id-getter.html"
+    },
+    {
+        "duration": "15.67385517171718",
+        "name": "blink_perf.bindings/id-setter.html"
+    },
+    {
+        "duration": "19.661097919191917",
+        "name": "blink_perf.bindings/indexed-getter.html"
+    },
+    {
+        "duration": "13.785340898989903",
+        "name": "blink_perf.bindings/insert-before.html"
+    },
+    {
+        "duration": "14.337335358585856",
+        "name": "blink_perf.bindings/named-property-enumerator.html"
+    },
+    {
+        "duration": "155.54715343434341",
+        "name": "blink_perf.bindings/node-list-access.html"
+    },
+    {
+        "duration": "15.403178499999997",
+        "name": "blink_perf.bindings/node-type.html"
+    },
+    {
+        "duration": "9.790164444444446",
+        "name": "blink_perf.bindings/post-message.html"
+    },
+    {
+        "duration": "13.630158792929297",
+        "name": "blink_perf.bindings/sequence-conversion-array.html"
+    },
+    {
+        "duration": "16.941558186868694",
+        "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
+    },
+    {
+        "duration": "8.881062757575759",
+        "name": "blink_perf.bindings/serialize-array.html"
+    },
+    {
+        "duration": "7.56417060909091",
+        "name": "blink_perf.bindings/serialize-long-string.html"
+    },
+    {
+        "duration": "18.243643959595953",
+        "name": "blink_perf.bindings/serialize-map.html"
+    },
+    {
+        "duration": "7.423392920202019",
+        "name": "blink_perf.bindings/serialize-nested-array.html"
+    },
+    {
+        "duration": "13.837340292929294",
+        "name": "blink_perf.bindings/set-attribute-rare.html"
+    },
+    {
+        "duration": "13.573585924242431",
+        "name": "blink_perf.bindings/set-attribute.html"
+    },
+    {
+        "duration": "60.05069352525252",
+        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
+    },
+    {
+        "duration": "59.78463387878791",
+        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
+    },
+    {
+        "duration": "20.633834838383834",
+        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
+    },
+    {
+        "duration": "20.63194224242424",
+        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
+    },
+    {
+        "duration": "14.826819949494947",
+        "name": "blink_perf.bindings/typed-array-construct-from-array.html"
+    },
+    {
+        "duration": "15.369076363636358",
+        "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
+    },
+    {
+        "duration": "14.753211232323235",
+        "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
+    },
+    {
+        "duration": "13.415091767676769",
+        "name": "blink_perf.bindings/typed-array-set-from-typed.html"
+    },
+    {
+        "duration": "15.040553601010098",
+        "name": "blink_perf.bindings/undefined-first-child.html"
+    },
+    {
+        "duration": "13.671427459595956",
+        "name": "blink_perf.bindings/undefined-get-element-by-id.html"
+    },
+    {
+        "duration": "14.910579843434343",
+        "name": "blink_perf.bindings/undefined-id-getter.html"
+    },
+    {
+        "duration": "26.149454707070706",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "5.711958992307693E-4",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "50.52244675757576",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.695243328282828",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "0.0011063722607692306",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "11.399953489898987",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "14.042262686868689",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "18.11296811111112",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
+    },
+    {
+        "duration": "17.66389268686869",
+        "name": "blink_perf.canvas/drawimage.html"
+    },
+    {
+        "duration": "22.19501419191919",
+        "name": "blink_perf.canvas/getImageData.html"
+    },
+    {
+        "duration": "18.54101846464647",
+        "name": "blink_perf.canvas/getImageDataColorManaged.html"
+    },
+    {
+        "duration": "123.67680114141415",
+        "name": "blink_perf.canvas/putImageData.html"
+    },
+    {
+        "duration": "32.97324161616162",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "29.850781444444458",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "8.592598803030304",
+        "name": "blink_perf.canvas/transferFromImageBitmap.html"
+    },
+    {
+        "duration": "24.458572434343438",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
+    },
+    {
+        "duration": "17.020130772727278",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
+    },
+    {
+        "duration": "8.71190027272727",
+        "name": "blink_perf.canvas/upload-video-to-texture.html"
+    },
+    {
+        "duration": "23.92664611111112",
+        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
+    },
+    {
+        "duration": "71.15536727272726",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "15.324568409090903",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "15.65520622222222",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "16.129622075757577",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "13.031487383838387",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "12.14617694949495",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "12.150019439393938",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "12.123679186868685",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "12.216055328282827",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "12.179816636363634",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "11.985444313131314",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "11.994609691919194",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "12.155241222222221",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "12.300046277777774",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "12.344816924242433",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "15.048846611111115",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "12.303762444444436",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "12.270895474747476",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "12.157825787878787",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "12.269299762626256",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "12.276693641414141",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "12.296095656565653",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "30.53567167676768",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "22.925501737373747",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "21.205818535353544",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "13.762406424242416",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "14.555843722222226",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "16.789638095959596",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "19.941096757575753",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "15.542212621212126",
+        "name": "blink_perf.css/SelectorCountScaling.html"
+    },
+    {
+        "duration": "95.22805328282834",
+        "name": "blink_perf.dom/addRange.html"
+    },
+    {
+        "duration": "9.69410831818182",
+        "name": "blink_perf.dom/delete-in-password-field.html"
+    },
+    {
+        "duration": "28.21174866666667",
+        "name": "blink_perf.dom/div-editable.html"
+    },
+    {
+        "duration": "7.517829624242421",
+        "name": "blink_perf.dom/inner_html_with_selection.html"
+    },
+    {
+        "duration": "24.311619999999994",
+        "name": "blink_perf.dom/long-sibling-list.html"
+    },
+    {
+        "duration": "23.342843505050514",
+        "name": "blink_perf.dom/modify-element-classname.html"
+    },
+    {
+        "duration": "16.20148233333333",
+        "name": "blink_perf.dom/modify-element-id.html"
+    },
+    {
+        "duration": "16.847272656565664",
+        "name": "blink_perf.dom/modify-element-title.html"
+    },
+    {
+        "duration": "9.083192202020202",
+        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
+    },
+    {
+        "duration": "9.055468535353537",
+        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
+    },
+    {
+        "duration": "7.97498678888889",
+        "name": "blink_perf.dom/remove_child_with_selection.html"
+    },
+    {
+        "duration": "14.446512297979801",
+        "name": "blink_perf.dom/select-multiple-add.html"
+    },
+    {
+        "duration": "15.16425361111111",
+        "name": "blink_perf.dom/select-single-add.html"
+    },
+    {
+        "duration": "16.8513832020202",
+        "name": "blink_perf.dom/select-single-remove.html"
+    },
+    {
+        "duration": "14.668707085858584",
+        "name": "blink_perf.dom/textarea-dom.html"
+    },
+    {
+        "duration": "32.52417292929293",
+        "name": "blink_perf.dom/textarea-edit.html"
+    },
+    {
+        "duration": "52.8428454242424",
+        "name": "blink_perf.events/EventsDispatching.html"
+    },
+    {
+        "duration": "19.31075020202021",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+    },
+    {
+        "duration": "67.55214511111116",
+        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+    },
+    {
+        "duration": "88.20411151515151",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "51.64757713131311",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "20.36488314141414",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "52.69179661616163",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "16.861202393939394",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "27.136694232323233",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "18.424883626262627",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "38.14722274747473",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "28.88129857575756",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "8.661020333333331",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+    },
+    {
+        "duration": "14.151323015151508",
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "13.393860893939392",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "16.76495784848485",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "13.782063792929295",
+        "name": "blink_perf.layout/attach-inlines.html"
+    },
+    {
+        "duration": "16.52998751515151",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "12.600689676767677",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "14.612926641414145",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "13.914433863636365",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "14.037283813131314",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "13.798885070707067",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "10.986062828282833",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "9.189025035353536",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "20.305149414141418",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "19.821018292929296",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "15.462028080808077",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "15.387166090909092",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "16.001607257575756",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "19.32717736363636",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "15.022391500000001",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "15.096216671717173",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "16.080091156565658",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "68.45077774747475",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "69.35193386868686",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "42.92963536363637",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "25.244357888888896",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "32.335686888888894",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "16.895303560606056",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "19.828226272727264",
+        "name": "blink_perf.layout/floats_2_100_nested.html"
+    },
+    {
+        "duration": "31.48922346464646",
+        "name": "blink_perf.layout/floats_50_100.html"
+    },
+    {
+        "duration": "33.80630594949495",
+        "name": "blink_perf.layout/floats_50_100_nested.html"
+    },
+    {
+        "duration": "16.72704721212121",
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "69.13711555555557",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "69.16369722222218",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "68.6757986262626",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "7.863658782828287",
+        "name": "blink_perf.layout/latin-complex-text.html"
+    },
+    {
+        "duration": "17.131046454545455",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "18.411854535353537",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "74.16055814141417",
+        "name": "blink_perf.layout/line-layout-line-height.html"
+    },
+    {
+        "duration": "15.867654747474761",
+        "name": "blink_perf.layout/line-layout-repeat-append.html"
+    },
+    {
+        "duration": "14.8971452020202",
+        "name": "blink_perf.layout/line-layout.html"
+    },
+    {
+        "duration": "9.058097873737369",
+        "name": "blink_perf.layout/long-line-nowrap-collapse.html"
+    },
+    {
+        "duration": "9.138192893939392",
+        "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
+    },
+    {
+        "duration": "26.234813868686878",
+        "name": "blink_perf.layout/long-line-nowrap.html"
+    },
+    {
+        "duration": "16.41950034848485",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "14.877277707070702",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
+    },
+    {
+        "duration": "15.360389828282827",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
+    },
+    {
+        "duration": "15.356480671717167",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
+    },
+    {
+        "duration": "15.360253853535355",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
+    },
+    {
+        "duration": "15.867650065656576",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
+    },
+    {
+        "duration": "16.14873045454545",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "17.399248535353525",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "14.960538166666666",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "14.712737353535358",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "95.55671037500001",
+        "name": "blink_perf.layout/subtree-detaching.html"
+    },
+    {
+        "duration": "17.058263262626262",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "24.612070888888884",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "24.577116404040414",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "24.53936347474748",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "32.35655540404039",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "24.906960070707054",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "17.852702969696963",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "24.781934040404035",
+        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
+    },
+    {
+        "duration": "25.662048808080808",
+        "name": "blink_perf.owp_storage/idb-load-docs.html"
+    },
+    {
+        "duration": "25.37792982828283",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "82.29606290909094",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "106.55913369696971",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "334.22502050505045",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "14.128837469696967",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "16.73047612121212",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "14.017090833333333",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "14.613873803030309",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "14.617824237373734",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "15.247553146464641",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "19.594540262626257",
+        "name": "blink_perf.parser/query-selector-all-class-first.html"
+    },
+    {
+        "duration": "15.944657020202026",
+        "name": "blink_perf.parser/query-selector-all-class-last.html"
+    },
+    {
+        "duration": "13.953063762626265",
+        "name": "blink_perf.parser/query-selector-all-class.html"
+    },
+    {
+        "duration": "15.00024863131313",
+        "name": "blink_perf.parser/query-selector-all-deep.html"
+    },
+    {
+        "duration": "15.036565636363633",
+        "name": "blink_perf.parser/query-selector-all-first.html"
+    },
+    {
+        "duration": "27.83605464646466",
+        "name": "blink_perf.parser/query-selector-all-id-deep.html"
+    },
+    {
+        "duration": "19.133522959595965",
+        "name": "blink_perf.parser/query-selector-all-id-first.html"
+    },
+    {
+        "duration": "30.63779733333333",
+        "name": "blink_perf.parser/query-selector-all-id-last.html"
+    },
+    {
+        "duration": "15.019382419191924",
+        "name": "blink_perf.parser/query-selector-all-last.html"
+    },
+    {
+        "duration": "16.72106373737374",
+        "name": "blink_perf.parser/query-selector-deep.html"
+    },
+    {
+        "duration": "18.53038712121213",
+        "name": "blink_perf.parser/query-selector-first.html"
+    },
+    {
+        "duration": "19.59042905050505",
+        "name": "blink_perf.parser/query-selector-id-deep.html"
+    },
+    {
+        "duration": "22.14857216161618",
+        "name": "blink_perf.parser/query-selector-id-last.html"
+    },
+    {
+        "duration": "14.722752515151514",
+        "name": "blink_perf.parser/query-selector-last.html"
+    },
+    {
+        "duration": "33.47211231313132",
+        "name": "blink_perf.parser/simple-url.html"
+    },
+    {
+        "duration": "17.71780762626263",
+        "name": "blink_perf.parser/textarea-parsing.html"
+    },
+    {
+        "duration": "46.9265862020202",
+        "name": "blink_perf.parser/tiny-innerHTML.html"
+    },
+    {
+        "duration": "22.037390737373745",
+        "name": "blink_perf.parser/url-parser.html"
+    },
+    {
+        "duration": "15.768482934343433",
+        "name": "blink_perf.parser/xml-parser.html"
+    },
+    {
+        "duration": "60.75497955555557",
+        "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
+    },
+    {
+        "duration": "14.403641969696974",
+        "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
+    },
+    {
+        "duration": "13.827791833333333",
+        "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
+    },
+    {
+        "duration": "9.396239771717173",
+        "name": "blink_perf.shadow_dom/shadow-style-share.html"
+    },
+    {
+        "duration": "10.416299656565654",
+        "name": "blink_perf.shadow_dom/style-sheet-insert.html"
+    },
+    {
+        "duration": "12.177688191919186",
+        "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
+    },
+    {
+        "duration": "24.49373346464646",
+        "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
+    },
+    {
+        "duration": "48.81126677777777",
+        "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
+    },
+    {
+        "duration": "56.35731632323235",
+        "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
+    },
+    {
+        "duration": "10.512339303030306",
+        "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
+    },
+    {
+        "duration": "8.69608650808081",
+        "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
+    },
+    {
+        "duration": "8.558882659595957",
+        "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
+    },
+    {
+        "duration": "10.573565843434348",
+        "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
+    },
+    {
+        "duration": "9.995257686868687",
+        "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
+    },
+    {
+        "duration": "90.86572020202016",
+        "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
+    },
+    {
+        "duration": "7.507753745454544",
+        "name": "blink_perf.shadow_dom/v1-distribution.html"
+    },
+    {
+        "duration": "8.141207918181815",
+        "name": "blink_perf.shadow_dom/v1-host-child-append.html"
+    },
+    {
+        "duration": "90.4693847373738",
+        "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
+    },
+    {
+        "duration": "300.629258787879",
+        "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
+    },
+    {
+        "duration": "7.5370745727272705",
+        "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
+    },
+    {
+        "duration": "8.077029366666666",
+        "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
+    },
+    {
+        "duration": "12.847227712121208",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
+    },
+    {
+        "duration": "7.8683943464646475",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
+    },
+    {
+        "duration": "8.018235698989903",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
+    },
+    {
+        "duration": "9.24146421212121",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
+    },
+    {
+        "duration": "7.967077750505046",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
+    },
+    {
+        "duration": "8.168114515151514",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
+    },
+    {
+        "duration": "7.594231333333333",
+        "name": "blink_perf.shadow_dom/v1-slot-append.html"
+    },
+    {
+        "duration": "17.895790727272725",
+        "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
+    },
+    {
+        "duration": "18.05148912121212",
+        "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
+    },
+    {
+        "duration": "7.538796875757577",
+        "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html"
+    },
+    {
+        "duration": "7.533123279797979",
+        "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
+    },
+    {
+        "duration": "21.78080375757575",
+        "name": "blink_perf.svg/AzLizardBenjiPark.html"
+    },
+    {
+        "duration": "23.176634393939395",
+        "name": "blink_perf.svg/Bamboo.html"
+    },
+    {
+        "duration": "11.008261747474748",
+        "name": "blink_perf.svg/Cactus.html"
+    },
+    {
+        "duration": "11.413962308080812",
+        "name": "blink_perf.svg/Cowboy.html"
+    },
+    {
+        "duration": "13.997717131313125",
+        "name": "blink_perf.svg/Cowboy_transform.html"
+    },
+    {
+        "duration": "8.577562090909089",
+        "name": "blink_perf.svg/CrawFishGanson.html"
+    },
+    {
+        "duration": "9.821170606060607",
+        "name": "blink_perf.svg/Debian.html"
+    },
+    {
+        "duration": "8.339311212121213",
+        "name": "blink_perf.svg/DropsOnABlade.html"
+    },
+    {
+        "duration": "8.503547585858586",
+        "name": "blink_perf.svg/FlowerFromMyGarden.html"
+    },
+    {
+        "duration": "8.752309121212122",
+        "name": "blink_perf.svg/FoodLeifLodahl.html"
+    },
+    {
+        "duration": "9.494532818181819",
+        "name": "blink_perf.svg/France.html"
+    },
+    {
+        "duration": "8.12041113838384",
+        "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
+    },
+    {
+        "duration": "10.805155651515149",
+        "name": "blink_perf.svg/GearFlowers.html"
+    },
+    {
+        "duration": "8.954639732323233",
+        "name": "blink_perf.svg/HarveyRayner.html"
+    },
+    {
+        "duration": "8.67925735858585",
+        "name": "blink_perf.svg/HereGear.html"
+    },
+    {
+        "duration": "27.43792513131312",
+        "name": "blink_perf.svg/MtSaintHelens.html"
+    },
+    {
+        "duration": "7.9254125010101",
+        "name": "blink_perf.svg/Samurai.html"
+    },
+    {
+        "duration": "302.85711171717185",
+        "name": "blink_perf.svg/SierpinskiCarpet.html"
+    },
+    {
+        "duration": "12.23031478787879",
+        "name": "blink_perf.svg/SvgCubics.html"
+    },
+    {
+        "duration": "13.952812878787883",
+        "name": "blink_perf.svg/SvgHitTesting.html"
+    },
+    {
+        "duration": "16.603459878787884",
+        "name": "blink_perf.svg/SvgNestedUse.html"
+    },
+    {
+        "duration": "9.184900585858584",
+        "name": "blink_perf.svg/UnderTheSee.html"
+    },
+    {
+        "duration": "10.701446404040405",
+        "name": "blink_perf.svg/WorldIso.html"
+    },
+    {
+        "duration": "23.55045201010102",
+        "name": "blink_perf.svg/Worldcup.html"
+    },
+    {
+        "duration": "47.89447003030302",
+        "name": "dromaeo/http://dromaeo.com?dom-attr"
+    },
+    {
+        "duration": "41.307250505050504",
+        "name": "dromaeo/http://dromaeo.com?dom-modify"
+    },
+    {
+        "duration": "54.891447969696955",
+        "name": "dromaeo/http://dromaeo.com?dom-query"
+    },
+    {
+        "duration": "34.33019716161617",
+        "name": "dromaeo/http://dromaeo.com?dom-traverse"
+    },
+    {
+        "duration": "25.32483057575757",
+        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "16.221566737373738",
+        "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "16.022447540404045",
+        "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "654.3507109090909",
+        "name": "jetstream/http://browserbench.org/JetStream/"
+    },
+    {
+        "duration": "178.60558848484848",
+        "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
+    },
+    {
+        "duration": "20.607475194444454",
+        "name": "loading.mobile/58Pic"
+    },
+    {
+        "duration": "38.73174162666666",
+        "name": "loading.mobile/58Pic_3g"
+    },
+    {
+        "duration": "25.627548358585855",
+        "name": "loading.mobile/Amazon"
+    },
+    {
+        "duration": "61.199466256578944",
+        "name": "loading.mobile/Amazon_3g"
+    },
+    {
+        "duration": "29.84925812626261",
+        "name": "loading.mobile/BOLNoticias"
+    },
+    {
+        "duration": "71.24193780263157",
+        "name": "loading.mobile/BOLNoticias_3g"
+    },
+    {
+        "duration": "25.07909590656565",
+        "name": "loading.mobile/Baidu"
+    },
+    {
+        "duration": "50.25876444078944",
+        "name": "loading.mobile/Baidu_3g"
+    },
+    {
+        "duration": "26.523030563131314",
+        "name": "loading.mobile/Bradesco"
+    },
+    {
+        "duration": "103.09712259558826",
+        "name": "loading.mobile/Bradesco_3g"
+    },
+    {
+        "duration": "26.162819656565656",
+        "name": "loading.mobile/Dailymotion"
+    },
+    {
+        "duration": "83.28724848026316",
+        "name": "loading.mobile/Dailymotion_3g"
+    },
+    {
+        "duration": "32.60291825757576",
+        "name": "loading.mobile/Dawn"
+    },
+    {
+        "duration": "58.51999427884615",
+        "name": "loading.mobile/Dawn_3g"
+    },
+    {
+        "duration": "25.077735030303025",
+        "name": "loading.mobile/DevOpera"
+    },
+    {
+        "duration": "18.71688135526315",
+        "name": "loading.mobile/DevOpera_cold"
+    },
+    {
+        "duration": "42.144749893333326",
+        "name": "loading.mobile/DevOpera_cold_3g"
+    },
+    {
+        "duration": "26.119523092105254",
+        "name": "loading.mobile/DevOpera_hot"
+    },
+    {
+        "duration": "28.60348169736842",
+        "name": "loading.mobile/DevOpera_hot_3g"
+    },
+    {
+        "duration": "22.06864051315789",
+        "name": "loading.mobile/DevOpera_warm"
+    },
+    {
+        "duration": "24.522628249999997",
+        "name": "loading.mobile/DevOpera_warm_3g"
+    },
+    {
+        "duration": "31.92244337626262",
+        "name": "loading.mobile/Dramaq"
+    },
+    {
+        "duration": "136.1437273378379",
+        "name": "loading.mobile/Dramaq_3g"
+    },
+    {
+        "duration": "19.759189550505056",
+        "name": "loading.mobile/EnquiryIndianRail"
+    },
+    {
+        "duration": "39.6783815394737",
+        "name": "loading.mobile/EnquiryIndianRail_3g"
+    },
+    {
+        "duration": "29.096103717171708",
+        "name": "loading.mobile/Facebook"
+    },
+    {
+        "duration": "69.19978333108105",
+        "name": "loading.mobile/Facebook_3g"
+    },
+    {
+        "duration": "30.46397704545455",
+        "name": "loading.mobile/FlipBoard"
+    },
+    {
+        "duration": "21.167893276315784",
+        "name": "loading.mobile/FlipBoard_cold"
+    },
+    {
+        "duration": "74.62968191447368",
+        "name": "loading.mobile/FlipBoard_cold_3g"
+    },
+    {
+        "duration": "33.131462739999996",
+        "name": "loading.mobile/FlipBoard_hot"
+    },
+    {
+        "duration": "39.21742798666667",
+        "name": "loading.mobile/FlipBoard_hot_3g"
+    },
+    {
+        "duration": "26.941107839999997",
+        "name": "loading.mobile/FlipBoard_warm"
+    },
+    {
+        "duration": "34.49199547333335",
+        "name": "loading.mobile/FlipBoard_warm_3g"
+    },
+    {
+        "duration": "40.89691932575757",
+        "name": "loading.mobile/FlipKart"
+    },
+    {
+        "duration": "28.327040361842112",
+        "name": "loading.mobile/FlipKart_cold"
+    },
+    {
+        "duration": "91.91723605921052",
+        "name": "loading.mobile/FlipKart_cold_3g"
+    },
+    {
+        "duration": "49.21013783552631",
+        "name": "loading.mobile/FlipKart_hot"
+    },
+    {
+        "duration": "50.43703051315788",
+        "name": "loading.mobile/FlipKart_hot_3g"
+    },
+    {
+        "duration": "38.328377625",
+        "name": "loading.mobile/FlipKart_warm"
+    },
+    {
+        "duration": "39.592184782894726",
+        "name": "loading.mobile/FlipKart_warm_3g"
+    },
+    {
+        "duration": "21.82302678030303",
+        "name": "loading.mobile/FranceTVInfo"
+    },
+    {
+        "duration": "49.57882648666666",
+        "name": "loading.mobile/FranceTVInfo_3g"
+    },
+    {
+        "duration": "4.660670559615386E-4",
+        "name": "loading.mobile/G1"
+    },
+    {
+        "duration": "89.10188389999999",
+        "name": "loading.mobile/G1_3g"
+    },
+    {
+        "duration": "38.474925959595964",
+        "name": "loading.mobile/GSShop"
+    },
+    {
+        "duration": "81.31670700999999",
+        "name": "loading.mobile/GSShop_3g"
+    },
+    {
+        "duration": "19.89176115151515",
+        "name": "loading.mobile/GoogleBrazil"
+    },
+    {
+        "duration": "46.04720785714285",
+        "name": "loading.mobile/GoogleBrazil_3g"
+    },
+    {
+        "duration": "20.7006839949495",
+        "name": "loading.mobile/GoogleIndia"
+    },
+    {
+        "duration": "55.09256085064934",
+        "name": "loading.mobile/GoogleIndia_3g"
+    },
+    {
+        "duration": "19.296809722222225",
+        "name": "loading.mobile/GoogleIndonesia"
+    },
+    {
+        "duration": "45.00424666233768",
+        "name": "loading.mobile/GoogleIndonesia_3g"
+    },
+    {
+        "duration": "28.897572404040396",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan"
+    },
+    {
+        "duration": "52.74042397402598",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g"
+    },
+    {
+        "duration": "4.6374247769230775E-4",
+        "name": "loading.mobile/HashOcean"
+    },
+    {
+        "duration": "25.68133469696969",
+        "name": "loading.mobile/Hongkiat"
+    },
+    {
+        "duration": "70.74795435333334",
+        "name": "loading.mobile/Hongkiat_3g"
+    },
+    {
+        "duration": "3.5589475153846145E-4",
+        "name": "loading.mobile/IBI"
+    },
+    {
+        "duration": "29.72735794949494",
+        "name": "loading.mobile/KapanLagi"
+    },
+    {
+        "duration": "80.79075835526316",
+        "name": "loading.mobile/KapanLagi_3g"
+    },
+    {
+        "duration": "35.820391391414134",
+        "name": "loading.mobile/Kaskus"
+    },
+    {
+        "duration": "75.30049922115383",
+        "name": "loading.mobile/Kaskus_3g"
+    },
+    {
+        "duration": "24.145255277777775",
+        "name": "loading.mobile/LocalMoxie"
+    },
+    {
+        "duration": "94.74967299999997",
+        "name": "loading.mobile/LocalMoxie_3g"
+    },
+    {
+        "duration": "17.755801957070705",
+        "name": "loading.mobile/Locanto"
+    },
+    {
+        "duration": "28.284095000000004",
+        "name": "loading.mobile/Locanto_3g"
+    },
+    {
+        "duration": "25.628591333333336",
+        "name": "loading.mobile/OLX"
+    },
+    {
+        "duration": "67.93233028947367",
+        "name": "loading.mobile/OLX_3g"
+    },
+    {
+        "duration": "21.032540118686864",
+        "name": "loading.mobile/QQNews"
+    },
+    {
+        "duration": "56.48644345394735",
+        "name": "loading.mobile/QQNews_3g"
+    },
+    {
+        "duration": "23.879810148989908",
+        "name": "loading.mobile/SlideShare"
+    },
+    {
+        "duration": "60.33222354666667",
+        "name": "loading.mobile/SlideShare_3g"
+    },
+    {
+        "duration": "21.158098963804715",
+        "name": "loading.mobile/Suumo"
+    },
+    {
+        "duration": "17.40094674342105",
+        "name": "loading.mobile/Suumo_cold"
+    },
+    {
+        "duration": "22.346311368421055",
+        "name": "loading.mobile/Suumo_cold_3g"
+    },
+    {
+        "duration": "22.623253203947367",
+        "name": "loading.mobile/Suumo_hot"
+    },
+    {
+        "duration": "24.81854896710526",
+        "name": "loading.mobile/Suumo_hot_3g"
+    },
+    {
+        "duration": "19.60087886842105",
+        "name": "loading.mobile/Suumo_warm"
+    },
+    {
+        "duration": "21.654651947368418",
+        "name": "loading.mobile/Suumo_warm_3g"
+    },
+    {
+        "duration": "30.135795873737372",
+        "name": "loading.mobile/Thairath"
+    },
+    {
+        "duration": "100.65564546666668",
+        "name": "loading.mobile/Thairath_3g"
+    },
+    {
+        "duration": "38.458256222222225",
+        "name": "loading.mobile/TheStar"
+    },
+    {
+        "duration": "134.99653058000007",
+        "name": "loading.mobile/TheStar_3g"
+    },
+    {
+        "duration": "33.507623429292906",
+        "name": "loading.mobile/TribunNews"
+    },
+    {
+        "duration": "92.71898759210525",
+        "name": "loading.mobile/TribunNews_3g"
+    },
+    {
+        "duration": "21.200739946969694",
+        "name": "loading.mobile/Twitter"
+    },
+    {
+        "duration": "38.775398953947374",
+        "name": "loading.mobile/Twitter_3g"
+    },
+    {
+        "duration": "26.767676437710435",
+        "name": "loading.mobile/VoiceMemos"
+    },
+    {
+        "duration": "20.092930013157897",
+        "name": "loading.mobile/VoiceMemos_cold"
+    },
+    {
+        "duration": "38.25041229605265",
+        "name": "loading.mobile/VoiceMemos_cold_3g"
+    },
+    {
+        "duration": "29.14375759210525",
+        "name": "loading.mobile/VoiceMemos_hot"
+    },
+    {
+        "duration": "30.92009184210526",
+        "name": "loading.mobile/VoiceMemos_hot_3g"
+    },
+    {
+        "duration": "24.415973559210528",
+        "name": "loading.mobile/VoiceMemos_warm"
+    },
+    {
+        "duration": "26.23597814473684",
+        "name": "loading.mobile/VoiceMemos_warm_3g"
+    },
+    {
+        "duration": "20.392420525252525",
+        "name": "loading.mobile/Wikipedia"
+    },
+    {
+        "duration": "44.904509710526305",
+        "name": "loading.mobile/Wikipedia_3g"
+    },
+    {
+        "duration": "35.07834941666668",
+        "name": "loading.mobile/YahooNews"
+    },
+    {
+        "duration": "105.0055296266667",
+        "name": "loading.mobile/YahooNews_3g"
+    },
+    {
+        "duration": "20.84510208333334",
+        "name": "loading.mobile/Youtube"
+    },
+    {
+        "duration": "83.83357728571428",
+        "name": "loading.mobile/Youtube_3g"
+    },
+    {
+        "duration": "26.645742030303026",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4"
+    },
+    {
+        "duration": "32.94619965656566",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4"
+    },
+    {
+        "duration": "33.03881004040404",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
+    },
+    {
+        "duration": "30.0294031010101",
+        "name": "media.mobile/mse.html?media=h264_video.mp4"
+    },
+    {
+        "duration": "37.20167325252524",
+        "name": "media.mobile/video.html?src=crowd.ogg&type=audio"
+    },
+    {
+        "duration": "30.94802252525252",
+        "name": "media.mobile/video.html?src=crowd1080_vp9.webm"
+    },
+    {
+        "duration": "21.955314141414142",
+        "name": "media.mobile/video.html?src=crowd1080_vp9.webm&seek"
+    },
+    {
+        "duration": "29.261553222222233",
+        "name": "media.mobile/video.html?src=crowd720_vp9.webm"
+    },
+    {
+        "duration": "34.83083456565656",
+        "name": "media.mobile/video.html?src=tulip2.m4a&type=audio"
+    },
+    {
+        "duration": "34.706512494949486",
+        "name": "media.mobile/video.html?src=tulip2.mp3&type=audio"
+    },
+    {
+        "duration": "16.801340969696977",
+        "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek"
+    },
+    {
+        "duration": "40.54372214141415",
+        "name": "media.mobile/video.html?src=tulip2.mp4"
+    },
+    {
+        "duration": "41.02646114141413",
+        "name": "media.mobile/video.html?src=tulip2.mp4&busyjs"
+    },
+    {
+        "duration": "21.153067717171716",
+        "name": "media.mobile/video.html?src=tulip2.mp4&seek"
+    },
+    {
+        "duration": "34.79443855555557",
+        "name": "media.mobile/video.html?src=tulip2.ogg&type=audio"
+    },
+    {
+        "duration": "16.84032733333333",
+        "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek"
+    },
+    {
+        "duration": "42.03621503030301",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm"
+    },
+    {
+        "duration": "31.59308870707071",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm&background"
+    },
+    {
+        "duration": "30.99736346464646",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm&seek"
+    },
+    {
+        "duration": "48.680380363636345",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm_Regular-3G"
+    },
+    {
+        "duration": "35.36021952525252",
+        "name": "media.mobile/video.html?src=tulip2.wav&type=audio"
+    },
+    {
+        "duration": "17.34290345454544",
+        "name": "media.mobile/video.html?src=tulip2.wav&type=audio&seek"
+    },
+    {
+        "duration": "279.8040891919191",
+        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "278.67164050505045",
+        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "20.906387783838376",
+        "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "20.175946343434344",
+        "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "20.449522935353528",
+        "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "20.421240143434343",
+        "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "20.712400878787882",
+        "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "20.444099563636367",
+        "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "20.53326313333333",
+        "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "20.469835937373734",
+        "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "20.48709893737374",
+        "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "20.8512361010101",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "26.531239551515153",
+        "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "22.895463406060607",
+        "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "24.71321744444446",
+        "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "23.57634245454545",
+        "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "24.17540374343434",
+        "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "24.391020989898994",
+        "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "24.409930650505043",
+        "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "24.22378267070707",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "23.783989286868696",
+        "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "26.359353850505034",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "135.7494105050506",
+        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+    },
+    {
+        "duration": "25.15328464646465",
+        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
+    },
+    {
+        "duration": "63.44323797979798",
+        "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
+    },
+    {
+        "duration": "64.41473575757574",
+        "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
+    },
+    {
+        "duration": "55.680032727272724",
+        "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
+    },
+    {
+        "duration": "74.1515494747475",
+        "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
+    },
+    {
+        "duration": "62.251942858585856",
+        "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
+    },
+    {
+        "duration": "60.76145736363636",
+        "name": "power.typical_10_mobile/http://m.ynet.co.il"
+    },
+    {
+        "duration": "61.934663828282815",
+        "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
+    },
+    {
+        "duration": "55.99337121212123",
+        "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
+    },
+    {
+        "duration": "58.25244067676767",
+        "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
+    },
+    {
+        "duration": "65.61871876767674",
+        "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
+    },
+    {
+        "duration": "60.783594777777765",
+        "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
+    },
+    {
+        "duration": "26.8248773939394",
+        "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
+    },
+    {
+        "duration": "38.377760343434346",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
+    },
+    {
+        "duration": "22.312757121212123",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
+    },
+    {
+        "duration": "40.872121020202016",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
+    },
+    {
+        "duration": "33.044085737373756",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
+    },
+    {
+        "duration": "22.636925333333338",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
+    },
+    {
+        "duration": "72.87713040404043",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
+    },
+    {
+        "duration": "27.458364606060606",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
+    },
+    {
+        "duration": "48.90202437373739",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
+    },
+    {
+        "duration": "40.54981153535353",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
+    },
+    {
+        "duration": "25.53225559595959",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
+    },
+    {
+        "duration": "28.483499464646467",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
+    },
+    {
+        "duration": "40.002391171717186",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
+    },
+    {
+        "duration": "61.68074667676768",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
+    },
+    {
+        "duration": "22.436720515151514",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
+    },
+    {
+        "duration": "12.59577609090909",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
+    },
+    {
+        "duration": "60.03743203030303",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
+    },
+    {
+        "duration": "66.64176964646465",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
+    },
+    {
+        "duration": "29.05222092929294",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
+    },
+    {
+        "duration": "3.669078538461538E-4",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html"
+    },
+    {
+        "duration": "22.663683848484844",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
+    },
+    {
+        "duration": "23.23853971717172",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
+    },
+    {
+        "duration": "46.1110071010101",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
+    },
+    {
+        "duration": "132.03657373737371",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
+    },
+    {
+        "duration": "113.85402752525249",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
+    },
+    {
+        "duration": "55.81926404040401",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
+    },
+    {
+        "duration": "3.59582894E-4",
+        "name": "rendering.mobile/amazon"
+    },
+    {
+        "duration": "2.5901794599999996E-4",
+        "name": "rendering.mobile/amazon_desktop"
+    },
+    {
+        "duration": "1.8477439800000003E-4",
+        "name": "rendering.mobile/amazon_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.3997164",
+        "name": "rendering.mobile/amazon_pinch"
+    },
+    {
+        "duration": "27.5032918",
+        "name": "rendering.mobile/amazon_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "3.50189212E-4",
+        "name": "rendering.mobile/amazon_sync_scroll"
+    },
+    {
+        "duration": "30.51517214141415",
+        "name": "rendering.mobile/analog_clock_svg"
+    },
+    {
+        "duration": "28.708825080808076",
+        "name": "rendering.mobile/androidpolice"
+    },
+    {
+        "duration": "33.89060465656564",
+        "name": "rendering.mobile/androidpolice_mobile"
+    },
+    {
+        "duration": "32.433471838383845",
+        "name": "rendering.mobile/androidpolice_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.797083333333344",
+        "name": "rendering.mobile/androidpolice_sync_scroll"
+    },
+    {
+        "duration": "7.586646251515152",
+        "name": "rendering.mobile/animometer_webgl"
+    },
+    {
+        "duration": "7.451972183838388",
+        "name": "rendering.mobile/aquarium"
+    },
+    {
+        "duration": "41.90810608080808",
+        "name": "rendering.mobile/background_color_animation"
+    },
+    {
+        "duration": "31.016096626262634",
+        "name": "rendering.mobile/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "18.557970474747467",
+        "name": "rendering.mobile/baidu"
+    },
+    {
+        "duration": "22.377847969696965",
+        "name": "rendering.mobile/baidu_mobile"
+    },
+    {
+        "duration": "20.52438724242424",
+        "name": "rendering.mobile/baidu_mobile_sync_scroll"
+    },
+    {
+        "duration": "18.54611397979798",
+        "name": "rendering.mobile/baidu_sync_scroll"
+    },
+    {
+        "duration": "34.70300927272728",
+        "name": "rendering.mobile/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "30.73001495959596",
+        "name": "rendering.mobile/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "30.796988616161624",
+        "name": "rendering.mobile/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "30.64474376767679",
+        "name": "rendering.mobile/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "29.259935858585855",
+        "name": "rendering.mobile/balls_javascript_canvas"
+    },
+    {
+        "duration": "32.03483961616163",
+        "name": "rendering.mobile/balls_javascript_css"
+    },
+    {
+        "duration": "57.06608094949495",
+        "name": "rendering.mobile/balls_svg_animations"
+    },
+    {
+        "duration": "35.66838795348837",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "16.456162707070707",
+        "name": "rendering.mobile/bing"
+    },
+    {
+        "duration": "18.456528262626254",
+        "name": "rendering.mobile/bing_mobile"
+    },
+    {
+        "duration": "18.497137575757574",
+        "name": "rendering.mobile/bing_mobile_sync_scroll"
+    },
+    {
+        "duration": "16.47721074747474",
+        "name": "rendering.mobile/bing_sync_scroll"
+    },
+    {
+        "duration": "7.523970821212119",
+        "name": "rendering.mobile/blob"
+    },
+    {
+        "duration": "40.72680648484848",
+        "name": "rendering.mobile/blogspot"
+    },
+    {
+        "duration": "37.18845260606061",
+        "name": "rendering.mobile/blogspot_desktop"
+    },
+    {
+        "duration": "38.92538909090908",
+        "name": "rendering.mobile/blogspot_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.20586225252525",
+        "name": "rendering.mobile/blogspot_mobile"
+    },
+    {
+        "duration": "19.571388515151522",
+        "name": "rendering.mobile/blogspot_mobile_sync_scroll"
+    },
+    {
+        "duration": "19.723562515151528",
+        "name": "rendering.mobile/blogspot_sync_scroll"
+    },
+    {
+        "duration": "40.523257323232315",
+        "name": "rendering.mobile/boingboing"
+    },
+    {
+        "duration": "44.354594929292944",
+        "name": "rendering.mobile/boingboing_mobile"
+    },
+    {
+        "duration": "42.10416355555554",
+        "name": "rendering.mobile/boingboing_sync_scroll"
+    },
+    {
+        "duration": "30.357550797979812",
+        "name": "rendering.mobile/booking.com"
+    },
+    {
+        "duration": "25.36395861616161",
+        "name": "rendering.mobile/booking.com_desktop"
+    },
+    {
+        "duration": "28.173842111111114",
+        "name": "rendering.mobile/booking.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.724637525252515",
+        "name": "rendering.mobile/booking.com_mobile"
+    },
+    {
+        "duration": "29.656749040404048",
+        "name": "rendering.mobile/booking.com_mobile_sync_scroll"
+    },
+    {
+        "duration": "26.841813404040405",
+        "name": "rendering.mobile/booking.com_sync_scroll"
+    },
+    {
+        "duration": "35.1639532",
+        "name": "rendering.mobile/booking_pinch"
+    },
+    {
+        "duration": "32.532503399999996",
+        "name": "rendering.mobile/booking_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.92017097979798",
+        "name": "rendering.mobile/bouncing_balls_15"
+    },
+    {
+        "duration": "32.94183075757576",
+        "name": "rendering.mobile/bouncing_balls_shadow"
+    },
+    {
+        "duration": "28.818493434343445",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "23.50541084848486",
+        "name": "rendering.mobile/bouncing_gradient_circles"
+    },
+    {
+        "duration": "19.700776292929294",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "32.970951818181824",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "31.025835473118278",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "31.064398677419355",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.698409451612896",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "30.785843322580654",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.213117967741944",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "30.928570430107513",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.206303010752695",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "30.70748297849463",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.772570881720423",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "30.7883235483871",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.2644924516129",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "31.507936709677427",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.94477368817205",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "30.167647193548383",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.031470182795694",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "28.09196132258064",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.434013430107516",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "25.738470731182794",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.80484701075269",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "23.9843085483871",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.546389757575763",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "23.547861929292925",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "23.02931682828283",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "22.907729919191922",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "25.47353733333334",
+        "name": "rendering.mobile/canvas_to_blob"
+    },
+    {
+        "duration": "28.81033195959597",
+        "name": "rendering.mobile/capitolvolkswagen"
+    },
+    {
+        "duration": "30.965321767676762",
+        "name": "rendering.mobile/capitolvolkswagen_mobile"
+    },
+    {
+        "duration": "30.19799083838383",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.18014886868686",
+        "name": "rendering.mobile/capitolvolkswagen_sync_scroll"
+    },
+    {
+        "duration": "24.543476727272733",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "26.86166170707071",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "25.604358494949498",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "23.423460252525256",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "16.82609217204302",
+        "name": "rendering.mobile/cats_unscaled"
+    },
+    {
+        "duration": "15.514041021505374",
+        "name": "rendering.mobile/cats_viewport_width"
+    },
+    {
+        "duration": "35.657440750000006",
+        "name": "rendering.mobile/cc_poster_circle"
+    },
+    {
+        "duration": "33.17071575",
+        "name": "rendering.mobile/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "32.98643041666666",
+        "name": "rendering.mobile/cc_scroll_text_only"
+    },
+    {
+        "duration": "28.05144031313131",
+        "name": "rendering.mobile/chip_tune"
+    },
+    {
+        "duration": "21.35325896969697",
+        "name": "rendering.mobile/cnn"
+    },
+    {
+        "duration": "41.12851125252526",
+        "name": "rendering.mobile/cnn_article"
+    },
+    {
+        "duration": "46.475378919191925",
+        "name": "rendering.mobile/cnn_article_mobile"
+    },
+    {
+        "duration": "45.43044801010103",
+        "name": "rendering.mobile/cnn_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "41.24749990909091",
+        "name": "rendering.mobile/cnn_article_sync_scroll"
+    },
+    {
+        "duration": "4.3902396799999996E-4",
+        "name": "rendering.mobile/cnn_desktop"
+    },
+    {
+        "duration": "3.2043457E-4",
+        "name": "rendering.mobile/cnn_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.89893998989899",
+        "name": "rendering.mobile/cnn_mobile"
+    },
+    {
+        "duration": "23.946696292929296",
+        "name": "rendering.mobile/cnn_mobile_sync_scroll"
+    },
+    {
+        "duration": "45.85381059595959",
+        "name": "rendering.mobile/cnn_pathological"
+    },
+    {
+        "duration": "47.919081600000005",
+        "name": "rendering.mobile/cnn_pinch"
+    },
+    {
+        "duration": "43.8867862",
+        "name": "rendering.mobile/cnn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.538971333333336",
+        "name": "rendering.mobile/cnn_sync_scroll"
+    },
+    {
+        "duration": "30.269806202020213",
+        "name": "rendering.mobile/compositor_heavy_animation"
+    },
+    {
+        "duration": "24.955628979797982",
+        "name": "rendering.mobile/coordinated_animation"
+    },
+    {
+        "duration": "27.242179060606066",
+        "name": "rendering.mobile/crafty_mind"
+    },
+    {
+        "duration": "35.274035555555564",
+        "name": "rendering.mobile/css_animations_many_keyframes"
+    },
+    {
+        "duration": "31.92030347474748",
+        "name": "rendering.mobile/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "33.18421165656565",
+        "name": "rendering.mobile/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "32.244854949494965",
+        "name": "rendering.mobile/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "32.488877454545445",
+        "name": "rendering.mobile/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "30.435484323232323",
+        "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "34.2047195050505",
+        "name": "rendering.mobile/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "34.927625363636366",
+        "name": "rendering.mobile/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "36.28330419191919",
+        "name": "rendering.mobile/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "33.880290393939404",
+        "name": "rendering.mobile/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "33.79314148484848",
+        "name": "rendering.mobile/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "35.019025414141424",
+        "name": "rendering.mobile/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "32.98401787878788",
+        "name": "rendering.mobile/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "33.95693984848484",
+        "name": "rendering.mobile/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "31.542891929292935",
+        "name": "rendering.mobile/css_transitions_inline_style"
+    },
+    {
+        "duration": "32.556745282828295",
+        "name": "rendering.mobile/css_transitions_new_element"
+    },
+    {
+        "duration": "32.30724162626263",
+        "name": "rendering.mobile/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "32.370540333333345",
+        "name": "rendering.mobile/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "32.76548493939394",
+        "name": "rendering.mobile/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "32.35042141414142",
+        "name": "rendering.mobile/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "31.55104533333332",
+        "name": "rendering.mobile/css_transitions_style_element"
+    },
+    {
+        "duration": "33.30350858585858",
+        "name": "rendering.mobile/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "33.46076732323231",
+        "name": "rendering.mobile/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "32.804813111111116",
+        "name": "rendering.mobile/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "33.39159245454545",
+        "name": "rendering.mobile/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "31.758037090909077",
+        "name": "rendering.mobile/css_transitions_updating_class"
+    },
+    {
+        "duration": "30.908388373737374",
+        "name": "rendering.mobile/css_value_type_color"
+    },
+    {
+        "duration": "47.088567767676764",
+        "name": "rendering.mobile/css_value_type_filter"
+    },
+    {
+        "duration": "28.653353878787883",
+        "name": "rendering.mobile/css_value_type_length"
+    },
+    {
+        "duration": "30.367098545454542",
+        "name": "rendering.mobile/css_value_type_length_complex"
+    },
+    {
+        "duration": "30.25717322222223",
+        "name": "rendering.mobile/css_value_type_length_simple"
+    },
+    {
+        "duration": "29.819586414141416",
+        "name": "rendering.mobile/css_value_type_path"
+    },
+    {
+        "duration": "28.994176282828303",
+        "name": "rendering.mobile/css_value_type_shadow"
+    },
+    {
+        "duration": "28.585142474747478",
+        "name": "rendering.mobile/css_value_type_transform_complex"
+    },
+    {
+        "duration": "28.558747252525254",
+        "name": "rendering.mobile/css_value_type_transform_simple"
+    },
+    {
+        "duration": "38.878523929292925",
+        "name": "rendering.mobile/cuteoverload"
+    },
+    {
+        "duration": "45.04949624242425",
+        "name": "rendering.mobile/cuteoverload_mobile"
+    },
+    {
+        "duration": "39.55277157575757",
+        "name": "rendering.mobile/cuteoverload_sync_scroll"
+    },
+    {
+        "duration": "30.90706690909091",
+        "name": "rendering.mobile/deviantart"
+    },
+    {
+        "duration": "34.154155676767694",
+        "name": "rendering.mobile/deviantart_mobile"
+    },
+    {
+        "duration": "34.3895925757576",
+        "name": "rendering.mobile/deviantart_mobile_sync_scroll"
+    },
+    {
+        "duration": "31.26312799999999",
+        "name": "rendering.mobile/deviantart_sync_scroll"
+    },
+    {
+        "duration": "6.0319901E-4",
+        "name": "rendering.mobile/digg"
+    },
+    {
+        "duration": "4.6086311799999996E-4",
+        "name": "rendering.mobile/digg_sync_scroll"
+    },
+    {
+        "duration": "7.577538798989901",
+        "name": "rendering.mobile/dynamic_cube_map"
+    },
+    {
+        "duration": "7.561242346464646",
+        "name": "rendering.mobile/earth"
+    },
+    {
+        "duration": "22.27406624242424",
+        "name": "rendering.mobile/ebay"
+    },
+    {
+        "duration": "18.397491858585852",
+        "name": "rendering.mobile/ebay_desktop"
+    },
+    {
+        "duration": "20.18518236363636",
+        "name": "rendering.mobile/ebay_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.99218313131313",
+        "name": "rendering.mobile/ebay_mobile"
+    },
+    {
+        "duration": "25.5188258888889",
+        "name": "rendering.mobile/ebay_mobile_sync_scroll"
+    },
+    {
+        "duration": "41.9827078",
+        "name": "rendering.mobile/ebay_pinch"
+    },
+    {
+        "duration": "40.091952199999994",
+        "name": "rendering.mobile/ebay_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "43.13795953535354",
+        "name": "rendering.mobile/ebay_scroll"
+    },
+    {
+        "duration": "22.92928685858585",
+        "name": "rendering.mobile/ebay_sync_scroll"
+    },
+    {
+        "duration": "30.841230191919184",
+        "name": "rendering.mobile/effect_games"
+    },
+    {
+        "duration": "18.502259414141413",
+        "name": "rendering.mobile/espn"
+    },
+    {
+        "duration": "17.226413232323235",
+        "name": "rendering.mobile/espn_desktop"
+    },
+    {
+        "duration": "16.52083095959596",
+        "name": "rendering.mobile/espn_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.97155044444446",
+        "name": "rendering.mobile/espn_pathological"
+    },
+    {
+        "duration": "52.4160752",
+        "name": "rendering.mobile/espn_pinch"
+    },
+    {
+        "duration": "51.631831",
+        "name": "rendering.mobile/espn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "7.68280028E-4",
+        "name": "rendering.mobile/espn_sync_scroll"
+    },
+    {
+        "duration": "31.898319959595952",
+        "name": "rendering.mobile/extra_large_texture_uploads"
+    },
+    {
+        "duration": "33.69159936363638",
+        "name": "rendering.mobile/facebook"
+    },
+    {
+        "duration": "29.909074373737393",
+        "name": "rendering.mobile/facebook_desktop"
+    },
+    {
+        "duration": "32.43884366666666",
+        "name": "rendering.mobile/facebook_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.421959959595966",
+        "name": "rendering.mobile/facebook_mobile"
+    },
+    {
+        "duration": "24.774044909090907",
+        "name": "rendering.mobile/facebook_mobile_sync_scroll"
+    },
+    {
+        "duration": "36.29643839999999",
+        "name": "rendering.mobile/facebook_pinch"
+    },
+    {
+        "duration": "33.489531400000004",
+        "name": "rendering.mobile/facebook_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.88363414141415",
+        "name": "rendering.mobile/facebook_sync_scroll"
+    },
+    {
+        "duration": "23.034680232323232",
+        "name": "rendering.mobile/fill_shapes"
+    },
+    {
+        "duration": "29.765851939393933",
+        "name": "rendering.mobile/filter_terrain_svg"
+    },
+    {
+        "duration": "40.944265222222214",
+        "name": "rendering.mobile/flickr_scroll"
+    },
+    {
+        "duration": "23.161370070707072",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "2.3417473000000004E-4",
+        "name": "rendering.mobile/forecast.io"
+    },
+    {
+        "duration": "4.55236442E-4",
+        "name": "rendering.mobile/forecast.io_sync_scroll"
+    },
+    {
+        "duration": "58.721714939393934",
+        "name": "rendering.mobile/gmail"
+    },
+    {
+        "duration": "65.6447228989899",
+        "name": "rendering.mobile/gmail_desktop"
+    },
+    {
+        "duration": "57.05392233333335",
+        "name": "rendering.mobile/gmail_desktop_gpu_raster"
+    },
+    {
+        "duration": "55.3790156",
+        "name": "rendering.mobile/gmail_pinch"
+    },
+    {
+        "duration": "52.7218216",
+        "name": "rendering.mobile/gmail_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "38.070696080808084",
+        "name": "rendering.mobile/google_calendar"
+    },
+    {
+        "duration": "35.008791101010104",
+        "name": "rendering.mobile/google_calendar_desktop"
+    },
+    {
+        "duration": "37.93441517171717",
+        "name": "rendering.mobile/google_calendar_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.32057066666667",
+        "name": "rendering.mobile/google_calendar_pinch"
+    },
+    {
+        "duration": "31.761433",
+        "name": "rendering.mobile/google_calendar_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "57.076201010101016",
+        "name": "rendering.mobile/google_docs"
+    },
+    {
+        "duration": "53.236551101010086",
+        "name": "rendering.mobile/google_docs_desktop"
+    },
+    {
+        "duration": "57.101979646464656",
+        "name": "rendering.mobile/google_docs_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.786983",
+        "name": "rendering.mobile/google_image_pinch"
+    },
+    {
+        "duration": "34.23949033333333",
+        "name": "rendering.mobile/google_image_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "45.395055777777785",
+        "name": "rendering.mobile/google_image_search"
+    },
+    {
+        "duration": "40.78697235353536",
+        "name": "rendering.mobile/google_image_search_desktop"
+    },
+    {
+        "duration": "44.984461040404035",
+        "name": "rendering.mobile/google_image_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.62625303030303",
+        "name": "rendering.mobile/google_news"
+    },
+    {
+        "duration": "27.20889795959596",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "32.22973795959596",
+        "name": "rendering.mobile/google_news_mobile"
+    },
+    {
+        "duration": "31.996189959595966",
+        "name": "rendering.mobile/google_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.19654711111111",
+        "name": "rendering.mobile/google_news_sync_scroll"
+    },
+    {
+        "duration": "53.0976048787879",
+        "name": "rendering.mobile/google_plus"
+    },
+    {
+        "duration": "49.34965130303031",
+        "name": "rendering.mobile/google_plus_desktop"
+    },
+    {
+        "duration": "53.0201178888889",
+        "name": "rendering.mobile/google_plus_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.091247535353528",
+        "name": "rendering.mobile/google_plus_mobile"
+    },
+    {
+        "duration": "25.659571282828285",
+        "name": "rendering.mobile/google_plus_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.594077484848494",
+        "name": "rendering.mobile/google_plus_sync_scroll"
+    },
+    {
+        "duration": "32.285498",
+        "name": "rendering.mobile/google_search_pinch"
+    },
+    {
+        "duration": "29.068512666666667",
+        "name": "rendering.mobile/google_search_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.663153060606056",
+        "name": "rendering.mobile/google_web_search"
+    },
+    {
+        "duration": "19.10346148484848",
+        "name": "rendering.mobile/google_web_search_desktop"
+    },
+    {
+        "duration": "20.521905535353532",
+        "name": "rendering.mobile/google_web_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.53076690909091",
+        "name": "rendering.mobile/google_web_search_mobile"
+    },
+    {
+        "duration": "20.568918888888888",
+        "name": "rendering.mobile/google_web_search_mobile_sync_scroll"
+    },
+    {
+        "duration": "18.667886272727277",
+        "name": "rendering.mobile/google_web_search_sync_scroll"
+    },
+    {
+        "duration": "20.593671030303028",
+        "name": "rendering.mobile/gsp.ro"
+    },
+    {
+        "duration": "24.354233686868692",
+        "name": "rendering.mobile/gsp.ro_mobile"
+    },
+    {
+        "duration": "22.800213808080805",
+        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll"
+    },
+    {
+        "duration": "20.80026847474748",
+        "name": "rendering.mobile/gsp.ro_sync_scroll"
+    },
+    {
+        "duration": "26.193813777777784",
+        "name": "rendering.mobile/guardian_pathological"
+    },
+    {
+        "duration": "33.0489517979798",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "24.080987737373732",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "24.325651333333333",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "27.45873014141414",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "25.949334484848492",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "43.33538140909091",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "37.04549545454545",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "44.183727",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "44.53151188235294",
+        "name": "rendering.mobile/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "114.64213447058823",
+        "name": "rendering.mobile/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "44.68450211764706",
+        "name": "rendering.mobile/idle_power_set_timetout"
+    },
+    {
+        "duration": "42.386211848484834",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "39.65920802020203",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "30.821446545454542",
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "28.44533681818182",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "45.340965958333335",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "39.53368433333334",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "33.567312833333325",
+        "name": "rendering.mobile/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "33.67430166666667",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "26.419998020202023",
+        "name": "rendering.mobile/kevs_3d"
+    },
+    {
+        "duration": "29.9396401919192",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "29.941966535353536",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "35.391749505050505",
+        "name": "rendering.mobile/latimes_pathological"
+    },
+    {
+        "duration": "23.377529373737378",
+        "name": "rendering.mobile/linkedin"
+    },
+    {
+        "duration": "21.664453161616166",
+        "name": "rendering.mobile/linkedin_desktop"
+    },
+    {
+        "duration": "21.38351271717172",
+        "name": "rendering.mobile/linkedin_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.034669101010113",
+        "name": "rendering.mobile/linkedin_mobile"
+    },
+    {
+        "duration": "29.61125551515153",
+        "name": "rendering.mobile/linkedin_mobile_sync_scroll"
+    },
+    {
+        "duration": "31.656492292929283",
+        "name": "rendering.mobile/linkedin_pathological"
+    },
+    {
+        "duration": "29.568282666666665",
+        "name": "rendering.mobile/linkedin_pinch"
+    },
+    {
+        "duration": "26.789164666666665",
+        "name": "rendering.mobile/linkedin_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.352084717171714",
+        "name": "rendering.mobile/linkedin_sync_scroll"
+    },
+    {
+        "duration": "21.49472781818183",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "32.29751189898991",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "25.537289434343432",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "35.095952484848496",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "7.603541172727268",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "55.51944866666666",
+        "name": "rendering.mobile/maps_perf_test"
+    },
+    {
+        "duration": "24.01142648484848",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "32.2619013255814",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "33.626612535353544",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "27.520794343434353",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "27.915859868686873",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "32.524374828282824",
+        "name": "rendering.mobile/microsoft_fireflies"
+    },
+    {
+        "duration": "26.503395393939403",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "25.823028111111114",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "22.604725414141413",
+        "name": "rendering.mobile/microsoft_speed_reading"
+    },
+    {
+        "duration": "27.463333000000002",
+        "name": "rendering.mobile/microsoft_tweet_map"
+    },
+    {
+        "duration": "28.977805666666658",
+        "name": "rendering.mobile/microsoft_video_city"
+    },
+    {
+        "duration": "24.03928810101009",
+        "name": "rendering.mobile/microsoft_worker_fountains"
+    },
+    {
+        "duration": "25.119297030303027",
+        "name": "rendering.mobile/mix_10k"
+    },
+    {
+        "duration": "29.245323363636366",
+        "name": "rendering.mobile/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "29.06936226262626",
+        "name": "rendering.mobile/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "33.241508353535345",
+        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "28.630313222222224",
+        "name": "rendering.mobile/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "17.292961555555557",
+        "name": "rendering.mobile/mlb"
+    },
+    {
+        "duration": "18.763747181818186",
+        "name": "rendering.mobile/mlb_mobile"
+    },
+    {
+        "duration": "18.808088383838385",
+        "name": "rendering.mobile/mlb_mobile_sync_scroll"
+    },
+    {
+        "duration": "17.40261254545454",
+        "name": "rendering.mobile/mlb_sync_scroll"
+    },
+    {
+        "duration": "21.94214053535353",
+        "name": "rendering.mobile/mobile_news_sandbox"
+    },
+    {
+        "duration": "28.730526494949498",
+        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "28.919999090909094",
+        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "39.00933286868686",
+        "name": "rendering.mobile/motion_mark_focus"
+    },
+    {
+        "duration": "41.33796925",
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "34.01178625",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "23.701068958333334",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "21.639255791666667",
+        "name": "rendering.mobile/no_op_settimeout"
+    },
+    {
+        "duration": "28.010714166666673",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "7.583393105050508",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "39.51689995959597",
+        "name": "rendering.mobile/nyc_gov_scroll"
+    },
+    {
+        "duration": "24.399065000000007",
+        "name": "rendering.mobile/nytimes"
+    },
+    {
+        "duration": "28.23062183838384",
+        "name": "rendering.mobile/nytimes_mobile"
+    },
+    {
+        "duration": "35.87093529292929",
+        "name": "rendering.mobile/nytimes_scroll"
+    },
+    {
+        "duration": "24.241166606060613",
+        "name": "rendering.mobile/nytimes_sync_scroll"
+    },
+    {
+        "duration": "36.806423050505046",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "27.197872808080806",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "7.562818965591399",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "38.74670429032259",
+        "name": "rendering.mobile/pbs_pathological"
+    },
+    {
+        "duration": "20.323570323232325",
+        "name": "rendering.mobile/physical_simulation"
+    },
+    {
+        "duration": "33.887317555555576",
+        "name": "rendering.mobile/pinterest"
+    },
+    {
+        "duration": "29.583974373737373",
+        "name": "rendering.mobile/pinterest_desktop"
+    },
+    {
+        "duration": "4.4593811E-4",
+        "name": "rendering.mobile/pinterest_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.796145202020206",
+        "name": "rendering.mobile/pinterest_mobile"
+    },
+    {
+        "duration": "32.53622798989899",
+        "name": "rendering.mobile/pinterest_mobile_sync_scroll"
+    },
+    {
+        "duration": "31.78154371717172",
+        "name": "rendering.mobile/pinterest_sync_scroll"
+    },
+    {
+        "duration": "23.295003626262623",
+        "name": "rendering.mobile/put_get_image_data"
+    },
+    {
+        "duration": "30.73236110752688",
+        "name": "rendering.mobile/raf"
+    },
+    {
+        "duration": "30.43384202150539",
+        "name": "rendering.mobile/raf_animation"
+    },
+    {
+        "duration": "29.44083316129032",
+        "name": "rendering.mobile/raf_canvas"
+    },
+    {
+        "duration": "30.231114763440868",
+        "name": "rendering.mobile/raf_touch_animation"
+    },
+    {
+        "duration": "40.78491261290322",
+        "name": "rendering.mobile/recode_pathological"
+    },
+    {
+        "duration": "30.637468989898984",
+        "name": "rendering.mobile/reddit"
+    },
+    {
+        "duration": "32.57707035353535",
+        "name": "rendering.mobile/reddit_mobile"
+    },
+    {
+        "duration": "30.725155121212126",
+        "name": "rendering.mobile/reddit_sync_scroll"
+    },
+    {
+        "duration": "24.934400313131313",
+        "name": "rendering.mobile/runway"
+    },
+    {
+        "duration": "7.559991541935486",
+        "name": "rendering.mobile/san_angeles"
+    },
+    {
+        "duration": "19.534874623655906",
+        "name": "rendering.mobile/second_batch_js_heavy"
+    },
+    {
+        "duration": "17.562825376344083",
+        "name": "rendering.mobile/second_batch_js_light"
+    },
+    {
+        "duration": "18.02383311827957",
+        "name": "rendering.mobile/second_batch_js_medium"
+    },
+    {
+        "duration": "25.003978363636357",
+        "name": "rendering.mobile/sfgate"
+    },
+    {
+        "duration": "27.034497646464644",
+        "name": "rendering.mobile/sfgate_mobile"
+    },
+    {
+        "duration": "26.003216747474745",
+        "name": "rendering.mobile/sfgate_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.471713424242427",
+        "name": "rendering.mobile/sfgate_sync_scroll"
+    },
+    {
+        "duration": "37.13170815053764",
+        "name": "rendering.mobile/silk_finance"
+    },
+    {
+        "duration": "27.086741344086022",
+        "name": "rendering.mobile/simple_text_page"
+    },
+    {
+        "duration": "20.53291069892473",
+        "name": "rendering.mobile/simple_touch_drag"
+    },
+    {
+        "duration": "31.924260939393946",
+        "name": "rendering.mobile/slashdot"
+    },
+    {
+        "duration": "35.89750751515151",
+        "name": "rendering.mobile/slashdot_mobile"
+    },
+    {
+        "duration": "32.06565352525253",
+        "name": "rendering.mobile/slashdot_sync_scroll"
+    },
+    {
+        "duration": "21.915997767441866",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "34.567985129032245",
+        "name": "rendering.mobile/small_texture_uploads"
+    },
+    {
+        "duration": "29.012581858585865",
+        "name": "rendering.mobile/smash_cat"
+    },
+    {
+        "duration": "22.647519747474757",
+        "name": "rendering.mobile/spielzeugz"
+    },
+    {
+        "duration": "21.653989888888898",
+        "name": "rendering.mobile/sticky_using_webkit"
+    },
+    {
+        "duration": "40.11074975757576",
+        "name": "rendering.mobile/stress_hidey_bars"
+    },
+    {
+        "duration": "24.20984845454545",
+        "name": "rendering.mobile/stroke_shapes"
+    },
+    {
+        "duration": "34.05367237634409",
+        "name": "rendering.mobile/svg_icon_raster"
+    },
+    {
+        "duration": "18.27374470930232",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "26.081036050505062",
+        "name": "rendering.mobile/swipe_to_dismiss"
+    },
+    {
+        "duration": "26.100133107526876",
+        "name": "rendering.mobile/sync_scroll_offset"
+    },
+    {
+        "duration": "45.04566952525253",
+        "name": "rendering.mobile/techcrunch"
+    },
+    {
+        "duration": "41.525157595959605",
+        "name": "rendering.mobile/techcrunch_desktop"
+    },
+    {
+        "duration": "43.68364092929291",
+        "name": "rendering.mobile/techcrunch_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.278045373737374",
+        "name": "rendering.mobile/techcrunch_mobile"
+    },
+    {
+        "duration": "22.921168414141427",
+        "name": "rendering.mobile/techcrunch_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.43660665656567",
+        "name": "rendering.mobile/techcrunch_sync_scroll"
+    },
+    {
+        "duration": "28.656075000000012",
+        "name": "rendering.mobile/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "28.365036559139774",
+        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.73774997849463",
+        "name": "rendering.mobile/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "28.677685075268815",
+        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.409736311827956",
+        "name": "rendering.mobile/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "28.963632161290338",
+        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.516060311827967",
+        "name": "rendering.mobile/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "29.165279172043014",
+        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.04056062365592",
+        "name": "rendering.mobile/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "29.5563729139785",
+        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.578600000000005",
+        "name": "rendering.mobile/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "29.71726797849463",
+        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.43841478494625",
+        "name": "rendering.mobile/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "28.43423647311829",
+        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.929308860215055",
+        "name": "rendering.mobile/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "26.819841118279562",
+        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.18476030107527",
+        "name": "rendering.mobile/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "24.624503827956985",
+        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.675028150537635",
+        "name": "rendering.mobile/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "22.959292268817208",
+        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.701615537634396",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "31.09030440860215",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.525134118279567",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "31.1482725268817",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.560283860215055",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "30.87192461290324",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.35378797849463",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "30.75954113978495",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.978395784946237",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "30.462337419354807",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.821854408602157",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "30.566622430107525",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.74221713978494",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "30.515755397849478",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.23257810752688",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "28.78629304301075",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.98888755913979",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "26.595047129032263",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.79131903225806",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "25.387302881720423",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.806486559139778",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.826512537634414",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.894548473118277",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.780747462365603",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.870093741935474",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.920348430107524",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.893612720430113",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.791566483870973",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.859780043010762",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.812002247311828",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.9359763763441",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "22.790413462365592",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.112987473118284",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "22.17359784946236",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.176968666666664",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.03072067741936",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.14100089247312",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.127702365591382",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.415383526881715",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "19.324662580645168",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.00065793939393",
+        "name": "rendering.mobile/theverge"
+    },
+    {
+        "duration": "39.81870460606061",
+        "name": "rendering.mobile/theverge_article"
+    },
+    {
+        "duration": "44.37530963636365",
+        "name": "rendering.mobile/theverge_article_mobile"
+    },
+    {
+        "duration": "42.99149640404041",
+        "name": "rendering.mobile/theverge_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "39.855753313131316",
+        "name": "rendering.mobile/theverge_article_sync_scroll"
+    },
+    {
+        "duration": "24.996239202020202",
+        "name": "rendering.mobile/theverge_mobile"
+    },
+    {
+        "duration": "25.158719202020194",
+        "name": "rendering.mobile/theverge_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.067712303030316",
+        "name": "rendering.mobile/theverge_sync_scroll"
+    },
+    {
+        "duration": "27.716981575757572",
+        "name": "rendering.mobile/toggle_drawer"
+    },
+    {
+        "duration": "27.237242344086024",
+        "name": "rendering.mobile/touch_handler_scrolling"
+    },
+    {
+        "duration": "31.604522090909096",
+        "name": "rendering.mobile/transform_transitions"
+    },
+    {
+        "duration": "29.361833333333333",
+        "name": "rendering.mobile/transform_transitions_js_block"
+    },
+    {
+        "duration": "27.095014282828277",
+        "name": "rendering.mobile/twitter"
+    },
+    {
+        "duration": "25.58109216161617",
+        "name": "rendering.mobile/twitter_desktop"
+    },
+    {
+        "duration": "25.496539040404038",
+        "name": "rendering.mobile/twitter_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.58765366666666",
+        "name": "rendering.mobile/twitter_pinch"
+    },
+    {
+        "duration": "33.391255666666666",
+        "name": "rendering.mobile/twitter_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "3.40795518E-4",
+        "name": "rendering.mobile/twitter_sync_scroll"
+    },
+    {
+        "duration": "28.060378860215067",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "38.562808737373736",
+        "name": "rendering.mobile/usatoday"
+    },
+    {
+        "duration": "41.62148388888889",
+        "name": "rendering.mobile/usatoday_mobile"
+    },
+    {
+        "duration": "44.370432121212126",
+        "name": "rendering.mobile/usatoday_mobile_sync_scroll"
+    },
+    {
+        "duration": "40.255123797979785",
+        "name": "rendering.mobile/usatoday_sync_scroll"
+    },
+    {
+        "duration": "27.5199887979798",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "36.457599929292925",
+        "name": "rendering.mobile/weather.com"
+    },
+    {
+        "duration": "32.078250616161604",
+        "name": "rendering.mobile/weather.com_desktop"
+    },
+    {
+        "duration": "34.37037654545454",
+        "name": "rendering.mobile/weather.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "47.059929333333336",
+        "name": "rendering.mobile/weather_pinch"
+    },
+    {
+        "duration": "45.853959999999994",
+        "name": "rendering.mobile/weather_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.76984192929293",
+        "name": "rendering.mobile/web_animation_value_type_color"
+    },
+    {
+        "duration": "28.220550888888894",
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "30.01323650505051",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "29.98670767676769",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "29.31427601010101",
+        "name": "rendering.mobile/web_animation_value_type_path"
+    },
+    {
+        "duration": "28.58203103030303",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "28.18084127272727",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "28.24787893939394",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "47.9873563131313",
+        "name": "rendering.mobile/web_animations_many_keyframes"
+    },
+    {
+        "duration": "28.359497676767674",
+        "name": "rendering.mobile/web_animations_set_current_time"
+    },
+    {
+        "duration": "30.29752707070708",
+        "name": "rendering.mobile/web_animations_simultaneous"
+    },
+    {
+        "duration": "32.642023010101006",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "29.825496676767667",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "33.27374724242422",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "41.18986904040405",
+        "name": "rendering.mobile/wikipedia"
+    },
+    {
+        "duration": "29.36218761616162",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "29.23955785858587",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll"
+    },
+    {
+        "duration": "38.98228400000001",
+        "name": "rendering.mobile/wikipedia_desktop"
+    },
+    {
+        "duration": "40.86173036363636",
+        "name": "rendering.mobile/wikipedia_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.972319989898995",
+        "name": "rendering.mobile/wikipedia_mobile"
+    },
+    {
+        "duration": "29.168009161616176",
+        "name": "rendering.mobile/wikipedia_mobile_sync_scroll"
+    },
+    {
+        "duration": "27.480506494949495",
+        "name": "rendering.mobile/wikipedia_sync_scroll"
+    },
+    {
+        "duration": "39.56640494949495",
+        "name": "rendering.mobile/wordpress"
+    },
+    {
+        "duration": "34.96906301010102",
+        "name": "rendering.mobile/wordpress_desktop"
+    },
+    {
+        "duration": "37.769393777777765",
+        "name": "rendering.mobile/wordpress_desktop_gpu_raster"
+    },
+    {
+        "duration": "37.56146424242425",
+        "name": "rendering.mobile/wordpress_mobile"
+    },
+    {
+        "duration": "36.502917525252535",
+        "name": "rendering.mobile/wordpress_mobile_sync_scroll"
+    },
+    {
+        "duration": "32.801724282828275",
+        "name": "rendering.mobile/wordpress_sync_scroll"
+    },
+    {
+        "duration": "52.73134069696972",
+        "name": "rendering.mobile/worldjournal"
+    },
+    {
+        "duration": "58.770228878787904",
+        "name": "rendering.mobile/worldjournal_mobile"
+    },
+    {
+        "duration": "57.43724744444442",
+        "name": "rendering.mobile/worldjournal_mobile_sync_scroll"
+    },
+    {
+        "duration": "53.03150033333334",
+        "name": "rendering.mobile/worldjournal_sync_scroll"
+    },
+    {
+        "duration": "42.889303634408606",
+        "name": "rendering.mobile/wow_wiki_pathological"
+    },
+    {
+        "duration": "50.3021672727273",
+        "name": "rendering.mobile/wowwiki"
+    },
+    {
+        "duration": "54.06265522222223",
+        "name": "rendering.mobile/wowwiki_mobile"
+    },
+    {
+        "duration": "52.13650729292931",
+        "name": "rendering.mobile/wowwiki_mobile_sync_scroll"
+    },
+    {
+        "duration": "49.307267838383844",
+        "name": "rendering.mobile/wowwiki_sync_scroll"
+    },
+    {
+        "duration": "21.564196212121214",
+        "name": "rendering.mobile/wsj"
+    },
+    {
+        "duration": "24.756517565656566",
+        "name": "rendering.mobile/wsj_mobile"
+    },
+    {
+        "duration": "23.195784212121218",
+        "name": "rendering.mobile/wsj_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.64190367676769",
+        "name": "rendering.mobile/wsj_sync_scroll"
+    },
+    {
+        "duration": "29.10180639393941",
+        "name": "rendering.mobile/yahoo_answers"
+    },
+    {
+        "duration": "25.12486546464647",
+        "name": "rendering.mobile/yahoo_answers_desktop"
+    },
+    {
+        "duration": "26.7815357979798",
+        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.6426817979798",
+        "name": "rendering.mobile/yahoo_answers_mobile"
+    },
+    {
+        "duration": "28.173793484848485",
+        "name": "rendering.mobile/yahoo_answers_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.56278345454545",
+        "name": "rendering.mobile/yahoo_answers_sync_scroll"
+    },
+    {
+        "duration": "42.3530444949495",
+        "name": "rendering.mobile/yahoo_games"
+    },
+    {
+        "duration": "39.77383028282827",
+        "name": "rendering.mobile/yahoo_games_desktop"
+    },
+    {
+        "duration": "42.27087",
+        "name": "rendering.mobile/yahoo_games_desktop_gpu_raster"
+    },
+    {
+        "duration": "43.859453333333335",
+        "name": "rendering.mobile/yahoo_games_pinch"
+    },
+    {
+        "duration": "43.764855000000004",
+        "name": "rendering.mobile/yahoo_games_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.631884929292916",
+        "name": "rendering.mobile/yahoo_news"
+    },
+    {
+        "duration": "29.321934545454546",
+        "name": "rendering.mobile/yahoo_news_desktop"
+    },
+    {
+        "duration": "31.871644505050504",
+        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.606784747474745",
+        "name": "rendering.mobile/yahoo_news_mobile"
+    },
+    {
+        "duration": "26.300175777777767",
+        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "45.85412333333333",
+        "name": "rendering.mobile/yahoo_news_pinch"
+    },
+    {
+        "duration": "41.07607633333333",
+        "name": "rendering.mobile/yahoo_news_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.86919155555556",
+        "name": "rendering.mobile/yahoo_news_sync_scroll"
+    },
+    {
+        "duration": "30.906718161616155",
+        "name": "rendering.mobile/yahoo_sports"
+    },
+    {
+        "duration": "27.327066343434343",
+        "name": "rendering.mobile/yahoo_sports_desktop"
+    },
+    {
+        "duration": "31.07311895959596",
+        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.34273092473118",
+        "name": "rendering.mobile/yahoo_sports_pathological"
+    },
+    {
+        "duration": "52.27573",
+        "name": "rendering.mobile/yahoo_sports_pinch"
+    },
+    {
+        "duration": "48.71526733333334",
+        "name": "rendering.mobile/yahoo_sports_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "43.76959334343435",
+        "name": "rendering.mobile/youtube"
+    },
+    {
+        "duration": "40.82506769696968",
+        "name": "rendering.mobile/youtube_desktop"
+    },
+    {
+        "duration": "43.77971033333334",
+        "name": "rendering.mobile/youtube_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.125193565656563",
+        "name": "rendering.mobile/youtube_mobile"
+    },
+    {
+        "duration": "18.345512202020196",
+        "name": "rendering.mobile/youtube_mobile_sync_scroll"
+    },
+    {
+        "duration": "40.917662",
+        "name": "rendering.mobile/youtube_pinch"
+    },
+    {
+        "duration": "37.080086333333334",
+        "name": "rendering.mobile/youtube_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.775915909090905",
+        "name": "rendering.mobile/youtube_sync_scroll"
+    },
+    {
+        "duration": "49.528427666666694",
+        "name": "rendering.mobile/yuv_decoding"
+    },
+    {
+        "duration": "50.14091669892475",
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+    },
+    {
+        "duration": "35.21747605376345",
+        "name": "rendering.mobile/zdnet_pathological"
+    },
+    {
+        "duration": "25.09036804040404",
+        "name": "rendering.mobile/zoom_in_animation"
+    },
+    {
+        "duration": "21.975293202020193",
+        "name": "scheduler.tough_scheduling_cases/raf"
+    },
+    {
+        "duration": "22.275414393939393",
+        "name": "scheduler.tough_scheduling_cases/raf.html"
+    },
+    {
+        "duration": "22.013144434343435",
+        "name": "scheduler.tough_scheduling_cases/raf_animation"
+    },
+    {
+        "duration": "22.24018718181819",
+        "name": "scheduler.tough_scheduling_cases/raf_animation.html"
+    },
+    {
+        "duration": "21.676966414141415",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas"
+    },
+    {
+        "duration": "21.962230414141406",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas.html"
+    },
+    {
+        "duration": "22.090898303030304",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation"
+    },
+    {
+        "duration": "22.356499656565656",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation.html"
+    },
+    {
+        "duration": "16.028108398989897",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?heavy"
+    },
+    {
+        "duration": "14.728392106060605",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?light"
+    },
+    {
+        "duration": "14.928485803030298",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?medium"
+    },
+    {
+        "duration": "15.975726833333333",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_heavy"
+    },
+    {
+        "duration": "14.806964429292927",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_light"
+    },
+    {
+        "duration": "14.869953979797971",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_medium"
+    },
+    {
+        "duration": "31.279749676767672",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page"
+    },
+    {
+        "duration": "31.200018090909094",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page.html"
+    },
+    {
+        "duration": "16.63459627272726",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag"
+    },
+    {
+        "duration": "16.74704975757576",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag.html"
+    },
+    {
+        "duration": "20.122392262626263",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset"
+    },
+    {
+        "duration": "20.221468202020194",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset.html"
+    },
+    {
+        "duration": "21.074166121212123",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling"
+    },
+    {
+        "duration": "21.245075717171726",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling.html"
+    },
+    {
+        "duration": "1.3672388384615387E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/amazon"
+    },
+    {
+        "duration": "29.559217454545454",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "21.37397459595959",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "2.4060102307692306E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/cnn"
+    },
+    {
+        "duration": "15.996043530303032",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/ebay"
+    },
+    {
+        "duration": "20.003099383838375",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/espn"
+    },
+    {
+        "duration": "24.46697662626262",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/facebook"
+    },
+    {
+        "duration": "52.9324084747475",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/gmail"
+    },
+    {
+        "duration": "29.367572515151522",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "42.36682989898989",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "32.791803848484825",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "40.01671555555555",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "16.965352686868684",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "19.068707373737375",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "2.694863546153846E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "28.90711563636365",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "22.212719101010105",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/twitter"
+    },
+    {
+        "duration": "23.364910242424244",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "32.96347789898989",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "26.604052000000014",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "20.628028454545454",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "32.666041171717154",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "24.606318323232326",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "23.36781426262627",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "32.54029385858586",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/youtube"
+    },
+    {
+        "duration": "26.041854616161622",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "25.63097980808081",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "28.24115184848486",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "35.90978741414142",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "25.704148808080802",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "25.094546515151514",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "27.774057343434336",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "35.87789235353536",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "34.73497755555555",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "34.93253363636366",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "23.872993555555542",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "24.293722646464648",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "34.87273093939394",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "34.999033646464646",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "23.867650494949494",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "24.219441656565653",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "26.95992750505051",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "36.433960545454546",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "24.935632141414157",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "20.294813575757573",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "24.96297591919192",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "31.29722076767677",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "20.37067298989899",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "27.219244939393935",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "23.840432888888877",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "30.344446707070688",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "27.657012353535357",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "36.51213163636365",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "25.053536313131314",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "39.312496595959594",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "23.98436351515153",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "24.198363828282833",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "33.074471858585866",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "24.09989068686868",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "31.25293514141416",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "29.69407744444444",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "33.38695116161617",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "20.518540464646467",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "30.06464096969697",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "27.635233222222208",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "26.871494626262617",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "39.408727666666664",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "33.7226107070707",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "23.91208425252525",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "24.20390333333334",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "20.249675727272724",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "24.972913424242428",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "31.31737513131313",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "31.07474886868688",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_games_pinch"
+    },
+    {
+        "duration": "29.988767353535355",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "34.66641471717171",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "27.226104797979804",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "22.283025888888883",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.371650696969688",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.393272363636363",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.386332737373742",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.2190004949495",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.152505626262624",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.38868123232324",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.12116403030303",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "18.89706330303031",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "17.879503808080806",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "31.906925101010106",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.689788060606066",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.62108142424242",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "21.74946170707072",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.806940020202028",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.7540123939394",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.065123737373728",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "19.754696262626265",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "18.48891906060606",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "17.579699080808076",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "23.851627767676774",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.052998585858578",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "23.91149998989899",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "23.905943262626256",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "23.902980333333325",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "23.878854717171713",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "23.94601111111112",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "22.883757383838386",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.433654080808086",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.5159092929293",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.00046934343435",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.96452936363636",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "19.860238717171715",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "19.86440157575757",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "19.76782500000001",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "19.758279252525252",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "19.17118767676767",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.13185037373737",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "17.36298582828283",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.628836101010105",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "53.415654888888895",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "52.696456333333316",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "52.89401367676767",
+        "name": "smoothness.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "51.935412202020196",
+        "name": "smoothness.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "4.1877306461538465E-4",
+        "name": "smoothness.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "22.74497036363637",
+        "name": "smoothness.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "16.320247686868683",
+        "name": "smoothness.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "14.76293605555556",
+        "name": "smoothness.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "17.434087848484847",
+        "name": "smoothness.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "29.891381737373745",
+        "name": "smoothness.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "21.99221743434344",
+        "name": "smoothness.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "32.22116192929292",
+        "name": "smoothness.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "18.235934101010102",
+        "name": "smoothness.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "32.563196111111125",
+        "name": "smoothness.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "30.138464939393938",
+        "name": "smoothness.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "24.69969852525253",
+        "name": "smoothness.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "4.339034715384615E-4",
+        "name": "smoothness.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "19.175316787878792",
+        "name": "smoothness.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "5.714526515384616E-4",
+        "name": "smoothness.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "18.938086626262628",
+        "name": "smoothness.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "3.5482186538461543E-4",
+        "name": "smoothness.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "23.985057616161626",
+        "name": "smoothness.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "19.549295848484856",
+        "name": "smoothness.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "16.423815954545447",
+        "name": "smoothness.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "17.390450959595956",
+        "name": "smoothness.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "22.503246858585864",
+        "name": "smoothness.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "15.343731146464634",
+        "name": "smoothness.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "20.34258295959596",
+        "name": "smoothness.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "24.435818656565655",
+        "name": "smoothness.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "25.387410262626265",
+        "name": "smoothness.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "21.226459636363625",
+        "name": "smoothness.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "26.075317070707065",
+        "name": "smoothness.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "17.57953973737374",
+        "name": "smoothness.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "19.332576858585853",
+        "name": "smoothness.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "32.97026432323233",
+        "name": "smoothness.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "5.299128015384615E-4",
+        "name": "smoothness.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "29.35980153535353",
+        "name": "smoothness.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "23.1561154949495",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "23.189778121212118",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "25.53751158585857",
+        "name": "smoothness.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "35.096707242424245",
+        "name": "smoothness.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "37.21760711111109",
+        "name": "smoothness.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "18.116190636363637",
+        "name": "smoothness.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "20.89226423232323",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "19.747482202020205",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "16.86235464646464",
+        "name": "smoothness.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "28.35436043434343",
+        "name": "smoothness.key_silk_cases/basic_stream"
+    },
+    {
+        "duration": "19.157723929292935",
+        "name": "smoothness.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "20.48331017171717",
+        "name": "smoothness.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "20.01657168686868",
+        "name": "smoothness.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "18.792259868686873",
+        "name": "smoothness.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "20.259622676767677",
+        "name": "smoothness.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "19.865538414141422",
+        "name": "smoothness.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "19.899110676767677",
+        "name": "smoothness.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "21.634918676767672",
+        "name": "smoothness.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "20.68147267676768",
+        "name": "smoothness.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "20.98884344444445",
+        "name": "smoothness.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "19.795737838383836",
+        "name": "smoothness.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "41.10510997979797",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "18.0580417070707",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "16.82683998989899",
+        "name": "smoothness.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "18.961777787878784",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "18.630068909090912",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "19.069617848484853",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "19.756200797979798",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "20.262607929292926",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "19.647711777777776",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "20.165375575757572",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "18.894421888888882",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "20.429633646464644",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "20.45880956565657",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "19.29744724242424",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "21.610260474747474",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "18.180165000000002",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "28.648300808080812",
+        "name": "smoothness.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "2.4102284461538463E-4",
+        "name": "smoothness.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "27.426837191919187",
+        "name": "smoothness.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "21.090841848484853",
+        "name": "smoothness.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "2.860105938461538E-4",
+        "name": "smoothness.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "20.755075979797972",
+        "name": "smoothness.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "2.4421398384615387E-4",
+        "name": "smoothness.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "31.213965666666667",
+        "name": "smoothness.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "15.680560520202027",
+        "name": "smoothness.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "23.33734384848485",
+        "name": "smoothness.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "24.205095575757575",
+        "name": "smoothness.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "24.194204828282828",
+        "name": "smoothness.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "18.021843585858583",
+        "name": "smoothness.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "17.970933838383843",
+        "name": "smoothness.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "38.64786154545454",
+        "name": "smoothness.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "19.091247767676762",
+        "name": "smoothness.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "25.545453111111108",
+        "name": "smoothness.key_silk_cases/masonry"
+    },
+    {
+        "duration": "25.56603794949495",
+        "name": "smoothness.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "18.164561040404042",
+        "name": "smoothness.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "20.233886636363636",
+        "name": "smoothness.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "16.735833585858582",
+        "name": "smoothness.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "21.25200841414142",
+        "name": "smoothness.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "26.819159626262618",
+        "name": "smoothness.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "27.031237626262627",
+        "name": "smoothness.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "18.248782181818175",
+        "name": "smoothness.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "31.25493601010101",
+        "name": "smoothness.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "27.33127880808081",
+        "name": "smoothness.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "15.768871398989905",
+        "name": "smoothness.key_silk_cases/swipe_action"
+    },
+    {
+        "duration": "19.12300677777777",
+        "name": "smoothness.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "23.238204141414137",
+        "name": "smoothness.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "21.098754323232324",
+        "name": "smoothness.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "19.683573454545456",
+        "name": "smoothness.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "19.148632858585867",
+        "name": "smoothness.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "55.70667122222224",
+        "name": "smoothness.maps/maps_perf_test"
+    },
+    {
+        "duration": "43.10110905050504",
+        "name": "smoothness.pathological_mobile_sites/cnn_pathological"
+    },
+    {
+        "duration": "23.64929103030303",
+        "name": "smoothness.pathological_mobile_sites/espn_pathological"
+    },
+    {
+        "duration": "20.27568375757576",
+        "name": "smoothness.pathological_mobile_sites/guardian_pathological"
+    },
+    {
+        "duration": "44.36336494949495",
+        "name": "smoothness.pathological_mobile_sites/http://edition.cnn.com"
+    },
+    {
+        "duration": "24.078375787878787",
+        "name": "smoothness.pathological_mobile_sites/http://m.espn.go.com/nhl/rankings"
+    },
+    {
+        "duration": "29.87951156565656",
+        "name": "smoothness.pathological_mobile_sites/http://recode.net"
+    },
+    {
+        "duration": "27.9051883838384",
+        "name": "smoothness.pathological_mobile_sites/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "26.676571989899",
+        "name": "smoothness.pathological_mobile_sites/http://www.latimes.com"
+    },
+    {
+        "duration": "27.894595626262625",
+        "name": "smoothness.pathological_mobile_sites/http://www.pbs.org/newshour/bb/much-really-cost-live-city-like-seattle/#the-rundown"
+    },
+    {
+        "duration": "20.713500212121215",
+        "name": "smoothness.pathological_mobile_sites/http://www.theguardian.com/politics/2015/mar/09/ed-balls-tory-spending-plans-nhs-charging"
+    },
+    {
+        "duration": "31.81662791919191",
+        "name": "smoothness.pathological_mobile_sites/http://www.wowwiki.com/World_of_Warcraft:_Mists_of_Pandaria"
+    },
+    {
+        "duration": "24.627460111111102",
+        "name": "smoothness.pathological_mobile_sites/http://www.zdnet.com"
+    },
+    {
+        "duration": "24.17600297979798",
+        "name": "smoothness.pathological_mobile_sites/https://www.linkedin.com/in/linustorvalds"
+    },
+    {
+        "duration": "26.024235888888878",
+        "name": "smoothness.pathological_mobile_sites/latimes_pathological"
+    },
+    {
+        "duration": "23.706416444444454",
+        "name": "smoothness.pathological_mobile_sites/linkedin_pathological"
+    },
+    {
+        "duration": "27.64684853535355",
+        "name": "smoothness.pathological_mobile_sites/pbs_pathological"
+    },
+    {
+        "duration": "29.93111174747475",
+        "name": "smoothness.pathological_mobile_sites/recode_pathological"
+    },
+    {
+        "duration": "31.13683187878788",
+        "name": "smoothness.pathological_mobile_sites/wow_wiki_pathological"
+    },
+    {
+        "duration": "27.25247943434344",
+        "name": "smoothness.pathological_mobile_sites/yahoo_sports_pathological"
+    },
+    {
+        "duration": "25.30660070707071",
+        "name": "smoothness.pathological_mobile_sites/zdnet_pathological"
+    },
+    {
+        "duration": "42.42529554545453",
+        "name": "smoothness.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "30.27438487878788",
+        "name": "smoothness.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "28.523346616161625",
+        "name": "smoothness.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "43.48268737373738",
+        "name": "smoothness.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "30.58896903030303",
+        "name": "smoothness.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "30.90808177777778",
+        "name": "smoothness.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "30.199330323232324",
+        "name": "smoothness.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "28.11269122222223",
+        "name": "smoothness.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "17.667915171717176",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "23.29952445454546",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "16.580358494949497",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "15.101178353535355",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "17.765297858585857",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "31.3453018888889",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "22.230573383838387",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "34.618673111111114",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "18.575824515151528",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "35.06916833333334",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "30.646897939393945",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "24.70439454545454",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "4.0001528642857144E-4",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "19.618657676767672",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "28.069294575757585",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "19.283540606060605",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "20.358701494949496",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "24.275227848484842",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "21.90372991919192",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "16.86967006060606",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "17.80775661616162",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "23.435420868686865",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "15.827685217171716",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "20.62530917171717",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "25.51128823232324",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "25.323995848484838",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "21.783421444444453",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "26.67157995959597",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "18.175578494949487",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "19.829659969696973",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "33.155193060606074",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "18.3594124040404",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "30.57436205050505",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "23.38750459595959",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "23.524742838383837",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "25.960049535353544",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "35.4014",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "37.35471465656567",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "18.472124272727275",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "21.495124585858587",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "20.027951797979796",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "17.26604074747475",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "2.7225567615384613E-4",
+        "name": "smoothness.top_25_smooth/amazon"
+    },
+    {
+        "duration": "29.981920525252523",
+        "name": "smoothness.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "21.453860444444455",
+        "name": "smoothness.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "4.380299492307692E-4",
+        "name": "smoothness.top_25_smooth/cnn"
+    },
+    {
+        "duration": "16.254038166666664",
+        "name": "smoothness.top_25_smooth/ebay"
+    },
+    {
+        "duration": "20.96821633333333",
+        "name": "smoothness.top_25_smooth/espn"
+    },
+    {
+        "duration": "25.109705414141402",
+        "name": "smoothness.top_25_smooth/facebook"
+    },
+    {
+        "duration": "52.01343290909093",
+        "name": "smoothness.top_25_smooth/gmail"
+    },
+    {
+        "duration": "29.491152373737368",
+        "name": "smoothness.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "42.42611210101009",
+        "name": "smoothness.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "33.107736797979804",
+        "name": "smoothness.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "40.188886010101",
+        "name": "smoothness.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "17.30139353535353",
+        "name": "smoothness.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "19.556815020202016",
+        "name": "smoothness.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "23.592941868686864",
+        "name": "smoothness.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "28.985427575757573",
+        "name": "smoothness.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "22.584891474747476",
+        "name": "smoothness.top_25_smooth/twitter"
+    },
+    {
+        "duration": "23.937339282828283",
+        "name": "smoothness.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "33.333903989899",
+        "name": "smoothness.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "26.843245898989906",
+        "name": "smoothness.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "20.80424142424242",
+        "name": "smoothness.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "32.79646473737373",
+        "name": "smoothness.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "24.872859444444455",
+        "name": "smoothness.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "23.132797676767673",
+        "name": "smoothness.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "32.859477161616134",
+        "name": "smoothness.top_25_smooth/youtube"
+    },
+    {
+        "duration": "35.189135666666665",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swiffy72.html"
+    },
+    {
+        "duration": "25.0014647979798",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swiffy72.html"
+    },
+    {
+        "duration": "24.935004252525253",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swiffy72.html"
+    },
+    {
+        "duration": "24.960811343434344",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swiffy72.html"
+    },
+    {
+        "duration": "25.066763535353555",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swiffy72.html"
+    },
+    {
+        "duration": "24.86636162626262",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swiffy72.html"
+    },
+    {
+        "duration": "24.977818525252527",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swiffy72.html"
+    },
+    {
+        "duration": "24.948121363636364",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swiffy72.html"
+    },
+    {
+        "duration": "24.886714959595952",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swiffy72.html"
+    },
+    {
+        "duration": "24.879975636363636",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swiffy72.html"
+    },
+    {
+        "duration": "24.988196686868676",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swiffy72.html"
+    },
+    {
+        "duration": "29.91096734343434",
+        "name": "smoothness.tough_animation_cases/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "35.90631623232324",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations.html"
+    },
+    {
+        "duration": "2.328788529411764E-4",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations_composited_transform.html"
+    },
+    {
+        "duration": "25.515648363636362",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "25.480915414141414",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties.html"
+    },
+    {
+        "duration": "25.565844202020198",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "25.732376010101017",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties.html"
+    },
+    {
+        "duration": "25.660868282828275",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "25.610368161616158",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties.html"
+    },
+    {
+        "duration": "24.792493909090915",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas"
+    },
+    {
+        "duration": "24.75655014141415",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas.html"
+    },
+    {
+        "duration": "27.785680272727276",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css"
+    },
+    {
+        "duration": "32.20382105050504",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css.html"
+    },
+    {
+        "duration": "46.1187137979798",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations"
+    },
+    {
+        "duration": "46.71227849494947",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations.html"
+    },
+    {
+        "duration": "23.5459225",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation"
+    },
+    {
+        "duration": "23.69191556565658",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation.html?N=0200"
+    },
+    {
+        "duration": "30.82327986868686",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes"
+    },
+    {
+        "duration": "31.082117888888884",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "26.260326474747473",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.481367474747472",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "25.651553383838387",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "25.707597787878793",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.135818828282826",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "25.86979867676767",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "25.178016787878782",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "25.229999999999997",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "28.005273404040402",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "28.45169093939394",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.443114838383856",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.226092878787867",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "23.915809727272727",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "24.452464070707077",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "26.92955256565656",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "27.628480929292937",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "28.08333662626261",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "28.202227585858576",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.36128752525252",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.100335525252518",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.178049181818185",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.90561173737375",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "26.616242707070697",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "27.794033848484847",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "26.009094262626274",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "26.76817206060607",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "25.484859909090908",
+        "name": "smoothness.tough_animation_cases/css_transitions_inline_style"
+    },
+    {
+        "duration": "26.21097662626262",
+        "name": "smoothness.tough_animation_cases/css_transitions_new_element"
+    },
+    {
+        "duration": "26.24749988888889",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.888156828282817",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "25.86573647474746",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "25.921382424242424",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.092360828282818",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.167686",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.202571383838386",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.37984155555556",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.91764340404041",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "25.770711787878785",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "25.882662525252528",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "26.840390989899",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.205259969696982",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.65822021212122",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.64502703030303",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.85281162626265",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "25.56082601010102",
+        "name": "smoothness.tough_animation_cases/css_transitions_style_element"
+    },
+    {
+        "duration": "26.274787575757575",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "26.50342750505051",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "25.79521220202022",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "26.317187262626263",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "25.514755646464657",
+        "name": "smoothness.tough_animation_cases/css_transitions_updating_class"
+    },
+    {
+        "duration": "23.691799888888887",
+        "name": "smoothness.tough_animation_cases/css_value_type_color"
+    },
+    {
+        "duration": "23.894849494949504",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.062226060606058",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "25.36669587878788",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter"
+    },
+    {
+        "duration": "25.419951636363635",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.827251191919196",
+        "name": "smoothness.tough_animation_cases/css_value_type_length"
+    },
+    {
+        "duration": "23.89374676767677",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.00158176767676",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.667638777777768",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex"
+    },
+    {
+        "duration": "23.856615313131304",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.055170060606066",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.675110939393935",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple"
+    },
+    {
+        "duration": "23.825404252525253",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.016747363636366",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.739150858585862",
+        "name": "smoothness.tough_animation_cases/css_value_type_path"
+    },
+    {
+        "duration": "23.919298212121216",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.9443094040404",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.131673262626258",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow"
+    },
+    {
+        "duration": "24.22520240404039",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.31888511111111",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.839394525252516",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex"
+    },
+    {
+        "duration": "23.925360101010096",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.010286606060603",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.74980212121213",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple"
+    },
+    {
+        "duration": "23.83549994949496",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.927773757575757",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.305640464646462",
+        "name": "smoothness.tough_animation_cases/keyframed_animations"
+    },
+    {
+        "duration": "23.630687696969684",
+        "name": "smoothness.tough_animation_cases/keyframed_animations.html"
+    },
+    {
+        "duration": "24.1807326060606",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "24.307760242424248",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference.html"
+    },
+    {
+        "duration": "24.11392433333334",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "24.215370585858594",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue.html"
+    },
+    {
+        "duration": "24.178486313131323",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "23.68403870707071",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "23.74096678787878",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen.html"
+    },
+    {
+        "duration": "24.34707771717172",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_propagating_isolation.html"
+    },
+    {
+        "duration": "27.50349680808081",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions.html"
+    },
+    {
+        "duration": "27.666900989898984",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "2.266799705882353E-4",
+        "name": "smoothness.tough_animation_cases/robohornetpro"
+    },
+    {
+        "duration": "23.679726818181823",
+        "name": "smoothness.tough_animation_cases/transform_transition_js_block.html"
+    },
+    {
+        "duration": "23.67798113131314",
+        "name": "smoothness.tough_animation_cases/transform_transitions"
+    },
+    {
+        "duration": "24.023825141414143",
+        "name": "smoothness.tough_animation_cases/transform_transitions.html"
+    },
+    {
+        "duration": "23.40656335353535",
+        "name": "smoothness.tough_animation_cases/transform_transitions_js_block"
+    },
+    {
+        "duration": "23.840137313131326",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_color"
+    },
+    {
+        "duration": "23.892769858585858",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "23.857247525252518",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "23.902314333333333",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "23.748644575757574",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_path"
+    },
+    {
+        "duration": "24.23186916161616",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "23.89343805050504",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "23.818512999999996",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "43.16914865656565",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes"
+    },
+    {
+        "duration": "42.938182262626256",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "23.768220454545453",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time"
+    },
+    {
+        "duration": "24.015573484848478",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time_in_raf.html?N=0316"
+    },
+    {
+        "duration": "25.086768919191922",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous"
+    },
+    {
+        "duration": "25.314835444444427",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous.html?N=0316"
+    },
+    {
+        "duration": "26.432304191919183",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "26.839131535353538",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining.html?N=0316"
+    },
+    {
+        "duration": "23.83016606060606",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "24.231214151515154",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "27.195218737373736",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering.html?N=0316"
+    },
+    {
+        "duration": "26.772693474747474",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "26.354133898989907",
+        "name": "smoothness.tough_canvas_cases/../../../chrome/test/data/perf/canvas_bench/many_images.html"
+    },
+    {
+        "duration": "18.88682637373737",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_15"
+    },
+    {
+        "duration": "29.09439703030303",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_shadow"
+    },
+    {
+        "duration": "24.165571262626273",
+        "name": "smoothness.tough_canvas_cases/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "19.81798271717172",
+        "name": "smoothness.tough_canvas_cases/bouncing_gradient_circles"
+    },
+    {
+        "duration": "17.854360636363648",
+        "name": "smoothness.tough_canvas_cases/bouncing_png_images"
+    },
+    {
+        "duration": "28.273210858585855",
+        "name": "smoothness.tough_canvas_cases/bouncing_svg_images"
+    },
+    {
+        "duration": "18.60975891919192",
+        "name": "smoothness.tough_canvas_cases/canvas_animation_no_clear"
+    },
+    {
+        "duration": "20.119561656565647",
+        "name": "smoothness.tough_canvas_cases/canvas_arcs"
+    },
+    {
+        "duration": "20.052980676767678",
+        "name": "smoothness.tough_canvas_cases/canvas_font_cycler"
+    },
+    {
+        "duration": "19.740233717171723",
+        "name": "smoothness.tough_canvas_cases/canvas_lines"
+    },
+    {
+        "duration": "19.1929466060606",
+        "name": "smoothness.tough_canvas_cases/canvas_to_blob"
+    },
+    {
+        "duration": "19.370078424242426",
+        "name": "smoothness.tough_canvas_cases/chip_tune"
+    },
+    {
+        "duration": "19.025135747474746",
+        "name": "smoothness.tough_canvas_cases/crafty_mind"
+    },
+    {
+        "duration": "20.461694222222224",
+        "name": "smoothness.tough_canvas_cases/effect_games"
+    },
+    {
+        "duration": "19.925270222222217",
+        "name": "smoothness.tough_canvas_cases/fill_shapes"
+    },
+    {
+        "duration": "19.77938428282829",
+        "name": "smoothness.tough_canvas_cases/hakim"
+    },
+    {
+        "duration": "0.0012243252569230768",
+        "name": "smoothness.tough_canvas_cases/http://geoapis.appspot.com/agdnZW9hcGlzchMLEgtFeGFtcGxlQ29kZRjh1wIM"
+    },
+    {
+        "duration": "19.931289727272727",
+        "name": "smoothness.tough_canvas_cases/http://hakim.se/experiments/html5/magnetic/02/"
+    },
+    {
+        "duration": "20.564769878787875",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/TweetMap/Default.html"
+    },
+    {
+        "duration": "21.07435242424242",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/VideoCity/Default.html"
+    },
+    {
+        "duration": "19.284191080808082",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html"
+    },
+    {
+        "duration": "21.071095040404042",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/Default.html"
+    },
+    {
+        "duration": "19.928470909090912",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/FishIETank/Default.html"
+    },
+    {
+        "duration": "20.409794020202014",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/LetItSnow/"
+    },
+    {
+        "duration": "19.0316586969697",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html"
+    },
+    {
+        "duration": "22.536311707070706",
+        "name": "smoothness.tough_canvas_cases/http://jarrodoverson.com/static/demos/particleSystem/"
+    },
+    {
+        "duration": "19.879953151515156",
+        "name": "smoothness.tough_canvas_cases/http://mix10k.visitmix.com/Entry/Details/169"
+    },
+    {
+        "duration": "21.76878516161616",
+        "name": "smoothness.tough_canvas_cases/http://runway.countlessprojects.com/prototype/performance_test.html"
+    },
+    {
+        "duration": "19.034993505050505",
+        "name": "smoothness.tough_canvas_cases/http://spielzeugz.de/html5/liquid-particles.html"
+    },
+    {
+        "duration": "18.97134741414142",
+        "name": "smoothness.tough_canvas_cases/http://themaninblue.com/experiment/AnimationBenchmark/canvas/"
+    },
+    {
+        "duration": "19.51297212121212",
+        "name": "smoothness.tough_canvas_cases/http://www.chiptune.com/starfield/starfield.html"
+    },
+    {
+        "duration": "19.25524562626262",
+        "name": "smoothness.tough_canvas_cases/http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html"
+    },
+    {
+        "duration": "20.875249393939395",
+        "name": "smoothness.tough_canvas_cases/http://www.effectgames.com/demos/canvascycle/"
+    },
+    {
+        "duration": "19.20124112121213",
+        "name": "smoothness.tough_canvas_cases/http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html"
+    },
+    {
+        "duration": "20.22122088888889",
+        "name": "smoothness.tough_canvas_cases/http://www.megidish.net/awjs/"
+    },
+    {
+        "duration": "20.139264111111117",
+        "name": "smoothness.tough_canvas_cases/http://www.smashcat.org/av/canvas_test/"
+    },
+    {
+        "duration": "22.393192030303027",
+        "name": "smoothness.tough_canvas_cases/jarro_doverson"
+    },
+    {
+        "duration": "19.222503767676766",
+        "name": "smoothness.tough_canvas_cases/kevs_3d"
+    },
+    {
+        "duration": "18.971337636363636",
+        "name": "smoothness.tough_canvas_cases/man_in_blue"
+    },
+    {
+        "duration": "26.52085522222221",
+        "name": "smoothness.tough_canvas_cases/many_images"
+    },
+    {
+        "duration": "20.18166641414142",
+        "name": "smoothness.tough_canvas_cases/megi_dish"
+    },
+    {
+        "duration": "20.79904125252526",
+        "name": "smoothness.tough_canvas_cases/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "19.861314454545447",
+        "name": "smoothness.tough_canvas_cases/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "20.2950674949495",
+        "name": "smoothness.tough_canvas_cases/microsoft_snow"
+    },
+    {
+        "duration": "18.988548535353534",
+        "name": "smoothness.tough_canvas_cases/microsoft_speed_reading"
+    },
+    {
+        "duration": "20.45188026262627",
+        "name": "smoothness.tough_canvas_cases/microsoft_tweet_map"
+    },
+    {
+        "duration": "21.004272424242433",
+        "name": "smoothness.tough_canvas_cases/microsoft_video_city"
+    },
+    {
+        "duration": "19.23203587878788",
+        "name": "smoothness.tough_canvas_cases/microsoft_worker_fountains"
+    },
+    {
+        "duration": "19.84913868686869",
+        "name": "smoothness.tough_canvas_cases/mix_10k"
+    },
+    {
+        "duration": "20.471920656565644",
+        "name": "smoothness.tough_canvas_cases/put_get_image_data"
+    },
+    {
+        "duration": "21.594750909090912",
+        "name": "smoothness.tough_canvas_cases/runway"
+    },
+    {
+        "duration": "20.205305616161613",
+        "name": "smoothness.tough_canvas_cases/smash_cat"
+    },
+    {
+        "duration": "18.928696262626257",
+        "name": "smoothness.tough_canvas_cases/spielzeugz"
+    },
+    {
+        "duration": "21.14752650505051",
+        "name": "smoothness.tough_canvas_cases/stroke_shapes"
+    },
+    {
+        "duration": "18.603091505050514",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-animation-no-clear.html"
+    },
+    {
+        "duration": "20.03594012121213",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-font-cycler.html"
+    },
+    {
+        "duration": "29.657637131313123",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=image_with_shadow&back=image"
+    },
+    {
+        "duration": "19.129944212121213",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=text&back=white&ball_count=15"
+    },
+    {
+        "duration": "19.376773434343434",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas_toBlob.html"
+    },
+    {
+        "duration": "21.437834303030307",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_clipped_rectangles.html"
+    },
+    {
+        "duration": "19.72050435353535",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_gradient_circles.html"
+    },
+    {
+        "duration": "17.918374474747473",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_png_images.html"
+    },
+    {
+        "duration": "27.773607161616166",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_svg_images.html"
+    },
+    {
+        "duration": "20.122059585858583",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_arcs.html"
+    },
+    {
+        "duration": "19.67287573737373",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_lines.html"
+    },
+    {
+        "duration": "19.868085939393932",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/fill_shapes.html"
+    },
+    {
+        "duration": "20.433499242424247",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/put_get_image_data.html"
+    },
+    {
+        "duration": "21.3019983939394",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/stroke_shapes.html"
+    },
+    {
+        "duration": "25.658855606060612",
+        "name": "smoothness.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "27.749342525252526",
+        "name": "smoothness.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "28.444963080808083",
+        "name": "smoothness.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "35.592456787878795",
+        "name": "smoothness.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "25.615584191919186",
+        "name": "smoothness.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "25.383794616161623",
+        "name": "smoothness.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "28.125840707070704",
+        "name": "smoothness.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "35.41849692929292",
+        "name": "smoothness.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "23.715948777777786",
+        "name": "smoothness.tough_image_decode_cases/cats_unscaled"
+    },
+    {
+        "duration": "13.402106575757582",
+        "name": "smoothness.tough_image_decode_cases/cats_viewport_width"
+    },
+    {
+        "duration": "24.2932725959596",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-unscaled.html"
+    },
+    {
+        "duration": "13.35603845959596",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-viewport-width.html"
+    },
+    {
+        "duration": "36.40930225252525",
+        "name": "smoothness.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "35.21892907070708",
+        "name": "smoothness.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "24.467141808080815",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "24.59775965656566",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "36.00973670707071",
+        "name": "smoothness.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "35.17619576767677",
+        "name": "smoothness.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "24.27595484848485",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "24.450223151515154",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "26.72949817171717",
+        "name": "smoothness.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "36.39462394949495",
+        "name": "smoothness.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "24.713936676767677",
+        "name": "smoothness.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "19.966067060606054",
+        "name": "smoothness.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "24.89163972727272",
+        "name": "smoothness.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "31.2809031111111",
+        "name": "smoothness.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "20.16893393939394",
+        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "27.045658040404042",
+        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "23.342791787878785",
+        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "30.178077181818193",
+        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "27.15898957575758",
+        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "36.50160647474749",
+        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "24.743761313131326",
+        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "39.274690363636346",
+        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "23.795069060606053",
+        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "23.959371111111114",
+        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "32.994902555555534",
+        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "23.346757383838384",
+        "name": "smoothness.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "30.998663303030302",
+        "name": "smoothness.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "29.74241962626263",
+        "name": "smoothness.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "34.92137066666666",
+        "name": "smoothness.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "20.33649119191919",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "29.577972373737357",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "27.261661484848492",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "27.23428164646464",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "38.26605808080808",
+        "name": "smoothness.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "33.027320656565664",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "23.81044553535354",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "23.948108333333323",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "19.900561828282832",
+        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "24.86633398989899",
+        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "31.55795607070708",
+        "name": "smoothness.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "30.599423191919207",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_games_pinch"
+    },
+    {
+        "duration": "30.13136095959597",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "35.18105330303031",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "27.531760353535372",
+        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "22.627826171717167",
+        "name": "smoothness.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.512718454545453",
+        "name": "smoothness.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.379882151515154",
+        "name": "smoothness.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.412534353535353",
+        "name": "smoothness.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.38845932323232",
+        "name": "smoothness.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.23521222222223",
+        "name": "smoothness.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.473444000000008",
+        "name": "smoothness.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.318337242424246",
+        "name": "smoothness.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.066555111111107",
+        "name": "smoothness.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.286386444444446",
+        "name": "smoothness.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "31.607059626262615",
+        "name": "smoothness.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.2189233030303",
+        "name": "smoothness.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.29632498989899",
+        "name": "smoothness.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.313267393939395",
+        "name": "smoothness.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.338875878787878",
+        "name": "smoothness.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.065632292929294",
+        "name": "smoothness.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.12296366666666",
+        "name": "smoothness.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.12114817171717",
+        "name": "smoothness.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "18.672287414141422",
+        "name": "smoothness.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "17.923358717171716",
+        "name": "smoothness.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "24.398202616161612",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.417841373737375",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "24.399248070707063",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "24.493652181818184",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "24.452304545454542",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "24.41483086868687",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "24.420752747474758",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "23.438984333333327",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.82796028282829",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "21.22166564646464",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.459291353535356",
+        "name": "smoothness.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.561736252525247",
+        "name": "smoothness.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "20.57733069696969",
+        "name": "smoothness.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.518267363636365",
+        "name": "smoothness.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "20.609892363636362",
+        "name": "smoothness.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "20.651005838383835",
+        "name": "smoothness.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "19.920442707070713",
+        "name": "smoothness.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.80931322222223",
+        "name": "smoothness.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "17.93896595959595",
+        "name": "smoothness.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "17.183951313131317",
+        "name": "smoothness.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "35.469353767676765",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation"
+    },
+    {
+        "duration": "35.346143707070716",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation.html"
+    },
+    {
+        "duration": "25.526836606060613",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "25.34620573737374",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient.html"
+    },
+    {
+        "duration": "27.23271410101011",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads"
+    },
+    {
+        "duration": "27.42884772727272",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads.html"
+    },
+    {
+        "duration": "24.33478140404041",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads"
+    },
+    {
+        "duration": "24.512675131313134",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads.html"
+    },
+    {
+        "duration": "24.442852787878785",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads"
+    },
+    {
+        "duration": "24.72234813131314",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads.html"
+    },
+    {
+        "duration": "24.18391647474747",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads"
+    },
+    {
+        "duration": "24.321417020202016",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads.html"
+    },
+    {
+        "duration": "34.44681042424243",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.585184919191928",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.58919937373737",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.569057545454548",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.590756414141417",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.565935656565657",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.60262243434342",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.558187161616143",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.597792525252526",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.585822474747477",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.55549357575758",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swf.webglbeta.html"
+    },
+    {
+        "duration": "6.462033308080809",
+        "name": "smoothness.tough_webgl_cases/animometer_webgl"
+    },
+    {
+        "duration": "6.432540762626264",
+        "name": "smoothness.tough_webgl_cases/aquarium"
+    },
+    {
+        "duration": "6.477997389898991",
+        "name": "smoothness.tough_webgl_cases/aquarium_20k"
+    },
+    {
+        "duration": "6.435959365656564",
+        "name": "smoothness.tough_webgl_cases/blob"
+    },
+    {
+        "duration": "6.434283307070708",
+        "name": "smoothness.tough_webgl_cases/dynamic_cube_map"
+    },
+    {
+        "duration": "6.451836397979798",
+        "name": "smoothness.tough_webgl_cases/earth"
+    },
+    {
+        "duration": "6.504796784848485",
+        "name": "smoothness.tough_webgl_cases/http://kenrussell.github.io/webgl-animometer/Animometer/tests/3d/webgl.html"
+    },
+    {
+        "duration": "6.540814841414142",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/aquarium/aquarium.html"
+    },
+    {
+        "duration": "6.5136538949494955",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/blob/blob.html"
+    },
+    {
+        "duration": "6.491891324242422",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/dynamic-cubemap/dynamic-cubemap.html"
+    },
+    {
+        "duration": "17.741752681818177",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html"
+    },
+    {
+        "duration": "6.468859014141416",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/particles/index.html"
+    },
+    {
+        "duration": "6.5203355979797974",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/san-angeles/index.html"
+    },
+    {
+        "duration": "6.51326898787879",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/Earth.html"
+    },
+    {
+        "duration": "6.551782721212118",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/ManyPlanetsDeep.html"
+    },
+    {
+        "duration": "6.43230672",
+        "name": "smoothness.tough_webgl_cases/ken_russell"
+    },
+    {
+        "duration": "6.403344977777775",
+        "name": "smoothness.tough_webgl_cases/many_planets_deep"
+    },
+    {
+        "duration": "16.505612126262623",
+        "name": "smoothness.tough_webgl_cases/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "6.382280126262626",
+        "name": "smoothness.tough_webgl_cases/particles"
+    },
+    {
+        "duration": "6.456064167676769",
+        "name": "smoothness.tough_webgl_cases/san_angeles"
+    },
+    {
+        "duration": "6.5873866",
+        "name": "smoothness.tough_webgl_cases/sans_angeles"
+    },
+    {
+        "duration": "158.07567272727272",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "150.60918939393935",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "262.3974034343435",
+        "name": "speedometer2-future/Speedometer2"
+    },
+    {
+        "duration": "256.47308373737366",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "33.393657442424235",
+        "name": "start_with_url.cold.startup_pages/about:blank"
+    },
+    {
+        "duration": "33.8022083313131",
+        "name": "start_with_url.cold.startup_pages/http://bbc.co.uk"
+    },
+    {
+        "duration": "31.786462487603295",
+        "name": "start_with_url.warm.startup_pages/about:blank"
+    },
+    {
+        "duration": "33.48383822773186",
+        "name": "start_with_url.warm.startup_pages/http://bbc.co.uk"
+    },
+    {
+        "duration": "27.916837424242413",
+        "name": "system_health.common_mobile/background:media:imgur"
+    },
+    {
+        "duration": "2.4892488999999994E-4",
+        "name": "system_health.common_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "29.271577787878776",
+        "name": "system_health.common_mobile/background:search:google"
+    },
+    {
+        "duration": "37.177885060606066",
+        "name": "system_health.common_mobile/background:social:facebook"
+    },
+    {
+        "duration": "45.0576578282828",
+        "name": "system_health.common_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "5.536556213333334E-4",
+        "name": "system_health.common_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "42.029055686868695",
+        "name": "system_health.common_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "109.7471667878788",
+        "name": "system_health.common_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "60.871798747474735",
+        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "96.44349594949495",
+        "name": "system_health.common_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "142.55351515151517",
+        "name": "system_health.common_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "206.34912777777774",
+        "name": "system_health.common_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "82.31217184848487",
+        "name": "system_health.common_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.4314651399999998E-4",
+        "name": "system_health.common_mobile/browse:news:globo"
+    },
+    {
+        "duration": "68.48526777777774",
+        "name": "system_health.common_mobile/browse:news:qq"
+    },
+    {
+        "duration": "78.49210715151516",
+        "name": "system_health.common_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.5210380666666673E-4",
+        "name": "system_health.common_mobile/browse:news:toi"
+    },
+    {
+        "duration": "70.2076120909091",
+        "name": "system_health.common_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "105.90845199999998",
+        "name": "system_health.common_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "103.04490541414138",
+        "name": "system_health.common_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.4248758866666668E-4",
+        "name": "system_health.common_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "50.72766073737374",
+        "name": "system_health.common_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "89.6679330909091",
+        "name": "system_health.common_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "144.06885",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "117.06466297979802",
+        "name": "system_health.common_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "113.64714284848485",
+        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "136.07286898989904",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "69.89560753535353",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "87.62932099999999",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "60.48562491919193",
+        "name": "system_health.common_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "23.05102795959595",
+        "name": "system_health.common_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "31.52938848484848",
+        "name": "system_health.common_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "23.942678727272735",
+        "name": "system_health.common_mobile/load:games:lazors"
+    },
+    {
+        "duration": "2.615928653333333E-4",
+        "name": "system_health.common_mobile/load:games:spychase"
+    },
+    {
+        "duration": "31.295278444444442",
+        "name": "system_health.common_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "27.565154111111106",
+        "name": "system_health.common_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "27.546624787878788",
+        "name": "system_health.common_mobile/load:media:google_images"
+    },
+    {
+        "duration": "27.526505565656564",
+        "name": "system_health.common_mobile/load:media:imgur"
+    },
+    {
+        "duration": "26.684892484848486",
+        "name": "system_health.common_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "27.190066121212123",
+        "name": "system_health.common_mobile/load:media:youtube"
+    },
+    {
+        "duration": "58.664431515151556",
+        "name": "system_health.common_mobile/load:news:cnn"
+    },
+    {
+        "duration": "39.67204729292928",
+        "name": "system_health.common_mobile/load:news:irctc"
+    },
+    {
+        "duration": "36.09401846464648",
+        "name": "system_health.common_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "26.30745563636363",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "29.032141616161624",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "31.570864464646466",
+        "name": "system_health.common_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "29.239986545454546",
+        "name": "system_health.common_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "26.481949818181818",
+        "name": "system_health.common_mobile/load:search:baidu"
+    },
+    {
+        "duration": "27.709289808080797",
+        "name": "system_health.common_mobile/load:search:ebay"
+    },
+    {
+        "duration": "25.29107744444444",
+        "name": "system_health.common_mobile/load:search:google"
+    },
+    {
+        "duration": "27.153592676767683",
+        "name": "system_health.common_mobile/load:search:taobao"
+    },
+    {
+        "duration": "25.550930545454552",
+        "name": "system_health.common_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "26.288786101010103",
+        "name": "system_health.common_mobile/load:search:yandex"
+    },
+    {
+        "duration": "26.187164808080805",
+        "name": "system_health.common_mobile/load:social:twitter"
+    },
+    {
+        "duration": "25.39787507070707",
+        "name": "system_health.common_mobile/load:tools:docs"
+    },
+    {
+        "duration": "35.763739313131325",
+        "name": "system_health.common_mobile/load:tools:drive"
+    },
+    {
+        "duration": "30.45204520202021",
+        "name": "system_health.common_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.653280886666666E-4",
+        "name": "system_health.common_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "27.85025135353535",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "39.58366925252524",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "141.91551434343432",
+        "name": "system_health.common_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "140.66327030303032",
+        "name": "system_health.common_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "27.17201050841749",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "47.96566288888889",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "28.81608477441078",
+        "name": "system_health.memory_mobile/background:search:google"
+    },
+    {
+        "duration": "37.40842212457912",
+        "name": "system_health.memory_mobile/background:social:facebook"
+    },
+    {
+        "duration": "5.933537201960785E-4",
+        "name": "system_health.memory_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "5.051435219607843E-4",
+        "name": "system_health.memory_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "39.278093084175076",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "90.65556712121214",
+        "name": "system_health.memory_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "49.59043418855219",
+        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "75.80383634680136",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "92.45416511784512",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "153.73746946127946",
+        "name": "system_health.memory_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "59.26061755218854",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.5170433843137256E-4",
+        "name": "system_health.memory_mobile/browse:news:globo"
+    },
+    {
+        "duration": "53.7415438804714",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "65.17347289730638",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.538830631372549E-4",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "53.876138006734",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "71.68961277441072",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "76.36633154208756",
+        "name": "system_health.memory_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.549395839215687E-4",
+        "name": "system_health.memory_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "41.65149313468012",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "5.53729491372549E-4",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "85.34452314141413",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "87.60889004713806",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "89.85087021885523",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "92.7714783468013",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "56.40740788888886",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "66.61555012794611",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "51.94749824242426",
+        "name": "system_health.memory_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "23.723248579124586",
+        "name": "system_health.memory_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "25.159751282828292",
+        "name": "system_health.memory_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "23.899123424242433",
+        "name": "system_health.memory_mobile/load:games:lazors"
+    },
+    {
+        "duration": "31.706542730639757",
+        "name": "system_health.memory_mobile/load:games:spychase"
+    },
+    {
+        "duration": "30.49383242087542",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "26.42963713131314",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "26.75487247811448",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "25.82973985858586",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "25.72792792592593",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "26.497682171717184",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "51.637659171717175",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "30.61862953872055",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "32.91104392929294",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "25.255620168350163",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "28.318079569023574",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "28.695858471380472",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "28.365168175084147",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "25.893794666666665",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "25.34257503030303",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "24.99674786868687",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "25.5344781986532",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "24.959103346801353",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "25.430058700336698",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "25.48319188215489",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "25.26011915824917",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "31.330722198653188",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "28.22837783501684",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.685528178431372E-4",
+        "name": "system_health.memory_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "27.08576446801348",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "34.47967387542088",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "244.8682406397306",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "221.9915805387205",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "39.39296951515152",
+        "name": "thread_times.key_idle_power_cases/animated-gif.html"
+    },
+    {
+        "duration": "44.30129332323233",
+        "name": "thread_times.key_idle_power_cases/blank.html"
+    },
+    {
+        "duration": "40.20682301010101",
+        "name": "thread_times.key_idle_power_cases/css-animation.html"
+    },
+    {
+        "duration": "40.451809749999995",
+        "name": "thread_times.key_idle_power_cases/idle_power_animated_gif"
+    },
+    {
+        "duration": "43.854757125",
+        "name": "thread_times.key_idle_power_cases/idle_power_blank"
+    },
+    {
+        "duration": "41.722501875",
+        "name": "thread_times.key_idle_power_cases/idle_power_css_animation"
+    },
+    {
+        "duration": "44.272355",
+        "name": "thread_times.key_idle_power_cases/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "115.2099705",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "44.092512375",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timetout"
+    },
+    {
+        "duration": "40.71961127272727",
+        "name": "thread_times.key_idle_power_cases/request-animation-frame.html"
+    },
+    {
+        "duration": "40.948516696969705",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html"
+    },
+    {
+        "duration": "111.0569416767677",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html (Long Idle)"
+    },
+    {
+        "duration": "41.211632404040394",
+        "name": "thread_times.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "41.16197695959597",
+        "name": "thread_times.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "34.66842334343435",
+        "name": "thread_times.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "30.296382585858584",
+        "name": "thread_times.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "32.276610787878774",
+        "name": "thread_times.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "51.198379749999994",
+        "name": "thread_times.key_noop_cases/no_op_raf"
+    },
+    {
+        "duration": "40.581761555555545",
+        "name": "thread_times.key_noop_cases/no_op_raf.html"
+    },
+    {
+        "duration": "21.248657",
+        "name": "thread_times.key_noop_cases/no_op_scroll"
+    },
+    {
+        "duration": "20.227990888888893",
+        "name": "thread_times.key_noop_cases/no_op_scroll.html"
+    },
+    {
+        "duration": "19.161867125",
+        "name": "thread_times.key_noop_cases/no_op_settimeout"
+    },
+    {
+        "duration": "18.422132797979796",
+        "name": "thread_times.key_noop_cases/no_op_settimeout.html"
+    },
+    {
+        "duration": "30.497963125",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler"
+    },
+    {
+        "duration": "24.536238555555556",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler.html"
+    },
+    {
+        "duration": "21.7645831111111",
+        "name": "thread_times.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "24.07054922222222",
+        "name": "thread_times.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "22.7327770909091",
+        "name": "thread_times.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "20.644148767676764",
+        "name": "thread_times.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "22.275035969696955",
+        "name": "thread_times.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "20.57985998989899",
+        "name": "thread_times.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "20.611330535353535",
+        "name": "thread_times.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "24.361719454545465",
+        "name": "thread_times.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "21.234671020202025",
+        "name": "thread_times.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "21.604189474747482",
+        "name": "thread_times.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "23.23227244444444",
+        "name": "thread_times.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "39.212502888888885",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "18.424529707070704",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "17.274050101010094",
+        "name": "thread_times.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "21.717026333333333",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "20.424637393939392",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "21.9526304949495",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "22.992494252525255",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "22.565210383838377",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "24.15199791919192",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "23.9383454040404",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "22.64771116161616",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "22.244000797979798",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "24.6338291010101",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "21.597896454545445",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "24.126982000000005",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "19.069868020202026",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "4.411935814285714E-4",
+        "name": "thread_times.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "5.285739885714287E-4",
+        "name": "thread_times.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "30.727878050505048",
+        "name": "thread_times.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "21.477759535353535",
+        "name": "thread_times.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "5.200590442857143E-4",
+        "name": "thread_times.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "21.223576191919193",
+        "name": "thread_times.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "4.7550882285714286E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "36.992350595959614",
+        "name": "thread_times.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "5.300555950000001E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "24.822780797979792",
+        "name": "thread_times.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "27.82892470707072",
+        "name": "thread_times.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "27.721639020202016",
+        "name": "thread_times.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "19.350071333333332",
+        "name": "thread_times.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "18.98473076767677",
+        "name": "thread_times.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "38.791067434343425",
+        "name": "thread_times.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "21.390001555555543",
+        "name": "thread_times.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "2.869367578571429E-4",
+        "name": "thread_times.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "19.14107391919191",
+        "name": "thread_times.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "24.47254530303031",
+        "name": "thread_times.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "17.3463913939394",
+        "name": "thread_times.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "25.083013242424244",
+        "name": "thread_times.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "35.12603747474747",
+        "name": "thread_times.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "35.07789618181819",
+        "name": "thread_times.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "18.625565393939397",
+        "name": "thread_times.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "37.40483397979799",
+        "name": "thread_times.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "31.006499444444447",
+        "name": "thread_times.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "23.195081606060608",
+        "name": "thread_times.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "25.110000202020213",
+        "name": "thread_times.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "25.300690969696962",
+        "name": "thread_times.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "24.55588334343434",
+        "name": "thread_times.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "22.488258080808084",
+        "name": "thread_times.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "50.83024343434345",
+        "name": "thread_times.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "39.57624853535355",
+        "name": "thread_times.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "33.44138770707071",
+        "name": "thread_times.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "51.16192006060606",
+        "name": "thread_times.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "37.00285091919192",
+        "name": "thread_times.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "24.691496919362436",
+        "name": "thread_times.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "37.19154267676768",
+        "name": "thread_times.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "33.47831930303031",
+        "name": "thread_times.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "38.981362250000004",
+        "name": "thread_times.tough_compositor_cases/cc_poster_circle"
+    },
+    {
+        "duration": "39.948985375",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "43.96633875",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_text_only"
+    },
+    {
+        "duration": "41.29732022222222",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/beqojupo/1/quiet?JS_FULL_SCREEN_INVALIDATION"
+    },
+    {
+        "duration": "37.41877797979797",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/covoqi/1/quiet?NEW_TILINGS"
+    },
+    {
+        "duration": "31.114477989898973",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/falefice/1/quiet?CC_POSTER_CIRCLE"
+    },
+    {
+        "duration": "34.57234235353536",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/giqafofe/1/quiet?JS_POSTER_CIRCLE"
+    },
+    {
+        "duration": "29.3691519090909",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/jevibahi/4/quiet?JS_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "38.54662150505051",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/pixavefe/1/quiet?CC_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "29.176557434343433",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/wixadinu/2/quiet?JS_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "29.042560999999996",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/yakagevo/1/quiet?CC_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "72.23888037500001",
+        "name": "thread_times.tough_compositor_cases/js_full_screen_invalidation"
+    },
+    {
+        "duration": "62.396652625",
+        "name": "thread_times.tough_compositor_cases/js_poster_circle"
+    },
+    {
+        "duration": "40.482031000000006",
+        "name": "thread_times.tough_compositor_cases/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "36.7449565",
+        "name": "thread_times.tough_compositor_cases/js_scroll_text_only"
+    },
+    {
+        "duration": "65.02252675000001",
+        "name": "thread_times.tough_compositor_cases/new_tilings"
+    },
+    {
+        "duration": "27.749962252525258",
+        "name": "thread_times.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "27.947035666666668",
+        "name": "thread_times.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "28.122889949494944",
+        "name": "thread_times.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "28.5403296060606",
+        "name": "thread_times.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "28.83517559595957",
+        "name": "thread_times.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "29.15159835353535",
+        "name": "thread_times.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "27.633243747474747",
+        "name": "thread_times.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "25.093219959595963",
+        "name": "thread_times.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "22.445355232323237",
+        "name": "thread_times.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.85411672727273",
+        "name": "thread_times.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "35.517313818181805",
+        "name": "thread_times.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "25.73506174747474",
+        "name": "thread_times.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "26.185193979797976",
+        "name": "thread_times.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "26.589398454545453",
+        "name": "thread_times.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "27.28383214141414",
+        "name": "thread_times.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "27.46117673737374",
+        "name": "thread_times.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "26.333495747474746",
+        "name": "thread_times.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "24.17695741414141",
+        "name": "thread_times.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.41171165656566",
+        "name": "thread_times.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.10681529292929",
+        "name": "thread_times.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "28.437808878787887",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "28.6929796060606",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "28.756424747474753",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "28.27931804040405",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "27.8180812828283",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "27.800600616161613",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "27.681480222222223",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "26.156170121212117",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "24.06863586868686",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "22.81581485858586",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.17081604040404",
+        "name": "thread_times.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.260167999999997",
+        "name": "thread_times.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "20.207171969696976",
+        "name": "thread_times.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.121517333333333",
+        "name": "thread_times.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "20.22419591919192",
+        "name": "thread_times.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "20.191962030303024",
+        "name": "thread_times.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "19.537735232323232",
+        "name": "thread_times.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.432339333333335",
+        "name": "thread_times.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "17.442925717171715",
+        "name": "thread_times.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.671110838383836",
+        "name": "thread_times.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "17.09898238383839",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "20.011166191919187",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "13.937312005050506",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "14.453773727272727",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "13.794935030303039",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "15.084082388888891",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "16.22212530808081",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "25.795871353535354",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "17.319236333333333",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "7.006571853846155E-4",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "45.16946278787879",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "132.48768242424242",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "74.85717179797979",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "117.94861922222223",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "163.742468989899",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "280.1083729292929",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "105.18736646464652",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.601072453846154E-4",
+        "name": "v8.browsing_mobile-future/browse:news:globo"
+    },
+    {
+        "duration": "79.19779061616164",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "88.56545848484849",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "2.689544984615384E-4",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "80.14449292929292",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "148.4652014141414",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "141.18856939393942",
+        "name": "v8.browsing_mobile-future/browse:shopping:avito"
+    },
+    {
+        "duration": "2.6801916230769233E-4",
+        "name": "v8.browsing_mobile-future/browse:shopping:flipkart"
+    },
+    {
+        "duration": "62.48425629292929",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "111.45949252525254",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "174.33363010101007",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "147.50081181818186",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "143.54503161616157",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "161.27329262626262",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "74.66405310101014",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "108.92902168686868",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "75.03176339393939",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "5.214691146666668E-4",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "45.6294922929293",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "133.7320955555556",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "73.92766411111114",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "116.08960820202019",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "161.39472444444448",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "280.3222979797979",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "105.54133341414139",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.4816919866666667E-4",
+        "name": "v8.browsing_mobile/browse:news:globo"
+    },
+    {
+        "duration": "78.13375708080804",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "88.22199076767676",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.472400666666666E-4",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "79.99894533333332",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "155.39458404040403",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "141.8746672727273",
+        "name": "v8.browsing_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.4852752733333337E-4",
+        "name": "v8.browsing_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "62.52690557575757",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "112.89538734343432",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "174.27149181818174",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "144.98381666666666",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "141.2029423232323",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "160.41995191919193",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "74.7646548080808",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "109.6871211414141",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "74.95525592929295",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "11.213564801346802",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "40.03140715824915",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "11.284974634680136",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "11.242143833333335",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "20.051682200336703",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "11.413573392255895",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "23.717556686868683",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "31.143136505050503",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "42.13332631313131",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "42.03267259595959",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "41.967829696969694",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "27.38695544444444",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "45.89440745454544",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "68.00391104040399",
+        "name": "webrtc/pause_play_peerconnections"
+    }
+]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5x_story_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5x_story_timing.json
new file mode 100644
index 0000000..d0d2e52d
--- /dev/null
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus5x_story_timing.json
@@ -0,0 +1,7978 @@
+[
+    {
+        "duration": "43.247310363636366",
+        "name": "blink_perf.bindings/append-child.html"
+    },
+    {
+        "duration": "12.835824878787871",
+        "name": "blink_perf.bindings/create-element.html"
+    },
+    {
+        "duration": "13.04261321717172",
+        "name": "blink_perf.bindings/document-implementation.html"
+    },
+    {
+        "duration": "12.182015782828282",
+        "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
+    },
+    {
+        "duration": "12.609372459595956",
+        "name": "blink_perf.bindings/first-child.html"
+    },
+    {
+        "duration": "15.986725494949496",
+        "name": "blink_perf.bindings/gc-forest.html"
+    },
+    {
+        "duration": "19.4579152929293",
+        "name": "blink_perf.bindings/gc-mini-tree.html"
+    },
+    {
+        "duration": "47.17114508080808",
+        "name": "blink_perf.bindings/gc-tree.html"
+    },
+    {
+        "duration": "13.983184015151515",
+        "name": "blink_perf.bindings/get-attribute-rare.html"
+    },
+    {
+        "duration": "12.008964388888883",
+        "name": "blink_perf.bindings/get-attribute.html"
+    },
+    {
+        "duration": "12.546952297979798",
+        "name": "blink_perf.bindings/get-element-by-id.html"
+    },
+    {
+        "duration": "13.23530094444445",
+        "name": "blink_perf.bindings/get-elements-by-tag-name.html"
+    },
+    {
+        "duration": "13.124917999999997",
+        "name": "blink_perf.bindings/id-getter.html"
+    },
+    {
+        "duration": "12.872176646464649",
+        "name": "blink_perf.bindings/id-setter.html"
+    },
+    {
+        "duration": "14.872359939393935",
+        "name": "blink_perf.bindings/indexed-getter.html"
+    },
+    {
+        "duration": "12.625773570707068",
+        "name": "blink_perf.bindings/insert-before.html"
+    },
+    {
+        "duration": "15.609192858585859",
+        "name": "blink_perf.bindings/named-property-enumerator.html"
+    },
+    {
+        "duration": "63.218054343434325",
+        "name": "blink_perf.bindings/node-list-access.html"
+    },
+    {
+        "duration": "14.616614151515156",
+        "name": "blink_perf.bindings/node-type.html"
+    },
+    {
+        "duration": "9.430270604040404",
+        "name": "blink_perf.bindings/post-message.html"
+    },
+    {
+        "duration": "12.047870651515153",
+        "name": "blink_perf.bindings/sequence-conversion-array.html"
+    },
+    {
+        "duration": "15.061870277777782",
+        "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
+    },
+    {
+        "duration": "9.926840011111116",
+        "name": "blink_perf.bindings/serialize-array.html"
+    },
+    {
+        "duration": "6.466504981818181",
+        "name": "blink_perf.bindings/serialize-long-string.html"
+    },
+    {
+        "duration": "11.769817287878793",
+        "name": "blink_perf.bindings/serialize-map.html"
+    },
+    {
+        "duration": "6.344613317171717",
+        "name": "blink_perf.bindings/serialize-nested-array.html"
+    },
+    {
+        "duration": "14.674122616161618",
+        "name": "blink_perf.bindings/set-attribute-rare.html"
+    },
+    {
+        "duration": "15.099444590909092",
+        "name": "blink_perf.bindings/set-attribute.html"
+    },
+    {
+        "duration": "32.599193060606055",
+        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
+    },
+    {
+        "duration": "28.059816020202014",
+        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
+    },
+    {
+        "duration": "12.85929122727272",
+        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
+    },
+    {
+        "duration": "14.996827858585863",
+        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
+    },
+    {
+        "duration": "18.96062576262626",
+        "name": "blink_perf.bindings/typed-array-construct-from-array.html"
+    },
+    {
+        "duration": "17.06685148989898",
+        "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
+    },
+    {
+        "duration": "16.953642994949497",
+        "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
+    },
+    {
+        "duration": "18.20276436868687",
+        "name": "blink_perf.bindings/typed-array-set-from-typed.html"
+    },
+    {
+        "duration": "29.3743030858586",
+        "name": "blink_perf.bindings/undefined-first-child.html"
+    },
+    {
+        "duration": "22.111084737373744",
+        "name": "blink_perf.bindings/undefined-get-element-by-id.html"
+    },
+    {
+        "duration": "14.833137202020197",
+        "name": "blink_perf.bindings/undefined-id-getter.html"
+    },
+    {
+        "duration": "24.747481919191912",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "8.088133513636365E-4",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "24.060599181818194",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "6.462784226262628",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "0.001115343780909091",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.950722169696973",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "11.346249287878791",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "14.224651176767674",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
+    },
+    {
+        "duration": "15.768710595959586",
+        "name": "blink_perf.canvas/drawimage.html"
+    },
+    {
+        "duration": "22.191256520202025",
+        "name": "blink_perf.canvas/getImageData.html"
+    },
+    {
+        "duration": "14.854589974747475",
+        "name": "blink_perf.canvas/getImageDataColorManaged.html"
+    },
+    {
+        "duration": "50.36958659090911",
+        "name": "blink_perf.canvas/putImageData.html"
+    },
+    {
+        "duration": "17.933054878787875",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "11.964676106060613",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "7.116061320202018",
+        "name": "blink_perf.canvas/transferFromImageBitmap.html"
+    },
+    {
+        "duration": "10.482066126262632",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
+    },
+    {
+        "duration": "14.90841755050505",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
+    },
+    {
+        "duration": "10.063223776767678",
+        "name": "blink_perf.canvas/upload-video-to-texture.html"
+    },
+    {
+        "duration": "11.653980202020202",
+        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
+    },
+    {
+        "duration": "65.48563219191918",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "13.897394176767673",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "14.665875550505051",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "13.62030137373737",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "16.57169573737374",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "11.747131176767674",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "11.564634171717172",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "11.541607808080808",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "11.55152307575758",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "11.585356378787873",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "11.524625606060601",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "11.589991409090915",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "11.569290696969698",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "11.556365469696965",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "11.544858287878784",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "14.108063242424235",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "11.991162126262626",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "11.70739056060606",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "11.77536913131313",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "11.731797075757576",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "11.763765075757581",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "11.908782904040404",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "24.64617919191918",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "14.617905151515155",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "16.563842156565656",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "12.201852176767682",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "13.039012727272729",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "14.247469227272727",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "13.804109924242422",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "21.647574818181823",
+        "name": "blink_perf.css/SelectorCountScaling.html"
+    },
+    {
+        "duration": "68.69638156565658",
+        "name": "blink_perf.dom/addRange.html"
+    },
+    {
+        "duration": "7.12105197272727",
+        "name": "blink_perf.dom/delete-in-password-field.html"
+    },
+    {
+        "duration": "14.815894712121207",
+        "name": "blink_perf.dom/div-editable.html"
+    },
+    {
+        "duration": "6.2120893878787875",
+        "name": "blink_perf.dom/inner_html_with_selection.html"
+    },
+    {
+        "duration": "16.39737324242424",
+        "name": "blink_perf.dom/long-sibling-list.html"
+    },
+    {
+        "duration": "10.664443237373733",
+        "name": "blink_perf.dom/modify-element-classname.html"
+    },
+    {
+        "duration": "8.857828878787874",
+        "name": "blink_perf.dom/modify-element-id.html"
+    },
+    {
+        "duration": "8.618194232323235",
+        "name": "blink_perf.dom/modify-element-title.html"
+    },
+    {
+        "duration": "6.798020285858586",
+        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
+    },
+    {
+        "duration": "6.8074639787878795",
+        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
+    },
+    {
+        "duration": "6.345283613131312",
+        "name": "blink_perf.dom/remove_child_with_selection.html"
+    },
+    {
+        "duration": "12.822333843434345",
+        "name": "blink_perf.dom/select-multiple-add.html"
+    },
+    {
+        "duration": "14.163161843434345",
+        "name": "blink_perf.dom/select-single-add.html"
+    },
+    {
+        "duration": "15.009998419191916",
+        "name": "blink_perf.dom/select-single-remove.html"
+    },
+    {
+        "duration": "12.928313803030306",
+        "name": "blink_perf.dom/textarea-dom.html"
+    },
+    {
+        "duration": "23.86673855555555",
+        "name": "blink_perf.dom/textarea-edit.html"
+    },
+    {
+        "duration": "59.90839508080805",
+        "name": "blink_perf.events/EventsDispatching.html"
+    },
+    {
+        "duration": "14.459040176767678",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+    },
+    {
+        "duration": "41.48604734343436",
+        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+    },
+    {
+        "duration": "48.76821188888892",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "107.67487935353542",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "21.32352871717173",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "43.01275651515152",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "15.883904595959605",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "28.709700636363635",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "19.31045547474748",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "42.36005042424244",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "47.03379326262627",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "6.768149081818182",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+    },
+    {
+        "duration": "12.517034893939393",
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "13.657069151515149",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "13.834770207070703",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "13.547374085858586",
+        "name": "blink_perf.layout/attach-inlines.html"
+    },
+    {
+        "duration": "14.828103267676767",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "12.01248974747475",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "14.497899565656562",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "12.731620530303026",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "13.768017545454546",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "14.271442914141417",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "13.116046790909092",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "7.094349681818184",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "14.411318601010096",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "16.780426606060605",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "17.665636661616162",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "16.1318207020202",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "15.637314060606064",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "19.64451003030303",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "17.05019068686869",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "23.258443207070705",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "15.006215585858586",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "56.371997171717176",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "55.43983525252525",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "29.05222069696969",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "22.619754156565655",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "24.36244022222221",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "16.662758999999998",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "12.535619323232321",
+        "name": "blink_perf.layout/floats_2_100_nested.html"
+    },
+    {
+        "duration": "25.100849429292925",
+        "name": "blink_perf.layout/floats_50_100.html"
+    },
+    {
+        "duration": "30.661742939393932",
+        "name": "blink_perf.layout/floats_50_100_nested.html"
+    },
+    {
+        "duration": "21.587826247474748",
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "40.143305858585876",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "44.54742022222223",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "40.68753437373736",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "22.913567895959602",
+        "name": "blink_perf.layout/latin-complex-text.html"
+    },
+    {
+        "duration": "11.016516207070707",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "13.40481540909091",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "29.259251303030304",
+        "name": "blink_perf.layout/line-layout-line-height.html"
+    },
+    {
+        "duration": "19.589577378787872",
+        "name": "blink_perf.layout/line-layout-repeat-append.html"
+    },
+    {
+        "duration": "15.094536616161617",
+        "name": "blink_perf.layout/line-layout.html"
+    },
+    {
+        "duration": "15.040372965656566",
+        "name": "blink_perf.layout/long-line-nowrap-collapse.html"
+    },
+    {
+        "duration": "10.795613516161618",
+        "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
+    },
+    {
+        "duration": "13.5607157020202",
+        "name": "blink_perf.layout/long-line-nowrap.html"
+    },
+    {
+        "duration": "23.864958636363635",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "18.021194606060607",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
+    },
+    {
+        "duration": "25.50614729292929",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
+    },
+    {
+        "duration": "20.13195232323232",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
+    },
+    {
+        "duration": "14.872626994949496",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
+    },
+    {
+        "duration": "19.51069035353534",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
+    },
+    {
+        "duration": "19.814188893939402",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "19.81204711616162",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "28.470079146464645",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "20.841740848484854",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "196.98994625",
+        "name": "blink_perf.layout/subtree-detaching.html"
+    },
+    {
+        "duration": "13.329135292929292",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "17.669992368686874",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "18.88490734848485",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "17.042644914141416",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "30.221282999999982",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "17.731337575757568",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "14.179340919191922",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "18.03743482828283",
+        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
+    },
+    {
+        "duration": "17.865270757575754",
+        "name": "blink_perf.owp_storage/idb-load-docs.html"
+    },
+    {
+        "duration": "26.33873597979797",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "30.783816919191914",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "38.239675404040405",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "135.4414406060606",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "12.2794676010101",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "14.313238868686868",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "15.75014144949495",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "13.176213010101012",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "12.768486237373741",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "13.732435323232322",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "15.364786601010108",
+        "name": "blink_perf.parser/query-selector-all-class-first.html"
+    },
+    {
+        "duration": "14.126434525252526",
+        "name": "blink_perf.parser/query-selector-all-class-last.html"
+    },
+    {
+        "duration": "13.19546282323232",
+        "name": "blink_perf.parser/query-selector-all-class.html"
+    },
+    {
+        "duration": "13.821698227272725",
+        "name": "blink_perf.parser/query-selector-all-deep.html"
+    },
+    {
+        "duration": "14.148880459595958",
+        "name": "blink_perf.parser/query-selector-all-first.html"
+    },
+    {
+        "duration": "16.23419284848484",
+        "name": "blink_perf.parser/query-selector-all-id-deep.html"
+    },
+    {
+        "duration": "14.479602010101015",
+        "name": "blink_perf.parser/query-selector-all-id-first.html"
+    },
+    {
+        "duration": "15.889168530303033",
+        "name": "blink_perf.parser/query-selector-all-id-last.html"
+    },
+    {
+        "duration": "13.411665035353536",
+        "name": "blink_perf.parser/query-selector-all-last.html"
+    },
+    {
+        "duration": "16.62271977272726",
+        "name": "blink_perf.parser/query-selector-deep.html"
+    },
+    {
+        "duration": "14.110450727272731",
+        "name": "blink_perf.parser/query-selector-first.html"
+    },
+    {
+        "duration": "14.320282777777777",
+        "name": "blink_perf.parser/query-selector-id-deep.html"
+    },
+    {
+        "duration": "15.548959727272733",
+        "name": "blink_perf.parser/query-selector-id-last.html"
+    },
+    {
+        "duration": "13.41230201515151",
+        "name": "blink_perf.parser/query-selector-last.html"
+    },
+    {
+        "duration": "13.131295166666662",
+        "name": "blink_perf.parser/simple-url.html"
+    },
+    {
+        "duration": "15.429638909090908",
+        "name": "blink_perf.parser/textarea-parsing.html"
+    },
+    {
+        "duration": "19.72165471717172",
+        "name": "blink_perf.parser/tiny-innerHTML.html"
+    },
+    {
+        "duration": "13.694981035353539",
+        "name": "blink_perf.parser/url-parser.html"
+    },
+    {
+        "duration": "12.380243717171714",
+        "name": "blink_perf.parser/xml-parser.html"
+    },
+    {
+        "duration": "37.15039544444445",
+        "name": "blink_perf.svg/AzLizardBenjiPark.html"
+    },
+    {
+        "duration": "12.398675565656568",
+        "name": "blink_perf.svg/Bamboo.html"
+    },
+    {
+        "duration": "8.41791491010101",
+        "name": "blink_perf.svg/Cactus.html"
+    },
+    {
+        "duration": "7.711754258585862",
+        "name": "blink_perf.svg/Cowboy.html"
+    },
+    {
+        "duration": "8.877440831313134",
+        "name": "blink_perf.svg/Cowboy_transform.html"
+    },
+    {
+        "duration": "5.598718563636363E-4",
+        "name": "blink_perf.svg/CrawFishGanson.html"
+    },
+    {
+        "duration": "6.053231036363635E-4",
+        "name": "blink_perf.svg/Debian.html"
+    },
+    {
+        "duration": "6.498134193939397",
+        "name": "blink_perf.svg/DropsOnABlade.html"
+    },
+    {
+        "duration": "4.1682069818181817E-4",
+        "name": "blink_perf.svg/FlowerFromMyGarden.html"
+    },
+    {
+        "duration": "6.872993892929294",
+        "name": "blink_perf.svg/FoodLeifLodahl.html"
+    },
+    {
+        "duration": "7.030066181818184",
+        "name": "blink_perf.svg/France.html"
+    },
+    {
+        "duration": "8.389600711111113",
+        "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
+    },
+    {
+        "duration": "7.667726328282826",
+        "name": "blink_perf.svg/GearFlowers.html"
+    },
+    {
+        "duration": "5.9784543E-4",
+        "name": "blink_perf.svg/HarveyRayner.html"
+    },
+    {
+        "duration": "6.8043760989898985",
+        "name": "blink_perf.svg/HereGear.html"
+    },
+    {
+        "duration": "15.76024613636364",
+        "name": "blink_perf.svg/MtSaintHelens.html"
+    },
+    {
+        "duration": "8.874460494949489",
+        "name": "blink_perf.svg/Samurai.html"
+    },
+    {
+        "duration": "138.69992843434343",
+        "name": "blink_perf.svg/SierpinskiCarpet.html"
+    },
+    {
+        "duration": "5.124048745454546E-4",
+        "name": "blink_perf.svg/SvgCubics.html"
+    },
+    {
+        "duration": "18.148608090909075",
+        "name": "blink_perf.svg/SvgHitTesting.html"
+    },
+    {
+        "duration": "5.914731472727272E-4",
+        "name": "blink_perf.svg/SvgNestedUse.html"
+    },
+    {
+        "duration": "9.03201069090909",
+        "name": "blink_perf.svg/UnderTheSee.html"
+    },
+    {
+        "duration": "13.614416088888893",
+        "name": "blink_perf.svg/WorldIso.html"
+    },
+    {
+        "duration": "4.0102004999999994E-4",
+        "name": "blink_perf.svg/Worldcup.html"
+    },
+    {
+        "duration": "49.761841525252535",
+        "name": "dromaeo/http://dromaeo.com?dom-attr"
+    },
+    {
+        "duration": "38.12229799999999",
+        "name": "dromaeo/http://dromaeo.com?dom-modify"
+    },
+    {
+        "duration": "54.188936909090906",
+        "name": "dromaeo/http://dromaeo.com?dom-query"
+    },
+    {
+        "duration": "32.66657246464646",
+        "name": "dromaeo/http://dromaeo.com?dom-traverse"
+    },
+    {
+        "duration": "35.915038565656566",
+        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "18.761007585858593",
+        "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "17.82747780808081",
+        "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "444.16688323232313",
+        "name": "jetstream/http://browserbench.org/JetStream/"
+    },
+    {
+        "duration": "87.48132358585862",
+        "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
+    },
+    {
+        "duration": "28.35730675757575",
+        "name": "loading.mobile/58Pic"
+    },
+    {
+        "duration": "52.943798625000014",
+        "name": "loading.mobile/58Pic_3g"
+    },
+    {
+        "duration": "35.034627853535355",
+        "name": "loading.mobile/Amazon"
+    },
+    {
+        "duration": "130.00532881578945",
+        "name": "loading.mobile/Amazon_3g"
+    },
+    {
+        "duration": "35.39757571464646",
+        "name": "loading.mobile/BOLNoticias"
+    },
+    {
+        "duration": "110.35074965306123",
+        "name": "loading.mobile/BOLNoticias_3g"
+    },
+    {
+        "duration": "27.55440526262626",
+        "name": "loading.mobile/Baidu"
+    },
+    {
+        "duration": "99.7138542457627",
+        "name": "loading.mobile/Baidu_3g"
+    },
+    {
+        "duration": "49.198210578282826",
+        "name": "loading.mobile/Bradesco"
+    },
+    {
+        "duration": "116.83304537804878",
+        "name": "loading.mobile/Bradesco_3g"
+    },
+    {
+        "duration": "33.64723115396463",
+        "name": "loading.mobile/Dailymotion"
+    },
+    {
+        "duration": "75.36106911904763",
+        "name": "loading.mobile/Dailymotion_3g"
+    },
+    {
+        "duration": "42.29766942424242",
+        "name": "loading.mobile/Dawn"
+    },
+    {
+        "duration": "80.05218483333336",
+        "name": "loading.mobile/Dawn_3g"
+    },
+    {
+        "duration": "28.27419158501684",
+        "name": "loading.mobile/DevOpera"
+    },
+    {
+        "duration": "17.177217333333335",
+        "name": "loading.mobile/DevOpera_cold"
+    },
+    {
+        "duration": "53.41589245238096",
+        "name": "loading.mobile/DevOpera_cold_3g"
+    },
+    {
+        "duration": "23.88547001190477",
+        "name": "loading.mobile/DevOpera_hot"
+    },
+    {
+        "duration": "27.719313547619034",
+        "name": "loading.mobile/DevOpera_hot_3g"
+    },
+    {
+        "duration": "20.396292678571427",
+        "name": "loading.mobile/DevOpera_warm"
+    },
+    {
+        "duration": "24.049501107142852",
+        "name": "loading.mobile/DevOpera_warm_3g"
+    },
+    {
+        "duration": "3.568909409090909E-4",
+        "name": "loading.mobile/Dramaq"
+    },
+    {
+        "duration": "118.35065215000002",
+        "name": "loading.mobile/Dramaq_3g"
+    },
+    {
+        "duration": "30.811601242424242",
+        "name": "loading.mobile/EnquiryIndianRail"
+    },
+    {
+        "duration": "66.38508106976745",
+        "name": "loading.mobile/EnquiryIndianRail_3g"
+    },
+    {
+        "duration": "31.13466212878788",
+        "name": "loading.mobile/Facebook"
+    },
+    {
+        "duration": "128.72394245762712",
+        "name": "loading.mobile/Facebook_3g"
+    },
+    {
+        "duration": "36.394153722222235",
+        "name": "loading.mobile/FlipBoard"
+    },
+    {
+        "duration": "18.41071059523809",
+        "name": "loading.mobile/FlipBoard_cold"
+    },
+    {
+        "duration": "68.76623733333336",
+        "name": "loading.mobile/FlipBoard_cold_3g"
+    },
+    {
+        "duration": "27.356643238095245",
+        "name": "loading.mobile/FlipBoard_hot"
+    },
+    {
+        "duration": "34.91780665476191",
+        "name": "loading.mobile/FlipBoard_hot_3g"
+    },
+    {
+        "duration": "22.796475666666662",
+        "name": "loading.mobile/FlipBoard_warm"
+    },
+    {
+        "duration": "34.45513076190477",
+        "name": "loading.mobile/FlipBoard_warm_3g"
+    },
+    {
+        "duration": "43.363054883838394",
+        "name": "loading.mobile/FlipKart"
+    },
+    {
+        "duration": "25.16684867441861",
+        "name": "loading.mobile/FlipKart_cold"
+    },
+    {
+        "duration": "70.24269282142856",
+        "name": "loading.mobile/FlipKart_cold_3g"
+    },
+    {
+        "duration": "39.41299764285715",
+        "name": "loading.mobile/FlipKart_hot"
+    },
+    {
+        "duration": "39.96872030952381",
+        "name": "loading.mobile/FlipKart_hot_3g"
+    },
+    {
+        "duration": "32.01382347576744",
+        "name": "loading.mobile/FlipKart_warm"
+    },
+    {
+        "duration": "35.109567642857144",
+        "name": "loading.mobile/FlipKart_warm_3g"
+    },
+    {
+        "duration": "34.098834338383845",
+        "name": "loading.mobile/FranceTVInfo"
+    },
+    {
+        "duration": "71.540688925",
+        "name": "loading.mobile/FranceTVInfo_3g"
+    },
+    {
+        "duration": "1.8919597999999998E-4",
+        "name": "loading.mobile/G1"
+    },
+    {
+        "duration": "101.64655639285716",
+        "name": "loading.mobile/G1_3g"
+    },
+    {
+        "duration": "71.64181210353533",
+        "name": "loading.mobile/GSShop"
+    },
+    {
+        "duration": "176.09356634146343",
+        "name": "loading.mobile/GSShop_3g"
+    },
+    {
+        "duration": "26.024797939393938",
+        "name": "loading.mobile/GoogleBrazil"
+    },
+    {
+        "duration": "95.57516087000003",
+        "name": "loading.mobile/GoogleBrazil_3g"
+    },
+    {
+        "duration": "25.14261458333334",
+        "name": "loading.mobile/GoogleIndia"
+    },
+    {
+        "duration": "56.4404690952381",
+        "name": "loading.mobile/GoogleIndia_3g"
+    },
+    {
+        "duration": "24.720901638888883",
+        "name": "loading.mobile/GoogleIndonesia"
+    },
+    {
+        "duration": "106.30745340178571",
+        "name": "loading.mobile/GoogleIndonesia_3g"
+    },
+    {
+        "duration": "42.506028785353536",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan"
+    },
+    {
+        "duration": "147.7867566724138",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g"
+    },
+    {
+        "duration": "1.974051652272727E-4",
+        "name": "loading.mobile/HashOcean"
+    },
+    {
+        "duration": "4.5672329909090913E-4",
+        "name": "loading.mobile/Hongkiat"
+    },
+    {
+        "duration": "94.57644315",
+        "name": "loading.mobile/Hongkiat_3g"
+    },
+    {
+        "duration": "1.2595003370454545E-4",
+        "name": "loading.mobile/IBI"
+    },
+    {
+        "duration": "42.98438071464647",
+        "name": "loading.mobile/KapanLagi"
+    },
+    {
+        "duration": "114.05817252127663",
+        "name": "loading.mobile/KapanLagi_3g"
+    },
+    {
+        "duration": "53.3400106767677",
+        "name": "loading.mobile/Kaskus"
+    },
+    {
+        "duration": "128.0836366071429",
+        "name": "loading.mobile/Kaskus_3g"
+    },
+    {
+        "duration": "41.03736921969697",
+        "name": "loading.mobile/LocalMoxie"
+    },
+    {
+        "duration": "87.86502115476192",
+        "name": "loading.mobile/LocalMoxie_3g"
+    },
+    {
+        "duration": "24.950506429292936",
+        "name": "loading.mobile/Locanto"
+    },
+    {
+        "duration": "44.15321801249999",
+        "name": "loading.mobile/Locanto_3g"
+    },
+    {
+        "duration": "40.66131306818181",
+        "name": "loading.mobile/OLX"
+    },
+    {
+        "duration": "97.21016289285714",
+        "name": "loading.mobile/OLX_3g"
+    },
+    {
+        "duration": "27.51754798232324",
+        "name": "loading.mobile/QQNews"
+    },
+    {
+        "duration": "98.87631089999995",
+        "name": "loading.mobile/QQNews_3g"
+    },
+    {
+        "duration": "38.67608861868687",
+        "name": "loading.mobile/SlideShare"
+    },
+    {
+        "duration": "85.7853239285714",
+        "name": "loading.mobile/SlideShare_3g"
+    },
+    {
+        "duration": "23.970647054713805",
+        "name": "loading.mobile/Suumo"
+    },
+    {
+        "duration": "16.303333714285714",
+        "name": "loading.mobile/Suumo_cold"
+    },
+    {
+        "duration": "31.45740967857142",
+        "name": "loading.mobile/Suumo_cold_3g"
+    },
+    {
+        "duration": "21.311357238095233",
+        "name": "loading.mobile/Suumo_hot"
+    },
+    {
+        "duration": "27.84094771428572",
+        "name": "loading.mobile/Suumo_hot_3g"
+    },
+    {
+        "duration": "18.553120059523813",
+        "name": "loading.mobile/Suumo_warm"
+    },
+    {
+        "duration": "24.763258511904766",
+        "name": "loading.mobile/Suumo_warm_3g"
+    },
+    {
+        "duration": "52.93075854545453",
+        "name": "loading.mobile/Thairath"
+    },
+    {
+        "duration": "125.67296404761903",
+        "name": "loading.mobile/Thairath_3g"
+    },
+    {
+        "duration": "51.6628043459596",
+        "name": "loading.mobile/TheStar"
+    },
+    {
+        "duration": "101.45606447499999",
+        "name": "loading.mobile/TheStar_3g"
+    },
+    {
+        "duration": "39.2295303939394",
+        "name": "loading.mobile/TribunNews"
+    },
+    {
+        "duration": "94.74860079069767",
+        "name": "loading.mobile/TribunNews_3g"
+    },
+    {
+        "duration": "31.92877093434343",
+        "name": "loading.mobile/Twitter"
+    },
+    {
+        "duration": "84.62485526",
+        "name": "loading.mobile/Twitter_3g"
+    },
+    {
+        "duration": "31.912152996632987",
+        "name": "loading.mobile/VoiceMemos"
+    },
+    {
+        "duration": "18.52799917857143",
+        "name": "loading.mobile/VoiceMemos_cold"
+    },
+    {
+        "duration": "59.86505472619048",
+        "name": "loading.mobile/VoiceMemos_cold_3g"
+    },
+    {
+        "duration": "26.290742583333337",
+        "name": "loading.mobile/VoiceMemos_hot"
+    },
+    {
+        "duration": "31.860035940476195",
+        "name": "loading.mobile/VoiceMemos_hot_3g"
+    },
+    {
+        "duration": "22.12965120238095",
+        "name": "loading.mobile/VoiceMemos_warm"
+    },
+    {
+        "duration": "27.817488714285716",
+        "name": "loading.mobile/VoiceMemos_warm_3g"
+    },
+    {
+        "duration": "27.32836515656566",
+        "name": "loading.mobile/Wikipedia"
+    },
+    {
+        "duration": "110.8496041186441",
+        "name": "loading.mobile/Wikipedia_3g"
+    },
+    {
+        "duration": "36.20756939141415",
+        "name": "loading.mobile/YahooNews"
+    },
+    {
+        "duration": "81.584812",
+        "name": "loading.mobile/YahooNews_3g"
+    },
+    {
+        "duration": "28.32673128535354",
+        "name": "loading.mobile/Youtube"
+    },
+    {
+        "duration": "138.65583781578945",
+        "name": "loading.mobile/Youtube_3g"
+    },
+    {
+        "duration": "33.309691585858594",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4"
+    },
+    {
+        "duration": "37.95070384848486",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4"
+    },
+    {
+        "duration": "38.03911347474748",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
+    },
+    {
+        "duration": "36.255737828282825",
+        "name": "media.mobile/mse.html?media=h264_video.mp4"
+    },
+    {
+        "duration": "56.36894737373738",
+        "name": "media.mobile/video.html?src=crowd.ogg&type=audio"
+    },
+    {
+        "duration": "42.65309249494949",
+        "name": "media.mobile/video.html?src=crowd1080_vp9.webm"
+    },
+    {
+        "duration": "33.68953709090909",
+        "name": "media.mobile/video.html?src=crowd1080_vp9.webm&seek"
+    },
+    {
+        "duration": "43.43721473737373",
+        "name": "media.mobile/video.html?src=crowd720_vp9.webm"
+    },
+    {
+        "duration": "49.220243171717186",
+        "name": "media.mobile/video.html?src=tulip2.m4a&type=audio"
+    },
+    {
+        "duration": "49.468740717171706",
+        "name": "media.mobile/video.html?src=tulip2.mp3&type=audio"
+    },
+    {
+        "duration": "26.610510010101013",
+        "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek"
+    },
+    {
+        "duration": "55.6635931717172",
+        "name": "media.mobile/video.html?src=tulip2.mp4"
+    },
+    {
+        "duration": "57.75627408080809",
+        "name": "media.mobile/video.html?src=tulip2.mp4&busyjs"
+    },
+    {
+        "duration": "30.887809555555567",
+        "name": "media.mobile/video.html?src=tulip2.mp4&seek"
+    },
+    {
+        "duration": "49.282626414141426",
+        "name": "media.mobile/video.html?src=tulip2.ogg&type=audio"
+    },
+    {
+        "duration": "26.638910353535355",
+        "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek"
+    },
+    {
+        "duration": "55.63193587878786",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm"
+    },
+    {
+        "duration": "42.71535440404042",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm&background"
+    },
+    {
+        "duration": "37.41671761616161",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm&seek"
+    },
+    {
+        "duration": "94.45480569696971",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm_Regular-3G"
+    },
+    {
+        "duration": "49.866734888888864",
+        "name": "media.mobile/video.html?src=tulip2.wav&type=audio"
+    },
+    {
+        "duration": "25.39898697979798",
+        "name": "media.mobile/video.html?src=tulip2.wav&type=audio&seek"
+    },
+    {
+        "duration": "283.86367838383836",
+        "name": "memory.long_running_idle_gmail_background_tbmv2/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "266.1293877777777",
+        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "23.194428092929304",
+        "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "21.877961634343432",
+        "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "23.099528284848475",
+        "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "22.196962981818178",
+        "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "23.361611438383832",
+        "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "22.25851799191919",
+        "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "22.29657276161616",
+        "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "22.33571986666666",
+        "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "22.64749322424243",
+        "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "23.02713294747475",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "24.59534457777778",
+        "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "23.339618315151522",
+        "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "23.961735311111106",
+        "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "23.499799965656564",
+        "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "23.73391345656565",
+        "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "23.894785610101014",
+        "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "23.959108636363652",
+        "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "23.747988460606063",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "23.987180783838387",
+        "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "27.83396827878788",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "81.64938107070708",
+        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+    },
+    {
+        "duration": "28.79741783838385",
+        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
+    },
+    {
+        "duration": "65.33707443434345",
+        "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
+    },
+    {
+        "duration": "66.32805177777777",
+        "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
+    },
+    {
+        "duration": "57.990902626262645",
+        "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
+    },
+    {
+        "duration": "80.08041260606062",
+        "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
+    },
+    {
+        "duration": "63.69943893939395",
+        "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
+    },
+    {
+        "duration": "63.94318069696968",
+        "name": "power.typical_10_mobile/http://m.ynet.co.il"
+    },
+    {
+        "duration": "63.881349656565675",
+        "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
+    },
+    {
+        "duration": "57.87066710101012",
+        "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
+    },
+    {
+        "duration": "59.812717343434315",
+        "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
+    },
+    {
+        "duration": "65.95162268686867",
+        "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
+    },
+    {
+        "duration": "63.28305870707069",
+        "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
+    },
+    {
+        "duration": "23.809695",
+        "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
+    },
+    {
+        "duration": "31.196739787878787",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
+    },
+    {
+        "duration": "14.121468818181821",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
+    },
+    {
+        "duration": "20.921569181818175",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
+    },
+    {
+        "duration": "18.940635282828286",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
+    },
+    {
+        "duration": "15.479228949494953",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
+    },
+    {
+        "duration": "37.681570696969686",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
+    },
+    {
+        "duration": "16.72754898989899",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
+    },
+    {
+        "duration": "30.726264262626252",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
+    },
+    {
+        "duration": "25.84299269696969",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
+    },
+    {
+        "duration": "18.23197821212121",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
+    },
+    {
+        "duration": "22.266579838383848",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
+    },
+    {
+        "duration": "25.53063561616161",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
+    },
+    {
+        "duration": "37.44757373737373",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
+    },
+    {
+        "duration": "15.05620182828283",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
+    },
+    {
+        "duration": "10.479943979797984",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
+    },
+    {
+        "duration": "39.39504476767677",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
+    },
+    {
+        "duration": "38.37986488888887",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
+    },
+    {
+        "duration": "21.82991428282828",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
+    },
+    {
+        "duration": "2.405047425E-4",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html"
+    },
+    {
+        "duration": "18.99619348484848",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
+    },
+    {
+        "duration": "15.786679257575752",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
+    },
+    {
+        "duration": "40.100060262626265",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
+    },
+    {
+        "duration": "120.46331305050512",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
+    },
+    {
+        "duration": "103.87215434343432",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
+    },
+    {
+        "duration": "37.8146070909091",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
+    },
+    {
+        "duration": "2.5950159285714286E-4",
+        "name": "rendering.mobile/amazon"
+    },
+    {
+        "duration": "1.2261527000000002E-4",
+        "name": "rendering.mobile/amazon_desktop"
+    },
+    {
+        "duration": "1.429830277142857E-4",
+        "name": "rendering.mobile/amazon_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.490045666666663",
+        "name": "rendering.mobile/amazon_pinch"
+    },
+    {
+        "duration": "25.832352166666666",
+        "name": "rendering.mobile/amazon_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "2.3698806857142858E-4",
+        "name": "rendering.mobile/amazon_sync_scroll"
+    },
+    {
+        "duration": "29.52402226262628",
+        "name": "rendering.mobile/analog_clock_svg"
+    },
+    {
+        "duration": "23.96805277777778",
+        "name": "rendering.mobile/androidpolice"
+    },
+    {
+        "duration": "28.252661676767673",
+        "name": "rendering.mobile/androidpolice_mobile"
+    },
+    {
+        "duration": "26.938419020202026",
+        "name": "rendering.mobile/androidpolice_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.52147460606061",
+        "name": "rendering.mobile/androidpolice_sync_scroll"
+    },
+    {
+        "duration": "7.1756937090909085",
+        "name": "rendering.mobile/animometer_webgl"
+    },
+    {
+        "duration": "6.42518938111111",
+        "name": "rendering.mobile/aquarium"
+    },
+    {
+        "duration": "46.29955883333334",
+        "name": "rendering.mobile/background_color_animation"
+    },
+    {
+        "duration": "32.04356998888887",
+        "name": "rendering.mobile/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "17.140416494949495",
+        "name": "rendering.mobile/baidu"
+    },
+    {
+        "duration": "20.15810483838383",
+        "name": "rendering.mobile/baidu_mobile"
+    },
+    {
+        "duration": "18.55322922222222",
+        "name": "rendering.mobile/baidu_mobile_sync_scroll"
+    },
+    {
+        "duration": "17.263453575757577",
+        "name": "rendering.mobile/baidu_sync_scroll"
+    },
+    {
+        "duration": "30.031815878787867",
+        "name": "rendering.mobile/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "33.377700636363635",
+        "name": "rendering.mobile/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "33.55981883838384",
+        "name": "rendering.mobile/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "33.35318453535354",
+        "name": "rendering.mobile/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "32.230924",
+        "name": "rendering.mobile/balls_javascript_canvas"
+    },
+    {
+        "duration": "29.47986611111112",
+        "name": "rendering.mobile/balls_javascript_css"
+    },
+    {
+        "duration": "44.80457431313131",
+        "name": "rendering.mobile/balls_svg_animations"
+    },
+    {
+        "duration": "35.11085113157894",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "15.703915631313137",
+        "name": "rendering.mobile/bing"
+    },
+    {
+        "duration": "18.261492777777786",
+        "name": "rendering.mobile/bing_mobile"
+    },
+    {
+        "duration": "17.384323297979797",
+        "name": "rendering.mobile/bing_mobile_sync_scroll"
+    },
+    {
+        "duration": "15.788591434343427",
+        "name": "rendering.mobile/bing_sync_scroll"
+    },
+    {
+        "duration": "6.348671613333334",
+        "name": "rendering.mobile/blob"
+    },
+    {
+        "duration": "36.12501960606061",
+        "name": "rendering.mobile/blogspot"
+    },
+    {
+        "duration": "33.206647424242426",
+        "name": "rendering.mobile/blogspot_desktop"
+    },
+    {
+        "duration": "34.708259000000005",
+        "name": "rendering.mobile/blogspot_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.391132090909085",
+        "name": "rendering.mobile/blogspot_mobile"
+    },
+    {
+        "duration": "20.005857272727273",
+        "name": "rendering.mobile/blogspot_mobile_sync_scroll"
+    },
+    {
+        "duration": "18.46802352525252",
+        "name": "rendering.mobile/blogspot_sync_scroll"
+    },
+    {
+        "duration": "36.648419979797964",
+        "name": "rendering.mobile/boingboing"
+    },
+    {
+        "duration": "40.127102464646455",
+        "name": "rendering.mobile/boingboing_mobile"
+    },
+    {
+        "duration": "37.00600018181818",
+        "name": "rendering.mobile/boingboing_sync_scroll"
+    },
+    {
+        "duration": "26.670557242424252",
+        "name": "rendering.mobile/booking.com"
+    },
+    {
+        "duration": "22.674765949494958",
+        "name": "rendering.mobile/booking.com_desktop"
+    },
+    {
+        "duration": "25.065100545454552",
+        "name": "rendering.mobile/booking.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.488595181818177",
+        "name": "rendering.mobile/booking.com_mobile"
+    },
+    {
+        "duration": "26.485705696969692",
+        "name": "rendering.mobile/booking.com_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.230548414141392",
+        "name": "rendering.mobile/booking.com_sync_scroll"
+    },
+    {
+        "duration": "31.7888015",
+        "name": "rendering.mobile/booking_pinch"
+    },
+    {
+        "duration": "29.54323533333333",
+        "name": "rendering.mobile/booking_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.31546116161617",
+        "name": "rendering.mobile/bouncing_balls_15"
+    },
+    {
+        "duration": "30.003296686868676",
+        "name": "rendering.mobile/bouncing_balls_shadow"
+    },
+    {
+        "duration": "28.59713944444445",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "24.09722682828283",
+        "name": "rendering.mobile/bouncing_gradient_circles"
+    },
+    {
+        "duration": "20.167647818181816",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "31.810010282828287",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "30.24568386746989",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "30.16825430120483",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.98251410843374",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "30.16751302409639",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.92930846987953",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "30.339924216867477",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.309751024096386",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "30.664113445783133",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.329895795180725",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "30.87665425301203",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.60806874698795",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "28.689252602409642",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.281918168674704",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "25.922970783132538",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.450022903614453",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "24.309551277108437",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.171096325301207",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "22.457886024096382",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.80330597590361",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.33455654216867",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.201331949494946",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "23.748385363636366",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "22.47963180808082",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "22.041707212121214",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "27.38449642424243",
+        "name": "rendering.mobile/canvas_to_blob"
+    },
+    {
+        "duration": "26.704410101010108",
+        "name": "rendering.mobile/capitolvolkswagen"
+    },
+    {
+        "duration": "31.7134737070707",
+        "name": "rendering.mobile/capitolvolkswagen_mobile"
+    },
+    {
+        "duration": "27.787896555555573",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll"
+    },
+    {
+        "duration": "26.69560292929294",
+        "name": "rendering.mobile/capitolvolkswagen_sync_scroll"
+    },
+    {
+        "duration": "24.55544607954545",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "26.70774607954547",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "27.53567617045455",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "23.67966825",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "15.913496289156626",
+        "name": "rendering.mobile/cats_unscaled"
+    },
+    {
+        "duration": "14.688267168674702",
+        "name": "rendering.mobile/cats_viewport_width"
+    },
+    {
+        "duration": "37.20268810526315",
+        "name": "rendering.mobile/cc_poster_circle"
+    },
+    {
+        "duration": "34.031084052631584",
+        "name": "rendering.mobile/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "33.88485821052631",
+        "name": "rendering.mobile/cc_scroll_text_only"
+    },
+    {
+        "duration": "28.859427767676745",
+        "name": "rendering.mobile/chip_tune"
+    },
+    {
+        "duration": "20.466902040404037",
+        "name": "rendering.mobile/cnn"
+    },
+    {
+        "duration": "38.62261253535353",
+        "name": "rendering.mobile/cnn_article"
+    },
+    {
+        "duration": "44.4174875959596",
+        "name": "rendering.mobile/cnn_article_mobile"
+    },
+    {
+        "duration": "42.48256927272726",
+        "name": "rendering.mobile/cnn_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "39.148644282828286",
+        "name": "rendering.mobile/cnn_article_sync_scroll"
+    },
+    {
+        "duration": "2.3164067714285717E-4",
+        "name": "rendering.mobile/cnn_desktop"
+    },
+    {
+        "duration": "2.644062042857143E-4",
+        "name": "rendering.mobile/cnn_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.70078061616161",
+        "name": "rendering.mobile/cnn_mobile"
+    },
+    {
+        "duration": "22.57515007070708",
+        "name": "rendering.mobile/cnn_mobile_sync_scroll"
+    },
+    {
+        "duration": "39.7032506",
+        "name": "rendering.mobile/cnn_pathological"
+    },
+    {
+        "duration": "36.27229883333333",
+        "name": "rendering.mobile/cnn_pinch"
+    },
+    {
+        "duration": "35.71079166666667",
+        "name": "rendering.mobile/cnn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.720894616161612",
+        "name": "rendering.mobile/cnn_sync_scroll"
+    },
+    {
+        "duration": "31.662628656565662",
+        "name": "rendering.mobile/compositor_heavy_animation"
+    },
+    {
+        "duration": "25.484565579545446",
+        "name": "rendering.mobile/coordinated_animation"
+    },
+    {
+        "duration": "31.871363343434343",
+        "name": "rendering.mobile/crafty_mind"
+    },
+    {
+        "duration": "35.16248614141415",
+        "name": "rendering.mobile/css_animations_many_keyframes"
+    },
+    {
+        "duration": "31.459127979797973",
+        "name": "rendering.mobile/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "32.96696560606061",
+        "name": "rendering.mobile/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "31.952171818181796",
+        "name": "rendering.mobile/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "31.802792848484827",
+        "name": "rendering.mobile/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "29.9762313939394",
+        "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "34.639471141414155",
+        "name": "rendering.mobile/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "38.02384373737373",
+        "name": "rendering.mobile/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "37.863754363636346",
+        "name": "rendering.mobile/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "34.84492727272727",
+        "name": "rendering.mobile/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "34.78206862626262",
+        "name": "rendering.mobile/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "38.23737091919192",
+        "name": "rendering.mobile/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "33.54189813131313",
+        "name": "rendering.mobile/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "36.76166941414142",
+        "name": "rendering.mobile/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "32.613922515151515",
+        "name": "rendering.mobile/css_transitions_inline_style"
+    },
+    {
+        "duration": "32.9096982121212",
+        "name": "rendering.mobile/css_transitions_new_element"
+    },
+    {
+        "duration": "32.26105790909091",
+        "name": "rendering.mobile/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "34.527868292929305",
+        "name": "rendering.mobile/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "34.20334594949495",
+        "name": "rendering.mobile/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "32.54356014141413",
+        "name": "rendering.mobile/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "31.663101828282823",
+        "name": "rendering.mobile/css_transitions_style_element"
+    },
+    {
+        "duration": "33.933793515151514",
+        "name": "rendering.mobile/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "39.98165326262627",
+        "name": "rendering.mobile/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "34.09994487878789",
+        "name": "rendering.mobile/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "34.330500171717176",
+        "name": "rendering.mobile/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "32.64255955555555",
+        "name": "rendering.mobile/css_transitions_updating_class"
+    },
+    {
+        "duration": "33.99546410101009",
+        "name": "rendering.mobile/css_value_type_color"
+    },
+    {
+        "duration": "74.4582653030303",
+        "name": "rendering.mobile/css_value_type_filter"
+    },
+    {
+        "duration": "29.631212080808083",
+        "name": "rendering.mobile/css_value_type_length"
+    },
+    {
+        "duration": "35.42789698989898",
+        "name": "rendering.mobile/css_value_type_length_complex"
+    },
+    {
+        "duration": "33.842259878787864",
+        "name": "rendering.mobile/css_value_type_length_simple"
+    },
+    {
+        "duration": "33.37697774747475",
+        "name": "rendering.mobile/css_value_type_path"
+    },
+    {
+        "duration": "29.697498767676755",
+        "name": "rendering.mobile/css_value_type_shadow"
+    },
+    {
+        "duration": "29.013770818181822",
+        "name": "rendering.mobile/css_value_type_transform_complex"
+    },
+    {
+        "duration": "29.869067393939407",
+        "name": "rendering.mobile/css_value_type_transform_simple"
+    },
+    {
+        "duration": "35.05590472727273",
+        "name": "rendering.mobile/cuteoverload"
+    },
+    {
+        "duration": "41.46495589898992",
+        "name": "rendering.mobile/cuteoverload_mobile"
+    },
+    {
+        "duration": "35.634625888888884",
+        "name": "rendering.mobile/cuteoverload_sync_scroll"
+    },
+    {
+        "duration": "28.80709911111111",
+        "name": "rendering.mobile/deviantart"
+    },
+    {
+        "duration": "32.324991191919196",
+        "name": "rendering.mobile/deviantart_mobile"
+    },
+    {
+        "duration": "32.2695496969697",
+        "name": "rendering.mobile/deviantart_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.28398970707071",
+        "name": "rendering.mobile/deviantart_sync_scroll"
+    },
+    {
+        "duration": "2.633162914285714E-4",
+        "name": "rendering.mobile/digg"
+    },
+    {
+        "duration": "2.6205608142857145E-4",
+        "name": "rendering.mobile/digg_sync_scroll"
+    },
+    {
+        "duration": "6.388772383333335",
+        "name": "rendering.mobile/dynamic_cube_map"
+    },
+    {
+        "duration": "6.409158424444445",
+        "name": "rendering.mobile/earth"
+    },
+    {
+        "duration": "20.583800535353525",
+        "name": "rendering.mobile/ebay"
+    },
+    {
+        "duration": "17.29511484848485",
+        "name": "rendering.mobile/ebay_desktop"
+    },
+    {
+        "duration": "18.67986869696969",
+        "name": "rendering.mobile/ebay_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.85387838383838",
+        "name": "rendering.mobile/ebay_mobile"
+    },
+    {
+        "duration": "23.912343989898996",
+        "name": "rendering.mobile/ebay_mobile_sync_scroll"
+    },
+    {
+        "duration": "37.4326635",
+        "name": "rendering.mobile/ebay_pinch"
+    },
+    {
+        "duration": "34.438744500000006",
+        "name": "rendering.mobile/ebay_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "41.26411534343434",
+        "name": "rendering.mobile/ebay_scroll"
+    },
+    {
+        "duration": "21.872463030303024",
+        "name": "rendering.mobile/ebay_sync_scroll"
+    },
+    {
+        "duration": "28.877612363636356",
+        "name": "rendering.mobile/effect_games"
+    },
+    {
+        "duration": "17.88102384343434",
+        "name": "rendering.mobile/espn"
+    },
+    {
+        "duration": "16.8707083030303",
+        "name": "rendering.mobile/espn_desktop"
+    },
+    {
+        "duration": "16.07400335858586",
+        "name": "rendering.mobile/espn_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.89031328888888",
+        "name": "rendering.mobile/espn_pathological"
+    },
+    {
+        "duration": "39.293641",
+        "name": "rendering.mobile/espn_pinch"
+    },
+    {
+        "duration": "37.6477205",
+        "name": "rendering.mobile/espn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "2.499989128571428E-4",
+        "name": "rendering.mobile/espn_sync_scroll"
+    },
+    {
+        "duration": "30.742260755555563",
+        "name": "rendering.mobile/extra_large_texture_uploads"
+    },
+    {
+        "duration": "31.663577777777768",
+        "name": "rendering.mobile/facebook"
+    },
+    {
+        "duration": "29.381848525252533",
+        "name": "rendering.mobile/facebook_desktop"
+    },
+    {
+        "duration": "33.45692230303029",
+        "name": "rendering.mobile/facebook_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.318141939393943",
+        "name": "rendering.mobile/facebook_mobile"
+    },
+    {
+        "duration": "23.937896909090902",
+        "name": "rendering.mobile/facebook_mobile_sync_scroll"
+    },
+    {
+        "duration": "33.662438333333334",
+        "name": "rendering.mobile/facebook_pinch"
+    },
+    {
+        "duration": "29.211647833333334",
+        "name": "rendering.mobile/facebook_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.183827777777783",
+        "name": "rendering.mobile/facebook_sync_scroll"
+    },
+    {
+        "duration": "23.082964474747467",
+        "name": "rendering.mobile/fill_shapes"
+    },
+    {
+        "duration": "28.805364292929298",
+        "name": "rendering.mobile/filter_terrain_svg"
+    },
+    {
+        "duration": "39.96420372727274",
+        "name": "rendering.mobile/flickr_scroll"
+    },
+    {
+        "duration": "25.88966489772727",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "1.484666557142857E-4",
+        "name": "rendering.mobile/forecast.io"
+    },
+    {
+        "duration": "1.4042854214285717E-4",
+        "name": "rendering.mobile/forecast.io_sync_scroll"
+    },
+    {
+        "duration": "46.5922152929293",
+        "name": "rendering.mobile/gmail"
+    },
+    {
+        "duration": "49.51162428282829",
+        "name": "rendering.mobile/gmail_desktop"
+    },
+    {
+        "duration": "41.4567796969697",
+        "name": "rendering.mobile/gmail_desktop_gpu_raster"
+    },
+    {
+        "duration": "49.917326833333334",
+        "name": "rendering.mobile/gmail_pinch"
+    },
+    {
+        "duration": "39.41666",
+        "name": "rendering.mobile/gmail_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.773866848484854",
+        "name": "rendering.mobile/google_calendar"
+    },
+    {
+        "duration": "27.603783090909076",
+        "name": "rendering.mobile/google_calendar_desktop"
+    },
+    {
+        "duration": "29.667182545454548",
+        "name": "rendering.mobile/google_calendar_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.4322585",
+        "name": "rendering.mobile/google_calendar_pinch"
+    },
+    {
+        "duration": "29.37581075",
+        "name": "rendering.mobile/google_calendar_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "48.43910237373736",
+        "name": "rendering.mobile/google_docs"
+    },
+    {
+        "duration": "43.870008545454546",
+        "name": "rendering.mobile/google_docs_desktop"
+    },
+    {
+        "duration": "51.73489134343432",
+        "name": "rendering.mobile/google_docs_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.923456",
+        "name": "rendering.mobile/google_image_pinch"
+    },
+    {
+        "duration": "30.149704749999998",
+        "name": "rendering.mobile/google_image_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "40.26321776767676",
+        "name": "rendering.mobile/google_image_search"
+    },
+    {
+        "duration": "31.616503999999996",
+        "name": "rendering.mobile/google_image_search_desktop"
+    },
+    {
+        "duration": "37.255957282828284",
+        "name": "rendering.mobile/google_image_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.326647232323236",
+        "name": "rendering.mobile/google_news"
+    },
+    {
+        "duration": "26.432666068181824",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "31.064039010101002",
+        "name": "rendering.mobile/google_news_mobile"
+    },
+    {
+        "duration": "30.89225928282828",
+        "name": "rendering.mobile/google_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.43665828282828",
+        "name": "rendering.mobile/google_news_sync_scroll"
+    },
+    {
+        "duration": "40.85393022222224",
+        "name": "rendering.mobile/google_plus"
+    },
+    {
+        "duration": "37.22135535353536",
+        "name": "rendering.mobile/google_plus_desktop"
+    },
+    {
+        "duration": "40.62369252525252",
+        "name": "rendering.mobile/google_plus_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.946795222222228",
+        "name": "rendering.mobile/google_plus_mobile"
+    },
+    {
+        "duration": "25.788100090909104",
+        "name": "rendering.mobile/google_plus_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.099324070707066",
+        "name": "rendering.mobile/google_plus_sync_scroll"
+    },
+    {
+        "duration": "28.25050275",
+        "name": "rendering.mobile/google_search_pinch"
+    },
+    {
+        "duration": "26.506301000000004",
+        "name": "rendering.mobile/google_search_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.820088151515147",
+        "name": "rendering.mobile/google_web_search"
+    },
+    {
+        "duration": "17.09970826262627",
+        "name": "rendering.mobile/google_web_search_desktop"
+    },
+    {
+        "duration": "18.21333159595959",
+        "name": "rendering.mobile/google_web_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.9390648989899",
+        "name": "rendering.mobile/google_web_search_mobile"
+    },
+    {
+        "duration": "19.447406898989904",
+        "name": "rendering.mobile/google_web_search_mobile_sync_scroll"
+    },
+    {
+        "duration": "17.9735041010101",
+        "name": "rendering.mobile/google_web_search_sync_scroll"
+    },
+    {
+        "duration": "19.829427939393945",
+        "name": "rendering.mobile/gsp.ro"
+    },
+    {
+        "duration": "23.12441431313132",
+        "name": "rendering.mobile/gsp.ro_mobile"
+    },
+    {
+        "duration": "21.548423707070707",
+        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll"
+    },
+    {
+        "duration": "20.11581942424242",
+        "name": "rendering.mobile/gsp.ro_sync_scroll"
+    },
+    {
+        "duration": "24.37090764772728",
+        "name": "rendering.mobile/guardian_pathological"
+    },
+    {
+        "duration": "36.94321452525251",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "23.38405946590909",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "23.512990670454542",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "25.870636202020204",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "25.970352852272722",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "42.19842133333332",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "36.59163544444445",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "44.519479722222215",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "43.76556678571428",
+        "name": "rendering.mobile/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "114.24354385714287",
+        "name": "rendering.mobile/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "43.25213985714284",
+        "name": "rendering.mobile/idle_power_set_timetout"
+    },
+    {
+        "duration": "43.08776196969697",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "41.57491956565658",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "30.521885102272723",
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "28.095683686868686",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "52.34797115789474",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "41.189091368421046",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "35.018719",
+        "name": "rendering.mobile/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "33.351625210526315",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "28.452226121212128",
+        "name": "rendering.mobile/kevs_3d"
+    },
+    {
+        "duration": "30.214692393939394",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "30.861178340909074",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "35.06582538636363",
+        "name": "rendering.mobile/latimes_pathological"
+    },
+    {
+        "duration": "22.227706434343432",
+        "name": "rendering.mobile/linkedin"
+    },
+    {
+        "duration": "20.58868050505051",
+        "name": "rendering.mobile/linkedin_desktop"
+    },
+    {
+        "duration": "20.439093767676763",
+        "name": "rendering.mobile/linkedin_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.57228755555556",
+        "name": "rendering.mobile/linkedin_mobile"
+    },
+    {
+        "duration": "24.195772606060594",
+        "name": "rendering.mobile/linkedin_mobile_sync_scroll"
+    },
+    {
+        "duration": "32.59718361363636",
+        "name": "rendering.mobile/linkedin_pathological"
+    },
+    {
+        "duration": "29.53778875",
+        "name": "rendering.mobile/linkedin_pinch"
+    },
+    {
+        "duration": "26.7249325",
+        "name": "rendering.mobile/linkedin_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.78414902020203",
+        "name": "rendering.mobile/linkedin_sync_scroll"
+    },
+    {
+        "duration": "21.07364727272728",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "34.007025193181825",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "27.377492242424243",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "36.720805818181816",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "7.5784033147727285",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "44.09666599999999",
+        "name": "rendering.mobile/maps_perf_test"
+    },
+    {
+        "duration": "26.0057149090909",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "24.606062763157897",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "34.531939477272736",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "27.137116212121217",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "29.447398303030297",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "29.37341164646466",
+        "name": "rendering.mobile/microsoft_fireflies"
+    },
+    {
+        "duration": "28.382028555555557",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "27.619365656565662",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "24.36362407070708",
+        "name": "rendering.mobile/microsoft_speed_reading"
+    },
+    {
+        "duration": "27.826032414141412",
+        "name": "rendering.mobile/microsoft_tweet_map"
+    },
+    {
+        "duration": "33.468005474747486",
+        "name": "rendering.mobile/microsoft_video_city"
+    },
+    {
+        "duration": "28.551316030303028",
+        "name": "rendering.mobile/microsoft_worker_fountains"
+    },
+    {
+        "duration": "25.35563568686869",
+        "name": "rendering.mobile/mix_10k"
+    },
+    {
+        "duration": "29.700018959595955",
+        "name": "rendering.mobile/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "29.01149863636364",
+        "name": "rendering.mobile/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "35.89949362626262",
+        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "28.295584555555575",
+        "name": "rendering.mobile/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "16.521387010101005",
+        "name": "rendering.mobile/mlb"
+    },
+    {
+        "duration": "17.733799106060605",
+        "name": "rendering.mobile/mlb_mobile"
+    },
+    {
+        "duration": "17.57944381313131",
+        "name": "rendering.mobile/mlb_mobile_sync_scroll"
+    },
+    {
+        "duration": "16.471396202020205",
+        "name": "rendering.mobile/mlb_sync_scroll"
+    },
+    {
+        "duration": "20.865806250000002",
+        "name": "rendering.mobile/mobile_news_sandbox"
+    },
+    {
+        "duration": "29.774915202020225",
+        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "29.49021593939393",
+        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "40.70213566666667",
+        "name": "rendering.mobile/motion_mark_focus"
+    },
+    {
+        "duration": "43.366357",
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "30.427087105263162",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "23.670889315789477",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "21.487767631578947",
+        "name": "rendering.mobile/no_op_settimeout"
+    },
+    {
+        "duration": "25.379749157894736",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "6.386316187500003",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "37.27164387878787",
+        "name": "rendering.mobile/nyc_gov_scroll"
+    },
+    {
+        "duration": "23.20561744444445",
+        "name": "rendering.mobile/nytimes"
+    },
+    {
+        "duration": "27.631344161616155",
+        "name": "rendering.mobile/nytimes_mobile"
+    },
+    {
+        "duration": "35.35679039393939",
+        "name": "rendering.mobile/nytimes_scroll"
+    },
+    {
+        "duration": "23.193170010101014",
+        "name": "rendering.mobile/nytimes_sync_scroll"
+    },
+    {
+        "duration": "39.71037043434343",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "28.64270140909091",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "6.40133241325301",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "36.18774251807229",
+        "name": "rendering.mobile/pbs_pathological"
+    },
+    {
+        "duration": "20.373697261363628",
+        "name": "rendering.mobile/physical_simulation"
+    },
+    {
+        "duration": "33.65192936363636",
+        "name": "rendering.mobile/pinterest"
+    },
+    {
+        "duration": "29.282736121212114",
+        "name": "rendering.mobile/pinterest_desktop"
+    },
+    {
+        "duration": "2.4512835999999997E-4",
+        "name": "rendering.mobile/pinterest_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.6989125050505",
+        "name": "rendering.mobile/pinterest_mobile"
+    },
+    {
+        "duration": "33.16691743434342",
+        "name": "rendering.mobile/pinterest_mobile_sync_scroll"
+    },
+    {
+        "duration": "30.9417013939394",
+        "name": "rendering.mobile/pinterest_sync_scroll"
+    },
+    {
+        "duration": "22.65224475757575",
+        "name": "rendering.mobile/put_get_image_data"
+    },
+    {
+        "duration": "30.35488267469879",
+        "name": "rendering.mobile/raf"
+    },
+    {
+        "duration": "31.0538721686747",
+        "name": "rendering.mobile/raf_animation"
+    },
+    {
+        "duration": "29.564155903614463",
+        "name": "rendering.mobile/raf_canvas"
+    },
+    {
+        "duration": "30.61132987951807",
+        "name": "rendering.mobile/raf_touch_animation"
+    },
+    {
+        "duration": "36.558743289156624",
+        "name": "rendering.mobile/recode_pathological"
+    },
+    {
+        "duration": "27.98045865656567",
+        "name": "rendering.mobile/reddit"
+    },
+    {
+        "duration": "29.93471341414143",
+        "name": "rendering.mobile/reddit_mobile"
+    },
+    {
+        "duration": "28.005137424242427",
+        "name": "rendering.mobile/reddit_sync_scroll"
+    },
+    {
+        "duration": "24.311210656565645",
+        "name": "rendering.mobile/runway"
+    },
+    {
+        "duration": "6.387418516867469",
+        "name": "rendering.mobile/san_angeles"
+    },
+    {
+        "duration": "18.907885807228908",
+        "name": "rendering.mobile/second_batch_js_heavy"
+    },
+    {
+        "duration": "17.173611734939755",
+        "name": "rendering.mobile/second_batch_js_light"
+    },
+    {
+        "duration": "17.46177646987952",
+        "name": "rendering.mobile/second_batch_js_medium"
+    },
+    {
+        "duration": "23.430319333333333",
+        "name": "rendering.mobile/sfgate"
+    },
+    {
+        "duration": "25.03721053535354",
+        "name": "rendering.mobile/sfgate_mobile"
+    },
+    {
+        "duration": "24.300007585858584",
+        "name": "rendering.mobile/sfgate_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.589817797979798",
+        "name": "rendering.mobile/sfgate_sync_scroll"
+    },
+    {
+        "duration": "37.49536779518072",
+        "name": "rendering.mobile/silk_finance"
+    },
+    {
+        "duration": "27.381363036144567",
+        "name": "rendering.mobile/simple_text_page"
+    },
+    {
+        "duration": "20.445400325301204",
+        "name": "rendering.mobile/simple_touch_drag"
+    },
+    {
+        "duration": "26.562556828282826",
+        "name": "rendering.mobile/slashdot"
+    },
+    {
+        "duration": "30.451906535353547",
+        "name": "rendering.mobile/slashdot_mobile"
+    },
+    {
+        "duration": "26.795212171717168",
+        "name": "rendering.mobile/slashdot_sync_scroll"
+    },
+    {
+        "duration": "20.922069710526312",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "34.73838312048193",
+        "name": "rendering.mobile/small_texture_uploads"
+    },
+    {
+        "duration": "29.559433373737384",
+        "name": "rendering.mobile/smash_cat"
+    },
+    {
+        "duration": "23.223896070707077",
+        "name": "rendering.mobile/spielzeugz"
+    },
+    {
+        "duration": "21.306055375000003",
+        "name": "rendering.mobile/sticky_using_webkit"
+    },
+    {
+        "duration": "34.24957037500001",
+        "name": "rendering.mobile/stress_hidey_bars"
+    },
+    {
+        "duration": "23.17866701010101",
+        "name": "rendering.mobile/stroke_shapes"
+    },
+    {
+        "duration": "33.551657963855426",
+        "name": "rendering.mobile/svg_icon_raster"
+    },
+    {
+        "duration": "17.22551596052632",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "25.14082805681818",
+        "name": "rendering.mobile/swipe_to_dismiss"
+    },
+    {
+        "duration": "25.866609421686753",
+        "name": "rendering.mobile/sync_scroll_offset"
+    },
+    {
+        "duration": "42.71802591919192",
+        "name": "rendering.mobile/techcrunch"
+    },
+    {
+        "duration": "39.45697844444445",
+        "name": "rendering.mobile/techcrunch_desktop"
+    },
+    {
+        "duration": "44.45766378787877",
+        "name": "rendering.mobile/techcrunch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.621711373737384",
+        "name": "rendering.mobile/techcrunch_mobile"
+    },
+    {
+        "duration": "20.88992350505051",
+        "name": "rendering.mobile/techcrunch_mobile_sync_scroll"
+    },
+    {
+        "duration": "19.797572323232323",
+        "name": "rendering.mobile/techcrunch_sync_scroll"
+    },
+    {
+        "duration": "27.074976409638545",
+        "name": "rendering.mobile/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "27.340509216867478",
+        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.527299072289154",
+        "name": "rendering.mobile/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "30.22046953012047",
+        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.351869759036145",
+        "name": "rendering.mobile/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "28.364014289156625",
+        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.021415292682942",
+        "name": "rendering.mobile/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "28.6419278313253",
+        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.598323530120474",
+        "name": "rendering.mobile/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "29.17411053012047",
+        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.718067554216862",
+        "name": "rendering.mobile/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "26.519810819277094",
+        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.176167566265054",
+        "name": "rendering.mobile/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "23.97022395180723",
+        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.596917277108435",
+        "name": "rendering.mobile/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "22.618121602409644",
+        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.789771385542167",
+        "name": "rendering.mobile/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "21.077750975903612",
+        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.442833373493972",
+        "name": "rendering.mobile/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "19.951067409638554",
+        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.503323771084325",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "30.77413166265059",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.69774412048192",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "29.317674457831327",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.95063077108434",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "30.799103289156626",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.25078591566264",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "31.26418536585367",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.042337493975886",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "30.89686943373494",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.244419963855428",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "29.54796538554218",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.97939912048193",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "26.556850168674714",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.238338746987957",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "24.9051373373494",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.605740493975894",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "22.789410325301198",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.034069000000006",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.853298265060236",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.332742481927713",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.23817109638554",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.54691277108434",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.66877779518072",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.79867325301204",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.719345638554227",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.82910824096385",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.753863915662645",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.822819337349408",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.815143590361444",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.684151469879513",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.40660810843373",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.055085795180727",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "19.965082783132534",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.420817819277108",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.14410615662651",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.329163506024102",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.217428602409637",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.719351722891563",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "17.609804277108434",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.52898342424243",
+        "name": "rendering.mobile/theverge"
+    },
+    {
+        "duration": "32.2956552929293",
+        "name": "rendering.mobile/theverge_article"
+    },
+    {
+        "duration": "38.136494202020195",
+        "name": "rendering.mobile/theverge_article_mobile"
+    },
+    {
+        "duration": "36.45316076767678",
+        "name": "rendering.mobile/theverge_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "32.81514182828283",
+        "name": "rendering.mobile/theverge_article_sync_scroll"
+    },
+    {
+        "duration": "23.974090484848478",
+        "name": "rendering.mobile/theverge_mobile"
+    },
+    {
+        "duration": "23.73444908080807",
+        "name": "rendering.mobile/theverge_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.70545188888889",
+        "name": "rendering.mobile/theverge_sync_scroll"
+    },
+    {
+        "duration": "27.010995511363628",
+        "name": "rendering.mobile/toggle_drawer"
+    },
+    {
+        "duration": "26.586868349397594",
+        "name": "rendering.mobile/touch_handler_scrolling"
+    },
+    {
+        "duration": "33.43587057575757",
+        "name": "rendering.mobile/transform_transitions"
+    },
+    {
+        "duration": "29.355849242424252",
+        "name": "rendering.mobile/transform_transitions_js_block"
+    },
+    {
+        "duration": "26.524751696969705",
+        "name": "rendering.mobile/twitter"
+    },
+    {
+        "duration": "24.062925282828285",
+        "name": "rendering.mobile/twitter_desktop"
+    },
+    {
+        "duration": "24.05826836363637",
+        "name": "rendering.mobile/twitter_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.65011575",
+        "name": "rendering.mobile/twitter_pinch"
+    },
+    {
+        "duration": "30.698389249999998",
+        "name": "rendering.mobile/twitter_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "2.5521005714285714E-4",
+        "name": "rendering.mobile/twitter_sync_scroll"
+    },
+    {
+        "duration": "27.252247361445782",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "34.2366594040404",
+        "name": "rendering.mobile/usatoday"
+    },
+    {
+        "duration": "38.26808614141414",
+        "name": "rendering.mobile/usatoday_mobile"
+    },
+    {
+        "duration": "39.1106377171717",
+        "name": "rendering.mobile/usatoday_mobile_sync_scroll"
+    },
+    {
+        "duration": "33.8090918080808",
+        "name": "rendering.mobile/usatoday_sync_scroll"
+    },
+    {
+        "duration": "28.049819499999987",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "30.251689999999996",
+        "name": "rendering.mobile/weather.com"
+    },
+    {
+        "duration": "26.116355959595957",
+        "name": "rendering.mobile/weather.com_desktop"
+    },
+    {
+        "duration": "29.661586828282832",
+        "name": "rendering.mobile/weather.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "39.32682425",
+        "name": "rendering.mobile/weather_pinch"
+    },
+    {
+        "duration": "39.12569525",
+        "name": "rendering.mobile/weather_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.029580464646486",
+        "name": "rendering.mobile/web_animation_value_type_color"
+    },
+    {
+        "duration": "29.377151212121223",
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "32.79676312121211",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "33.500950626262636",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "33.31792255555557",
+        "name": "rendering.mobile/web_animation_value_type_path"
+    },
+    {
+        "duration": "29.463234909090904",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "28.879490272727256",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "29.48625724242424",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "29.784062101010097",
+        "name": "rendering.mobile/web_animations_set_current_time"
+    },
+    {
+        "duration": "31.57143596969697",
+        "name": "rendering.mobile/web_animations_simultaneous"
+    },
+    {
+        "duration": "33.79459467676768",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "29.596033969696972",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "34.96992327272728",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "33.096963989898995",
+        "name": "rendering.mobile/wikipedia"
+    },
+    {
+        "duration": "27.81225655555556",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "25.4804962121212",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll"
+    },
+    {
+        "duration": "31.658450737373737",
+        "name": "rendering.mobile/wikipedia_desktop"
+    },
+    {
+        "duration": "33.981217070707075",
+        "name": "rendering.mobile/wikipedia_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.991918070707076",
+        "name": "rendering.mobile/wikipedia_mobile"
+    },
+    {
+        "duration": "25.315667494949487",
+        "name": "rendering.mobile/wikipedia_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.165510505050502",
+        "name": "rendering.mobile/wikipedia_sync_scroll"
+    },
+    {
+        "duration": "37.86014432323232",
+        "name": "rendering.mobile/wordpress"
+    },
+    {
+        "duration": "32.280414575757575",
+        "name": "rendering.mobile/wordpress_desktop"
+    },
+    {
+        "duration": "36.410129888888896",
+        "name": "rendering.mobile/wordpress_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.166424242424256",
+        "name": "rendering.mobile/wordpress_mobile"
+    },
+    {
+        "duration": "35.419917606060615",
+        "name": "rendering.mobile/wordpress_mobile_sync_scroll"
+    },
+    {
+        "duration": "30.572527969696974",
+        "name": "rendering.mobile/wordpress_sync_scroll"
+    },
+    {
+        "duration": "35.35088388888887",
+        "name": "rendering.mobile/worldjournal"
+    },
+    {
+        "duration": "40.60041637373737",
+        "name": "rendering.mobile/worldjournal_mobile"
+    },
+    {
+        "duration": "40.67279735353535",
+        "name": "rendering.mobile/worldjournal_mobile_sync_scroll"
+    },
+    {
+        "duration": "36.388442070707065",
+        "name": "rendering.mobile/worldjournal_sync_scroll"
+    },
+    {
+        "duration": "40.147224902439035",
+        "name": "rendering.mobile/wow_wiki_pathological"
+    },
+    {
+        "duration": "39.615850696969694",
+        "name": "rendering.mobile/wowwiki"
+    },
+    {
+        "duration": "44.30283252525251",
+        "name": "rendering.mobile/wowwiki_mobile"
+    },
+    {
+        "duration": "43.3820077171717",
+        "name": "rendering.mobile/wowwiki_mobile_sync_scroll"
+    },
+    {
+        "duration": "39.722599656565656",
+        "name": "rendering.mobile/wowwiki_sync_scroll"
+    },
+    {
+        "duration": "19.739025767676765",
+        "name": "rendering.mobile/wsj"
+    },
+    {
+        "duration": "22.645218525252535",
+        "name": "rendering.mobile/wsj_mobile"
+    },
+    {
+        "duration": "21.074149444444444",
+        "name": "rendering.mobile/wsj_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.744072424242432",
+        "name": "rendering.mobile/wsj_sync_scroll"
+    },
+    {
+        "duration": "24.549532666666654",
+        "name": "rendering.mobile/yahoo_answers"
+    },
+    {
+        "duration": "21.27828548484849",
+        "name": "rendering.mobile/yahoo_answers_desktop"
+    },
+    {
+        "duration": "22.677574535353536",
+        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.85209966666666",
+        "name": "rendering.mobile/yahoo_answers_mobile"
+    },
+    {
+        "duration": "26.363699757575777",
+        "name": "rendering.mobile/yahoo_answers_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.75616641414142",
+        "name": "rendering.mobile/yahoo_answers_sync_scroll"
+    },
+    {
+        "duration": "34.652145494949494",
+        "name": "rendering.mobile/yahoo_games"
+    },
+    {
+        "duration": "32.47616013131313",
+        "name": "rendering.mobile/yahoo_games_desktop"
+    },
+    {
+        "duration": "35.55454432323232",
+        "name": "rendering.mobile/yahoo_games_desktop_gpu_raster"
+    },
+    {
+        "duration": "39.2383325",
+        "name": "rendering.mobile/yahoo_games_pinch"
+    },
+    {
+        "duration": "37.863617250000004",
+        "name": "rendering.mobile/yahoo_games_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.016560686868694",
+        "name": "rendering.mobile/yahoo_news"
+    },
+    {
+        "duration": "24.38972442424243",
+        "name": "rendering.mobile/yahoo_news_desktop"
+    },
+    {
+        "duration": "26.476342919191918",
+        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.737640434343437",
+        "name": "rendering.mobile/yahoo_news_mobile"
+    },
+    {
+        "duration": "24.13854909090909",
+        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "38.077830999999996",
+        "name": "rendering.mobile/yahoo_news_pinch"
+    },
+    {
+        "duration": "35.111977249999995",
+        "name": "rendering.mobile/yahoo_news_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.265547646464643",
+        "name": "rendering.mobile/yahoo_news_sync_scroll"
+    },
+    {
+        "duration": "28.220908333333334",
+        "name": "rendering.mobile/yahoo_sports"
+    },
+    {
+        "duration": "25.381121070707064",
+        "name": "rendering.mobile/yahoo_sports_desktop"
+    },
+    {
+        "duration": "27.434879424242418",
+        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.41904687654322",
+        "name": "rendering.mobile/yahoo_sports_pathological"
+    },
+    {
+        "duration": "48.186975",
+        "name": "rendering.mobile/yahoo_sports_pinch"
+    },
+    {
+        "duration": "44.118203",
+        "name": "rendering.mobile/yahoo_sports_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.968074191919186",
+        "name": "rendering.mobile/youtube"
+    },
+    {
+        "duration": "36.99624032323233",
+        "name": "rendering.mobile/youtube_desktop"
+    },
+    {
+        "duration": "5.710806157142857E-4",
+        "name": "rendering.mobile/youtube_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.671935101010096",
+        "name": "rendering.mobile/youtube_mobile"
+    },
+    {
+        "duration": "17.02364001010101",
+        "name": "rendering.mobile/youtube_mobile_sync_scroll"
+    },
+    {
+        "duration": "35.43218",
+        "name": "rendering.mobile/youtube_pinch"
+    },
+    {
+        "duration": "34.59830425",
+        "name": "rendering.mobile/youtube_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.331511404040402",
+        "name": "rendering.mobile/youtube_sync_scroll"
+    },
+    {
+        "duration": "33.41215887804877",
+        "name": "rendering.mobile/yuv_decoding"
+    },
+    {
+        "duration": "39.1532145609756",
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+    },
+    {
+        "duration": "35.68444065853657",
+        "name": "rendering.mobile/zdnet_pathological"
+    },
+    {
+        "duration": "25.22776931818182",
+        "name": "rendering.mobile/zoom_in_animation"
+    },
+    {
+        "duration": "21.490966639175262",
+        "name": "scheduler.tough_scheduling_cases/raf"
+    },
+    {
+        "duration": "21.847204888888896",
+        "name": "scheduler.tough_scheduling_cases/raf.html"
+    },
+    {
+        "duration": "21.63251056701031",
+        "name": "scheduler.tough_scheduling_cases/raf_animation"
+    },
+    {
+        "duration": "21.895658606060607",
+        "name": "scheduler.tough_scheduling_cases/raf_animation.html"
+    },
+    {
+        "duration": "21.29303734020618",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas"
+    },
+    {
+        "duration": "21.731640696969702",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas.html"
+    },
+    {
+        "duration": "21.525493752577326",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation"
+    },
+    {
+        "duration": "21.802303606060608",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation.html"
+    },
+    {
+        "duration": "14.673217469696974",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?heavy"
+    },
+    {
+        "duration": "14.293892929292927",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?light"
+    },
+    {
+        "duration": "14.45484905555556",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?medium"
+    },
+    {
+        "duration": "14.71399013402062",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_heavy"
+    },
+    {
+        "duration": "14.339937350515468",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_light"
+    },
+    {
+        "duration": "14.300854005154632",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_medium"
+    },
+    {
+        "duration": "33.59947068041235",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page"
+    },
+    {
+        "duration": "33.83515983838383",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page.html"
+    },
+    {
+        "duration": "16.493138463917525",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag"
+    },
+    {
+        "duration": "16.663587828282818",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag.html"
+    },
+    {
+        "duration": "20.18208083505154",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset"
+    },
+    {
+        "duration": "20.069020292929295",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset.html"
+    },
+    {
+        "duration": "20.87027637113402",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling"
+    },
+    {
+        "duration": "21.117855242424245",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling.html"
+    },
+    {
+        "duration": "1.3279914907692307E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/amazon"
+    },
+    {
+        "duration": "26.850237878787883",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "19.27706828282828",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "2.413713030769231E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/cnn"
+    },
+    {
+        "duration": "17.1759671010101",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/ebay"
+    },
+    {
+        "duration": "28.097396090909093",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/espn"
+    },
+    {
+        "duration": "25.929386808080814",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/facebook"
+    },
+    {
+        "duration": "39.867259030303046",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/gmail"
+    },
+    {
+        "duration": "26.795324737373733",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "38.44303718181818",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "25.26302170707071",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "37.58214452525254",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "15.822386237373738",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "19.10097793939394",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "2.3311835076923079E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "32.832168777777774",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "23.520020292929292",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/twitter"
+    },
+    {
+        "duration": "22.63160122222222",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "31.018430060606057",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "28.95078277777777",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "17.4697383030303",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "28.8168207979798",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "22.50195722222223",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "22.10267037373738",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "5.226135284615384E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/youtube"
+    },
+    {
+        "duration": "27.291692424242434",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "27.361486050505036",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "30.105249676767674",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "37.34291770707071",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "26.854876424242427",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "27.188672848484856",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "29.710098616161627",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "37.6348191010101",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "38.401766424242446",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "39.531138606060594",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "24.156686131313123",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "24.021314535353536",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "39.81450436363637",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "41.0678992929293",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "27.617266040404044",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "33.177552969696954",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "22.999962898989903",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "25.30206821212122",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "21.183862828282823",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "19.73034786868687",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "22.779457272727278",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "25.475425838383845",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "19.22209535353535",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "22.73499693939393",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "22.264973494949494",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "23.681191626262624",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "22.783703646464655",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "24.98092917171717",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "20.882089747474744",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "26.557263666666664",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "22.047538191919195",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "20.912332898989895",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "33.85335407070708",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "21.127455262626267",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "25.95937427272727",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "23.54404792929293",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "26.88746008080809",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "19.547228030303025",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "25.419086212121215",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "23.226090444444445",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "23.03863327272728",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "26.669353222222227",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "33.881093777777764",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "22.26917757575757",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "21.154823838383845",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "19.47442573737374",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "22.504741464646465",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "25.043519575757575",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "25.63920252525253",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_games_pinch"
+    },
+    {
+        "duration": "23.642994929292936",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "27.28235235353536",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "22.82754783838384",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "22.013443191919187",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "23.6095907979798",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.743711151515164",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "21.816520969696963",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.83973503030304",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "20.496674484848484",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "19.078020363636366",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.01265233333333",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "18.86373302020202",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.37607201010101",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "33.871722040404045",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.25168053535354",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.300218686868686",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "21.193919505050495",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.29728919191919",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "19.88391947474748",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "18.399702646464643",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "17.6159104040404",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "16.66057331313131",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.0177991010101",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.74426449494949",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.74072601010101",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.09528826262626",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.781641434343427",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "24.182089141414142",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.250255292929292",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "20.898366585858593",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "19.456004979797974",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "18.821884333333337",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.041866333333335",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "19.77310060606061",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.996788181818175",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "20.111527727272726",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.007116303030305",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "20.059308515151514",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "18.748829747474744",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "17.44039124242424",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "16.895033717171714",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "15.932627277777781",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "15.47016016161616",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "42.025190670103086",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "40.60977333333332",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "40.343280011111126",
+        "name": "smoothness.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "40.397068929292914",
+        "name": "smoothness.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "2.2178429769230767E-4",
+        "name": "smoothness.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "18.604987535353533",
+        "name": "smoothness.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "18.91980019191919",
+        "name": "smoothness.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "14.201951333333332",
+        "name": "smoothness.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "16.39401808080808",
+        "name": "smoothness.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "27.267041424242432",
+        "name": "smoothness.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "20.004250262626265",
+        "name": "smoothness.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "33.577366888888896",
+        "name": "smoothness.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "17.442916959595955",
+        "name": "smoothness.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "31.73289268686868",
+        "name": "smoothness.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "26.310800090909098",
+        "name": "smoothness.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "23.301075828282837",
+        "name": "smoothness.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "2.2200437615384615E-4",
+        "name": "smoothness.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "18.10265918181818",
+        "name": "smoothness.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "2.2561733461538461E-4",
+        "name": "smoothness.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "18.233070787878788",
+        "name": "smoothness.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "1.2678366346153847E-4",
+        "name": "smoothness.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "23.183860101010094",
+        "name": "smoothness.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "19.720838565656564",
+        "name": "smoothness.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "15.722766217171717",
+        "name": "smoothness.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "16.78829693939393",
+        "name": "smoothness.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "18.982707686868686",
+        "name": "smoothness.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "14.72302885858586",
+        "name": "smoothness.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "19.196327545454547",
+        "name": "smoothness.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "23.562658555555572",
+        "name": "smoothness.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "23.04965662626262",
+        "name": "smoothness.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "19.910901414141414",
+        "name": "smoothness.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "21.869245454545446",
+        "name": "smoothness.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "16.395101207070706",
+        "name": "smoothness.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "18.162983434343438",
+        "name": "smoothness.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "25.87345320202019",
+        "name": "smoothness.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "2.246453223076923E-4",
+        "name": "smoothness.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "25.913846121212135",
+        "name": "smoothness.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "20.247331161616152",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "20.167345818181825",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "23.063108747474743",
+        "name": "smoothness.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "22.797995010101015",
+        "name": "smoothness.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "29.650447828282818",
+        "name": "smoothness.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "16.56166243434343",
+        "name": "smoothness.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "19.819892454545453",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "18.58605475757575",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "15.470679060606061",
+        "name": "smoothness.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "27.426124525252522",
+        "name": "smoothness.key_silk_cases/basic_stream"
+    },
+    {
+        "duration": "19.628670414141414",
+        "name": "smoothness.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "20.509594444444453",
+        "name": "smoothness.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "20.569410303030303",
+        "name": "smoothness.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "18.789209989898993",
+        "name": "smoothness.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "20.608113797979797",
+        "name": "smoothness.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "22.47572782828282",
+        "name": "smoothness.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "20.331084919191923",
+        "name": "smoothness.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "21.475357383838386",
+        "name": "smoothness.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "20.56130753535353",
+        "name": "smoothness.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "20.848779111111106",
+        "name": "smoothness.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "20.34676329292929",
+        "name": "smoothness.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "43.67565580808081",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "19.26472594949495",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "17.16541506060606",
+        "name": "smoothness.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "19.608712989898983",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "18.929861272727276",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "19.21050324242425",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "20.113104313131306",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "20.56653209090909",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "20.13786221212122",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "20.366016636363632",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "19.246482525252528",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "20.984112717171715",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "20.799118979797974",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "20.124533464646458",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "21.457854303030306",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "17.88332387878787",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "27.23611371717172",
+        "name": "smoothness.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "2.4780205285714285E-4",
+        "name": "smoothness.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "27.625533989899",
+        "name": "smoothness.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "20.759950090909086",
+        "name": "smoothness.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "2.4243763499999998E-4",
+        "name": "smoothness.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "20.5723263131313",
+        "name": "smoothness.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "2.330541614285714E-4",
+        "name": "smoothness.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "27.669862717171732",
+        "name": "smoothness.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "15.586184146464651",
+        "name": "smoothness.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "23.156343484848488",
+        "name": "smoothness.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "24.138500393939392",
+        "name": "smoothness.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "24.436156141414127",
+        "name": "smoothness.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "18.842897868686865",
+        "name": "smoothness.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "19.18169049494949",
+        "name": "smoothness.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "45.18244441414142",
+        "name": "smoothness.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "20.18570339393939",
+        "name": "smoothness.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "19.802546919191915",
+        "name": "smoothness.key_silk_cases/masonry"
+    },
+    {
+        "duration": "19.569178828282826",
+        "name": "smoothness.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "17.9495822020202",
+        "name": "smoothness.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "20.891922595959596",
+        "name": "smoothness.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "17.1966815050505",
+        "name": "smoothness.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "21.04767387878787",
+        "name": "smoothness.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "27.06262469696971",
+        "name": "smoothness.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "27.154798787878793",
+        "name": "smoothness.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "19.032716494949497",
+        "name": "smoothness.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "27.85561467676768",
+        "name": "smoothness.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "27.588612353535357",
+        "name": "smoothness.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "17.502309818181814",
+        "name": "smoothness.key_silk_cases/swipe_action"
+    },
+    {
+        "duration": "19.07861861616162",
+        "name": "smoothness.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "22.831874404040395",
+        "name": "smoothness.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "20.9695580909091",
+        "name": "smoothness.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "20.175507616161614",
+        "name": "smoothness.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "19.1733694949495",
+        "name": "smoothness.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "40.243010969696954",
+        "name": "smoothness.maps/maps_perf_test"
+    },
+    {
+        "duration": "39.00564305050503",
+        "name": "smoothness.pathological_mobile_sites/cnn_pathological"
+    },
+    {
+        "duration": "22.94026492929293",
+        "name": "smoothness.pathological_mobile_sites/espn_pathological"
+    },
+    {
+        "duration": "19.51880818181818",
+        "name": "smoothness.pathological_mobile_sites/guardian_pathological"
+    },
+    {
+        "duration": "39.70995107070706",
+        "name": "smoothness.pathological_mobile_sites/http://edition.cnn.com"
+    },
+    {
+        "duration": "23.41612134343436",
+        "name": "smoothness.pathological_mobile_sites/http://m.espn.go.com/nhl/rankings"
+    },
+    {
+        "duration": "25.733424767676773",
+        "name": "smoothness.pathological_mobile_sites/http://recode.net"
+    },
+    {
+        "duration": "25.574356191919193",
+        "name": "smoothness.pathological_mobile_sites/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "25.12696165656565",
+        "name": "smoothness.pathological_mobile_sites/http://www.latimes.com"
+    },
+    {
+        "duration": "25.430436353535352",
+        "name": "smoothness.pathological_mobile_sites/http://www.pbs.org/newshour/bb/much-really-cost-live-city-like-seattle/#the-rundown"
+    },
+    {
+        "duration": "20.07700203030303",
+        "name": "smoothness.pathological_mobile_sites/http://www.theguardian.com/politics/2015/mar/09/ed-balls-tory-spending-plans-nhs-charging"
+    },
+    {
+        "duration": "27.315231919191927",
+        "name": "smoothness.pathological_mobile_sites/http://www.wowwiki.com/World_of_Warcraft:_Mists_of_Pandaria"
+    },
+    {
+        "duration": "23.811605454545457",
+        "name": "smoothness.pathological_mobile_sites/http://www.zdnet.com"
+    },
+    {
+        "duration": "23.560293878787885",
+        "name": "smoothness.pathological_mobile_sites/https://www.linkedin.com/in/linustorvalds"
+    },
+    {
+        "duration": "25.033546797979792",
+        "name": "smoothness.pathological_mobile_sites/latimes_pathological"
+    },
+    {
+        "duration": "23.011119797979802",
+        "name": "smoothness.pathological_mobile_sites/linkedin_pathological"
+    },
+    {
+        "duration": "25.176261424242433",
+        "name": "smoothness.pathological_mobile_sites/pbs_pathological"
+    },
+    {
+        "duration": "25.937177525252533",
+        "name": "smoothness.pathological_mobile_sites/recode_pathological"
+    },
+    {
+        "duration": "27.202516797979804",
+        "name": "smoothness.pathological_mobile_sites/wow_wiki_pathological"
+    },
+    {
+        "duration": "27.230990616161606",
+        "name": "smoothness.pathological_mobile_sites/yahoo_sports_pathological"
+    },
+    {
+        "duration": "23.713016181818197",
+        "name": "smoothness.pathological_mobile_sites/zdnet_pathological"
+    },
+    {
+        "duration": "42.2076777070707",
+        "name": "smoothness.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "28.22507685858585",
+        "name": "smoothness.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "27.507296272727274",
+        "name": "smoothness.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "42.76484347474745",
+        "name": "smoothness.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "28.041684242424243",
+        "name": "smoothness.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "28.68273447474747",
+        "name": "smoothness.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "27.76992471717173",
+        "name": "smoothness.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "27.289438020202017",
+        "name": "smoothness.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "15.958784545454542",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "19.778424666666652",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "17.56710941919191",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "16.39241814646465",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "17.08042846464646",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "29.336639595959607",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "22.233696858585862",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "38.12525640404041",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "18.07551485858586",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "36.19117175757576",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "28.257404939393957",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "25.52280532323233",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "2.252872176923077E-4",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "18.802485909090908",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "30.136039959595955",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "18.815639505050502",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "22.25638103030302",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "23.121560616161613",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "24.228166545454545",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "21.980059020202024",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "30.110686121212122",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "19.923266595959593",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "17.18761284848485",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "21.619897626262627",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "28.692293191919177",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "25.332862999999996",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "20.403691666666663",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "26.863158000000002",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "18.91653067676767",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "24.41265617171718",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "26.787646858585862",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "23.002472989898994",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "28.33179567676769",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "22.632212353535362",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "24.452742030303025",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "23.94425632323232",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "25.863401878787876",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "30.26650112121212",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "26.850325111111115",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "22.312224161616165",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "21.01352085858586",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "16.176430994949488",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "1.3316594653846152E-4",
+        "name": "smoothness.top_25_smooth/amazon"
+    },
+    {
+        "duration": "27.005453232323223",
+        "name": "smoothness.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "18.940247434343437",
+        "name": "smoothness.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "2.358509930769231E-4",
+        "name": "smoothness.top_25_smooth/cnn"
+    },
+    {
+        "duration": "15.163704454545442",
+        "name": "smoothness.top_25_smooth/ebay"
+    },
+    {
+        "duration": "18.868002303030305",
+        "name": "smoothness.top_25_smooth/espn"
+    },
+    {
+        "duration": "23.67255534343434",
+        "name": "smoothness.top_25_smooth/facebook"
+    },
+    {
+        "duration": "38.770522757575755",
+        "name": "smoothness.top_25_smooth/gmail"
+    },
+    {
+        "duration": "22.44608498989898",
+        "name": "smoothness.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "31.794421454545443",
+        "name": "smoothness.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "24.873699545454546",
+        "name": "smoothness.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "29.053719414141412",
+        "name": "smoothness.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "15.628291090909089",
+        "name": "smoothness.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "18.813202848484845",
+        "name": "smoothness.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "22.722452171717165",
+        "name": "smoothness.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "27.336189787878787",
+        "name": "smoothness.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "20.706545353535347",
+        "name": "smoothness.top_25_smooth/twitter"
+    },
+    {
+        "duration": "18.764635797979793",
+        "name": "smoothness.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "26.992985828282833",
+        "name": "smoothness.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "24.02222209090909",
+        "name": "smoothness.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "17.08716663636364",
+        "name": "smoothness.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "26.227396737373734",
+        "name": "smoothness.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "20.06782680808081",
+        "name": "smoothness.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "20.488964363636363",
+        "name": "smoothness.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "4.401390353846154E-4",
+        "name": "smoothness.top_25_smooth/youtube"
+    },
+    {
+        "duration": "37.14849374747477",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swiffy72.html"
+    },
+    {
+        "duration": "24.637825171717164",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swiffy72.html"
+    },
+    {
+        "duration": "24.60085959595959",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swiffy72.html"
+    },
+    {
+        "duration": "24.54984478787879",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swiffy72.html"
+    },
+    {
+        "duration": "24.595242373737367",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swiffy72.html"
+    },
+    {
+        "duration": "24.630610414141408",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swiffy72.html"
+    },
+    {
+        "duration": "24.755530828282833",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swiffy72.html"
+    },
+    {
+        "duration": "24.60605352525253",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swiffy72.html"
+    },
+    {
+        "duration": "24.564995616161607",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swiffy72.html"
+    },
+    {
+        "duration": "24.62555248484848",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swiffy72.html"
+    },
+    {
+        "duration": "24.66270606060606",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swiffy72.html"
+    },
+    {
+        "duration": "25.78919885858587",
+        "name": "smoothness.tough_animation_cases/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "28.31711131313132",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations.html"
+    },
+    {
+        "duration": "2.584060058333333E-4",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations_composited_transform.html"
+    },
+    {
+        "duration": "25.43075509090909",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "25.54730576767677",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties.html"
+    },
+    {
+        "duration": "25.790627272727257",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "25.858155878787898",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties.html"
+    },
+    {
+        "duration": "25.86996494949494",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "25.943480444444443",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties.html"
+    },
+    {
+        "duration": "23.788194656565647",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas"
+    },
+    {
+        "duration": "24.10662612121212",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas.html"
+    },
+    {
+        "duration": "24.385766060606063",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css"
+    },
+    {
+        "duration": "25.894344434343427",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css.html"
+    },
+    {
+        "duration": "39.568486525252524",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations"
+    },
+    {
+        "duration": "39.20761579797982",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations.html"
+    },
+    {
+        "duration": "24.040225999999997",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation"
+    },
+    {
+        "duration": "24.446977939393943",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation.html?N=0200"
+    },
+    {
+        "duration": "30.081578252525244",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes"
+    },
+    {
+        "duration": "29.78454718181817",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "26.245341787878782",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.58303642424244",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "25.62408450505051",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "25.61457358585859",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.211494666666663",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "26.15249131313131",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "25.318001030303034",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "25.25323729292929",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "28.613326848484853",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "27.389193141414136",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.71535384848485",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.511288858585853",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "24.597774838383828",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "28.597343585858578",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "27.373520949494957",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "27.894493797979802",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "26.88560402020203",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "28.480930090909105",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.864955494949506",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.41717828282829",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.72507672727272",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "27.31304624242425",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "27.389995191919187",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "28.019472636363634",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "25.38243744444443",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "26.977930040404047",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "25.681109292929285",
+        "name": "smoothness.tough_animation_cases/css_transitions_inline_style"
+    },
+    {
+        "duration": "27.040663797979814",
+        "name": "smoothness.tough_animation_cases/css_transitions_new_element"
+    },
+    {
+        "duration": "30.979115949494947",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.875259878787876",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.04659589898991",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "25.874996282828274",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.21327364646465",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.348534727272728",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.322247515151517",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.188701555555557",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.990787525252532",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "25.896482454545442",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "26.02025888888889",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "26.557164272727263",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.7928842929293",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.177884424242432",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.09713178787878",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.066217171717167",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "25.744881868686868",
+        "name": "smoothness.tough_animation_cases/css_transitions_style_element"
+    },
+    {
+        "duration": "26.670371010101007",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "26.181489262626265",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "26.36766911111112",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "27.04869974747475",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "25.807046898989903",
+        "name": "smoothness.tough_animation_cases/css_transitions_updating_class"
+    },
+    {
+        "duration": "24.29484651515152",
+        "name": "smoothness.tough_animation_cases/css_value_type_color"
+    },
+    {
+        "duration": "24.658742363636367",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.518092090909093",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "26.129311222222235",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter"
+    },
+    {
+        "duration": "26.488301787878797",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.808418666666665",
+        "name": "smoothness.tough_animation_cases/css_value_type_length"
+    },
+    {
+        "duration": "24.863716636363637",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.311517737373737",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.545209979797967",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex"
+    },
+    {
+        "duration": "24.74504351515151",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.90361932323231",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.724256595959588",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple"
+    },
+    {
+        "duration": "25.10693824242426",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "25.114615010101012",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "25.372114151515152",
+        "name": "smoothness.tough_animation_cases/css_value_type_path"
+    },
+    {
+        "duration": "25.69483924242425",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "25.649966787878782",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "26.799112222222227",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow"
+    },
+    {
+        "duration": "26.766490737373736",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "26.83204510101011",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.168985717171722",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex"
+    },
+    {
+        "duration": "28.435689626262626",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.283555626262615",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.077489979797985",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple"
+    },
+    {
+        "duration": "24.284758",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.40213256565658",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.653906606060605",
+        "name": "smoothness.tough_animation_cases/keyframed_animations"
+    },
+    {
+        "duration": "25.03974014141413",
+        "name": "smoothness.tough_animation_cases/keyframed_animations.html"
+    },
+    {
+        "duration": "23.742388606060604",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "23.936866949494952",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference.html"
+    },
+    {
+        "duration": "23.735870444444444",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "23.844375545454547",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue.html"
+    },
+    {
+        "duration": "24.838084525252516",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "23.565263",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "24.49350006060606",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen.html"
+    },
+    {
+        "duration": "25.314631111111094",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_propagating_isolation.html"
+    },
+    {
+        "duration": "29.476864787878785",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions.html"
+    },
+    {
+        "duration": "30.04562744444445",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "2.232392625E-4",
+        "name": "smoothness.tough_animation_cases/robohornetpro"
+    },
+    {
+        "duration": "24.321442181818167",
+        "name": "smoothness.tough_animation_cases/transform_transition_js_block.html"
+    },
+    {
+        "duration": "23.800969484848483",
+        "name": "smoothness.tough_animation_cases/transform_transitions"
+    },
+    {
+        "duration": "24.25780610101009",
+        "name": "smoothness.tough_animation_cases/transform_transitions.html"
+    },
+    {
+        "duration": "24.0664658080808",
+        "name": "smoothness.tough_animation_cases/transform_transitions_js_block"
+    },
+    {
+        "duration": "24.43705991919192",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_color"
+    },
+    {
+        "duration": "24.05645947474747",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "24.612341080808083",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "24.89232032323232",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "25.32853304040404",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_path"
+    },
+    {
+        "duration": "25.09529867676767",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "24.04477328282828",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "24.09511334343434",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "30.070736979797985",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes"
+    },
+    {
+        "duration": "29.607001969696974",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "24.253410464646475",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time"
+    },
+    {
+        "duration": "24.736196252525247",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time_in_raf.html?N=0316"
+    },
+    {
+        "duration": "25.58681084848485",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous"
+    },
+    {
+        "duration": "25.77866934343435",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous.html?N=0316"
+    },
+    {
+        "duration": "26.552586595959585",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "26.96448580808083",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining.html?N=0316"
+    },
+    {
+        "duration": "24.19049432323231",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "24.599922343434347",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "27.019954696969688",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering.html?N=0316"
+    },
+    {
+        "duration": "26.59359842424243",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "25.255398828282825",
+        "name": "smoothness.tough_canvas_cases/../../../chrome/test/data/perf/canvas_bench/many_images.html"
+    },
+    {
+        "duration": "19.971185181818182",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_15"
+    },
+    {
+        "duration": "33.66355128282829",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_shadow"
+    },
+    {
+        "duration": "21.83038763636363",
+        "name": "smoothness.tough_canvas_cases/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "21.80180527272727",
+        "name": "smoothness.tough_canvas_cases/bouncing_gradient_circles"
+    },
+    {
+        "duration": "18.544345393939384",
+        "name": "smoothness.tough_canvas_cases/bouncing_png_images"
+    },
+    {
+        "duration": "31.46214034343435",
+        "name": "smoothness.tough_canvas_cases/bouncing_svg_images"
+    },
+    {
+        "duration": "18.712939626262628",
+        "name": "smoothness.tough_canvas_cases/canvas_animation_no_clear"
+    },
+    {
+        "duration": "19.95494857575758",
+        "name": "smoothness.tough_canvas_cases/canvas_arcs"
+    },
+    {
+        "duration": "20.005365333333334",
+        "name": "smoothness.tough_canvas_cases/canvas_font_cycler"
+    },
+    {
+        "duration": "20.494404565656566",
+        "name": "smoothness.tough_canvas_cases/canvas_lines"
+    },
+    {
+        "duration": "19.51440958585858",
+        "name": "smoothness.tough_canvas_cases/canvas_to_blob"
+    },
+    {
+        "duration": "19.281915343434346",
+        "name": "smoothness.tough_canvas_cases/chip_tune"
+    },
+    {
+        "duration": "19.748240939393938",
+        "name": "smoothness.tough_canvas_cases/crafty_mind"
+    },
+    {
+        "duration": "20.443949414141414",
+        "name": "smoothness.tough_canvas_cases/effect_games"
+    },
+    {
+        "duration": "19.887656212121215",
+        "name": "smoothness.tough_canvas_cases/fill_shapes"
+    },
+    {
+        "duration": "19.431398090909088",
+        "name": "smoothness.tough_canvas_cases/hakim"
+    },
+    {
+        "duration": "7.345577104166667E-4",
+        "name": "smoothness.tough_canvas_cases/http://geoapis.appspot.com/agdnZW9hcGlzchMLEgtFeGFtcGxlQ29kZRjh1wIM"
+    },
+    {
+        "duration": "21.442686141414146",
+        "name": "smoothness.tough_canvas_cases/http://hakim.se/experiments/html5/magnetic/02/"
+    },
+    {
+        "duration": "20.805255808080798",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/TweetMap/Default.html"
+    },
+    {
+        "duration": "24.599176909090914",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/VideoCity/Default.html"
+    },
+    {
+        "duration": "21.37014576767676",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html"
+    },
+    {
+        "duration": "29.315131929292924",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/Default.html"
+    },
+    {
+        "duration": "19.50025338383838",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/FishIETank/Default.html"
+    },
+    {
+        "duration": "19.505284222222222",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/LetItSnow/"
+    },
+    {
+        "duration": "18.693528525252514",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html"
+    },
+    {
+        "duration": "21.47551744444445",
+        "name": "smoothness.tough_canvas_cases/http://jarrodoverson.com/static/demos/particleSystem/"
+    },
+    {
+        "duration": "23.53506487878789",
+        "name": "smoothness.tough_canvas_cases/http://mix10k.visitmix.com/Entry/Details/169"
+    },
+    {
+        "duration": "21.01455463636363",
+        "name": "smoothness.tough_canvas_cases/http://runway.countlessprojects.com/prototype/performance_test.html"
+    },
+    {
+        "duration": "21.381269575757585",
+        "name": "smoothness.tough_canvas_cases/http://spielzeugz.de/html5/liquid-particles.html"
+    },
+    {
+        "duration": "19.174109717171714",
+        "name": "smoothness.tough_canvas_cases/http://themaninblue.com/experiment/AnimationBenchmark/canvas/"
+    },
+    {
+        "duration": "19.421523252525255",
+        "name": "smoothness.tough_canvas_cases/http://www.chiptune.com/starfield/starfield.html"
+    },
+    {
+        "duration": "19.768448282828288",
+        "name": "smoothness.tough_canvas_cases/http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html"
+    },
+    {
+        "duration": "22.370380373737383",
+        "name": "smoothness.tough_canvas_cases/http://www.effectgames.com/demos/canvascycle/"
+    },
+    {
+        "duration": "20.964996444444438",
+        "name": "smoothness.tough_canvas_cases/http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html"
+    },
+    {
+        "duration": "22.70535315151515",
+        "name": "smoothness.tough_canvas_cases/http://www.megidish.net/awjs/"
+    },
+    {
+        "duration": "22.810423373737386",
+        "name": "smoothness.tough_canvas_cases/http://www.smashcat.org/av/canvas_test/"
+    },
+    {
+        "duration": "21.35830428282829",
+        "name": "smoothness.tough_canvas_cases/jarro_doverson"
+    },
+    {
+        "duration": "20.898731575757576",
+        "name": "smoothness.tough_canvas_cases/kevs_3d"
+    },
+    {
+        "duration": "19.113300111111112",
+        "name": "smoothness.tough_canvas_cases/man_in_blue"
+    },
+    {
+        "duration": "29.28790476767679",
+        "name": "smoothness.tough_canvas_cases/many_images"
+    },
+    {
+        "duration": "18.9298019090909",
+        "name": "smoothness.tough_canvas_cases/megi_dish"
+    },
+    {
+        "duration": "22.074592474747472",
+        "name": "smoothness.tough_canvas_cases/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "19.319101676767676",
+        "name": "smoothness.tough_canvas_cases/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "19.333438757575756",
+        "name": "smoothness.tough_canvas_cases/microsoft_snow"
+    },
+    {
+        "duration": "18.58760762626263",
+        "name": "smoothness.tough_canvas_cases/microsoft_speed_reading"
+    },
+    {
+        "duration": "20.849993757575753",
+        "name": "smoothness.tough_canvas_cases/microsoft_tweet_map"
+    },
+    {
+        "duration": "20.849601464646465",
+        "name": "smoothness.tough_canvas_cases/microsoft_video_city"
+    },
+    {
+        "duration": "23.18819948484847",
+        "name": "smoothness.tough_canvas_cases/microsoft_worker_fountains"
+    },
+    {
+        "duration": "21.75680510101011",
+        "name": "smoothness.tough_canvas_cases/mix_10k"
+    },
+    {
+        "duration": "19.431194515151514",
+        "name": "smoothness.tough_canvas_cases/put_get_image_data"
+    },
+    {
+        "duration": "21.09896953535353",
+        "name": "smoothness.tough_canvas_cases/runway"
+    },
+    {
+        "duration": "21.05300057575758",
+        "name": "smoothness.tough_canvas_cases/smash_cat"
+    },
+    {
+        "duration": "19.597376373737372",
+        "name": "smoothness.tough_canvas_cases/spielzeugz"
+    },
+    {
+        "duration": "20.65733364646465",
+        "name": "smoothness.tough_canvas_cases/stroke_shapes"
+    },
+    {
+        "duration": "18.761490636363632",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-animation-no-clear.html"
+    },
+    {
+        "duration": "23.453206383838392",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-font-cycler.html"
+    },
+    {
+        "duration": "33.05292858585855",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=image_with_shadow&back=image"
+    },
+    {
+        "duration": "23.67952747474747",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=text&back=white&ball_count=15"
+    },
+    {
+        "duration": "23.226335222222225",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas_toBlob.html"
+    },
+    {
+        "duration": "26.630889282828278",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_clipped_rectangles.html"
+    },
+    {
+        "duration": "25.01505743434344",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_gradient_circles.html"
+    },
+    {
+        "duration": "24.176795161616152",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_png_images.html"
+    },
+    {
+        "duration": "26.80834757575758",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_svg_images.html"
+    },
+    {
+        "duration": "23.471573343434347",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_arcs.html"
+    },
+    {
+        "duration": "22.5706142929293",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_lines.html"
+    },
+    {
+        "duration": "19.586385111111113",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/fill_shapes.html"
+    },
+    {
+        "duration": "19.60166544444445",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/put_get_image_data.html"
+    },
+    {
+        "duration": "20.810538606060604",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/stroke_shapes.html"
+    },
+    {
+        "duration": "25.169597323232324",
+        "name": "smoothness.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "25.381739707070707",
+        "name": "smoothness.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "29.330076141414136",
+        "name": "smoothness.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "37.81309073737374",
+        "name": "smoothness.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "24.94144718181819",
+        "name": "smoothness.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "24.610528585858592",
+        "name": "smoothness.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "28.743765171717172",
+        "name": "smoothness.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "37.490173131313135",
+        "name": "smoothness.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "25.873735782608694",
+        "name": "smoothness.tough_image_decode_cases/cats_unscaled"
+    },
+    {
+        "duration": "13.50246834782609",
+        "name": "smoothness.tough_image_decode_cases/cats_viewport_width"
+    },
+    {
+        "duration": "26.19544431313131",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-unscaled.html"
+    },
+    {
+        "duration": "13.532938005050504",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-viewport-width.html"
+    },
+    {
+        "duration": "38.7244675050505",
+        "name": "smoothness.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "51.58537774747472",
+        "name": "smoothness.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "24.434328838383827",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "24.684594909090897",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "38.80963570707071",
+        "name": "smoothness.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "38.719522525252515",
+        "name": "smoothness.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "24.070566050505033",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "24.281699646464652",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "23.126303989898982",
+        "name": "smoothness.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "25.28221236363636",
+        "name": "smoothness.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "20.89266278787879",
+        "name": "smoothness.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "19.454223262626265",
+        "name": "smoothness.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "21.99103537373738",
+        "name": "smoothness.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "25.165071595959596",
+        "name": "smoothness.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "19.198593202020202",
+        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "22.515052313131314",
+        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "22.721394979797978",
+        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "24.341201888888886",
+        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "22.800996292929277",
+        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "25.265146393939407",
+        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "20.70668387878787",
+        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "25.67215862626263",
+        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "21.702553969696964",
+        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "20.333491626262624",
+        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "33.32176710101009",
+        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "20.977758484848483",
+        "name": "smoothness.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "26.314184313131314",
+        "name": "smoothness.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "23.747285717171717",
+        "name": "smoothness.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "26.98203255555556",
+        "name": "smoothness.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "19.48576053535354",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "24.00137118181819",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "23.124812232323233",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "22.789039404040402",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "26.25103701010101",
+        "name": "smoothness.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "33.66489163636363",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "22.26571897979798",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "20.935532373737374",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "19.082395131313124",
+        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "21.5836667979798",
+        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "25.48769481818181",
+        "name": "smoothness.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "25.782229858585854",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_games_pinch"
+    },
+    {
+        "duration": "23.67518114141415",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "27.287173656565646",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "22.21412783838385",
+        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "24.413378747474752",
+        "name": "smoothness.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.24244461616161",
+        "name": "smoothness.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.22432738383838",
+        "name": "smoothness.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.20755577777778",
+        "name": "smoothness.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.48260221212121",
+        "name": "smoothness.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.007827313131312",
+        "name": "smoothness.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.411050222222233",
+        "name": "smoothness.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.59410838383838",
+        "name": "smoothness.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "17.351427222222224",
+        "name": "smoothness.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.884018969696967",
+        "name": "smoothness.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "33.726012808080796",
+        "name": "smoothness.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.629115545454546",
+        "name": "smoothness.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.498684494949497",
+        "name": "smoothness.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "21.38540234343434",
+        "name": "smoothness.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.420193737373747",
+        "name": "smoothness.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "19.925249858585854",
+        "name": "smoothness.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "18.60195714141414",
+        "name": "smoothness.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "17.79187718181818",
+        "name": "smoothness.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "16.777813727272726",
+        "name": "smoothness.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.1495834949495",
+        "name": "smoothness.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.691119191919192",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.447733535353535",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "24.995420232323244",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "23.656953646464643",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "23.422666828282843",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "26.319520808080814",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.46018351515151",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.25429134343434",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.041293393939394",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.891607707070705",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.01928413131313",
+        "name": "smoothness.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.01567125252525",
+        "name": "smoothness.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "20.013233121212117",
+        "name": "smoothness.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.01108601010101",
+        "name": "smoothness.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "20.049299131313138",
+        "name": "smoothness.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "18.747599272727275",
+        "name": "smoothness.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "17.51398454545454",
+        "name": "smoothness.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "16.932444050505055",
+        "name": "smoothness.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "15.860956626262622",
+        "name": "smoothness.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "15.403047944444436",
+        "name": "smoothness.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "38.862005449438215",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation"
+    },
+    {
+        "duration": "39.04917852525253",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation.html"
+    },
+    {
+        "duration": "25.78045324719101",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "25.584928737373748",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient.html"
+    },
+    {
+        "duration": "28.353951853932582",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads"
+    },
+    {
+        "duration": "26.291162060606062",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads.html"
+    },
+    {
+        "duration": "29.37280765168539",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads"
+    },
+    {
+        "duration": "25.53115699999999",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads.html"
+    },
+    {
+        "duration": "24.82582573033708",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads"
+    },
+    {
+        "duration": "25.307486535353526",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads.html"
+    },
+    {
+        "duration": "24.48449125842696",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads"
+    },
+    {
+        "duration": "26.924393959595964",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads.html"
+    },
+    {
+        "duration": "36.783078040404035",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.37525039393939",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.273964767676762",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.31056044444444",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.30891178787879",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.369430949494948",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.308011848484842",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.32808666666666",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.343971949494943",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.36010675757576",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "24.334736434343448",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swf.webglbeta.html"
+    },
+    {
+        "duration": "5.414966034343433",
+        "name": "smoothness.tough_webgl_cases/animometer_webgl"
+    },
+    {
+        "duration": "5.4525154040404065",
+        "name": "smoothness.tough_webgl_cases/aquarium"
+    },
+    {
+        "duration": "5.4319443494949455",
+        "name": "smoothness.tough_webgl_cases/aquarium_20k"
+    },
+    {
+        "duration": "5.430176476767676",
+        "name": "smoothness.tough_webgl_cases/blob"
+    },
+    {
+        "duration": "5.441129840404039",
+        "name": "smoothness.tough_webgl_cases/dynamic_cube_map"
+    },
+    {
+        "duration": "5.439967966666667",
+        "name": "smoothness.tough_webgl_cases/earth"
+    },
+    {
+        "duration": "5.581153541414141",
+        "name": "smoothness.tough_webgl_cases/http://kenrussell.github.io/webgl-animometer/Animometer/tests/3d/webgl.html"
+    },
+    {
+        "duration": "5.574711976767675",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/aquarium/aquarium.html"
+    },
+    {
+        "duration": "5.607788358585856",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/blob/blob.html"
+    },
+    {
+        "duration": "5.595069113131311",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/dynamic-cubemap/dynamic-cubemap.html"
+    },
+    {
+        "duration": "18.706826181818176",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html"
+    },
+    {
+        "duration": "5.562101015151515",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/particles/index.html"
+    },
+    {
+        "duration": "5.664583001010098",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/san-angeles/index.html"
+    },
+    {
+        "duration": "5.5782106383838395",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/Earth.html"
+    },
+    {
+        "duration": "5.611566085858584",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/ManyPlanetsDeep.html"
+    },
+    {
+        "duration": "5.480892266666667",
+        "name": "smoothness.tough_webgl_cases/ken_russell"
+    },
+    {
+        "duration": "5.487229996969697",
+        "name": "smoothness.tough_webgl_cases/many_planets_deep"
+    },
+    {
+        "duration": "19.02529326262626",
+        "name": "smoothness.tough_webgl_cases/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "5.481930909090909",
+        "name": "smoothness.tough_webgl_cases/particles"
+    },
+    {
+        "duration": "5.515564422222221",
+        "name": "smoothness.tough_webgl_cases/san_angeles"
+    },
+    {
+        "duration": "6.526418",
+        "name": "smoothness.tough_webgl_cases/sans_angeles"
+    },
+    {
+        "duration": "67.96083287878791",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "68.55445405050507",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "111.43188380808087",
+        "name": "speedometer2-future/Speedometer2"
+    },
+    {
+        "duration": "120.8032222929293",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "34.15807883434343",
+        "name": "start_with_url.cold.startup_pages/about:blank"
+    },
+    {
+        "duration": "32.73097943030302",
+        "name": "start_with_url.cold.startup_pages/http://bbc.co.uk"
+    },
+    {
+        "duration": "31.748909785123985",
+        "name": "start_with_url.warm.startup_pages/about:blank"
+    },
+    {
+        "duration": "31.91024912672175",
+        "name": "start_with_url.warm.startup_pages/http://bbc.co.uk"
+    },
+    {
+        "duration": "36.261516606060624",
+        "name": "system_health.common_mobile/background:media:imgur"
+    },
+    {
+        "duration": "2.4689734E-4",
+        "name": "system_health.common_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "36.89386949494949",
+        "name": "system_health.common_mobile/background:search:google"
+    },
+    {
+        "duration": "47.82118717171717",
+        "name": "system_health.common_mobile/background:social:facebook"
+    },
+    {
+        "duration": "52.025090656565695",
+        "name": "system_health.common_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "4.4642388625000003E-4",
+        "name": "system_health.common_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "49.26819664646466",
+        "name": "system_health.common_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "124.41443220202024",
+        "name": "system_health.common_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "74.40458007070708",
+        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "118.48572913131315",
+        "name": "system_health.common_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "157.01065757575756",
+        "name": "system_health.common_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "151.74876696969696",
+        "name": "system_health.common_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "88.71294002020205",
+        "name": "system_health.common_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.5227496562500003E-4",
+        "name": "system_health.common_mobile/browse:news:globo"
+    },
+    {
+        "duration": "83.0613392020202",
+        "name": "system_health.common_mobile/browse:news:qq"
+    },
+    {
+        "duration": "81.13714666666667",
+        "name": "system_health.common_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.54184004375E-4",
+        "name": "system_health.common_mobile/browse:news:toi"
+    },
+    {
+        "duration": "81.04699354545451",
+        "name": "system_health.common_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "107.28906272727276",
+        "name": "system_health.common_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "101.67621427272726",
+        "name": "system_health.common_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.53573058125E-4",
+        "name": "system_health.common_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "57.42867261616162",
+        "name": "system_health.common_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "117.15273407070707",
+        "name": "system_health.common_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "193.1698366666667",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "139.24704271717172",
+        "name": "system_health.common_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "119.89549270707067",
+        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "136.58377510101016",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "80.82629978787882",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "100.46189991919196",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "95.64239314141416",
+        "name": "system_health.common_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "31.830652686868703",
+        "name": "system_health.common_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "39.68562940404041",
+        "name": "system_health.common_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "36.3325576868687",
+        "name": "system_health.common_mobile/load:games:lazors"
+    },
+    {
+        "duration": "2.6825070312499994E-4",
+        "name": "system_health.common_mobile/load:games:spychase"
+    },
+    {
+        "duration": "43.5127831919192",
+        "name": "system_health.common_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "37.88244922222222",
+        "name": "system_health.common_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "34.96758784848485",
+        "name": "system_health.common_mobile/load:media:google_images"
+    },
+    {
+        "duration": "35.67182216161616",
+        "name": "system_health.common_mobile/load:media:imgur"
+    },
+    {
+        "duration": "35.108892656565665",
+        "name": "system_health.common_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "34.77284725252527",
+        "name": "system_health.common_mobile/load:media:youtube"
+    },
+    {
+        "duration": "74.39654910101011",
+        "name": "system_health.common_mobile/load:news:cnn"
+    },
+    {
+        "duration": "43.31415543434343",
+        "name": "system_health.common_mobile/load:news:irctc"
+    },
+    {
+        "duration": "40.410555959595975",
+        "name": "system_health.common_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "37.598885535353546",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "35.88079223232324",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "38.03732852525254",
+        "name": "system_health.common_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "40.89806112121212",
+        "name": "system_health.common_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "34.68322039393941",
+        "name": "system_health.common_mobile/load:search:baidu"
+    },
+    {
+        "duration": "38.061056656565654",
+        "name": "system_health.common_mobile/load:search:ebay"
+    },
+    {
+        "duration": "34.14358464646465",
+        "name": "system_health.common_mobile/load:search:google"
+    },
+    {
+        "duration": "35.10767711111111",
+        "name": "system_health.common_mobile/load:search:taobao"
+    },
+    {
+        "duration": "34.141280989898995",
+        "name": "system_health.common_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "34.102491141414134",
+        "name": "system_health.common_mobile/load:search:yandex"
+    },
+    {
+        "duration": "34.37854747474749",
+        "name": "system_health.common_mobile/load:social:twitter"
+    },
+    {
+        "duration": "37.71296391919192",
+        "name": "system_health.common_mobile/load:tools:docs"
+    },
+    {
+        "duration": "5.08636236875E-4",
+        "name": "system_health.common_mobile/load:tools:drive"
+    },
+    {
+        "duration": "38.519056717171715",
+        "name": "system_health.common_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.6316940624999995E-4",
+        "name": "system_health.common_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "34.989560343434334",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "42.5678264141414",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "175.51554949494948",
+        "name": "system_health.common_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "173.8368234343434",
+        "name": "system_health.common_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "27.888947228956226",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "43.14959032996631",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "28.746106356902363",
+        "name": "system_health.memory_mobile/background:search:google"
+    },
+    {
+        "duration": "37.43098111111111",
+        "name": "system_health.memory_mobile/background:social:facebook"
+    },
+    {
+        "duration": "5.120535695833334E-4",
+        "name": "system_health.memory_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "5.433506435555555E-4",
+        "name": "system_health.memory_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "4.8694080911111117E-4",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "79.79813474074074",
+        "name": "system_health.memory_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "48.5361335117845",
+        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "72.84977619865319",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "86.06708567171711",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "76.45840349831647",
+        "name": "system_health.memory_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "53.380262333333334",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.5849537244444446E-4",
+        "name": "system_health.memory_mobile/browse:news:globo"
+    },
+    {
+        "duration": "52.341334161616146",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "53.905069895622894",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.648300586666667E-4",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "51.03379835690236",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "58.488442872053874",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "61.070727265993256",
+        "name": "system_health.memory_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.7124087022222226E-4",
+        "name": "system_health.memory_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "35.58436165993266",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "5.444208773333333E-4",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "80.99487841750839",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "83.93063429629629",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "73.88573472053872",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "71.15714953198652",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "52.81683382491582",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "59.40819486531985",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "47.76425437373737",
+        "name": "system_health.memory_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "24.499572892255884",
+        "name": "system_health.memory_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "24.856170313131305",
+        "name": "system_health.memory_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "24.61892558249159",
+        "name": "system_health.memory_mobile/load:games:lazors"
+    },
+    {
+        "duration": "30.35878747474747",
+        "name": "system_health.memory_mobile/load:games:spychase"
+    },
+    {
+        "duration": "27.743561020202023",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "26.213254074074065",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "25.88056831986531",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "25.572635387205384",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "25.550006208754215",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "25.947597478114496",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "33.54444711111111",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "26.856253040404038",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "28.324369390572382",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "25.5851536936027",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "26.45443745454547",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "26.733336171717177",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "26.41685344107744",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "25.47572742760942",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "25.28835461952861",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "24.981795420875425",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "25.624870525252533",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "25.290243616161618",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "25.221573663299655",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "25.509713168350167",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "25.438185272727278",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "4.741615726666667E-4",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "26.806579858585852",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.6435852044444445E-4",
+        "name": "system_health.memory_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "26.111561777777787",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "28.921650417508427",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "249.57751397306396",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "221.59996299663302",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "39.071558111111116",
+        "name": "thread_times.key_idle_power_cases/animated-gif.html"
+    },
+    {
+        "duration": "46.499114848484865",
+        "name": "thread_times.key_idle_power_cases/blank.html"
+    },
+    {
+        "duration": "40.92374571717173",
+        "name": "thread_times.key_idle_power_cases/css-animation.html"
+    },
+    {
+        "duration": "40.18455657142857",
+        "name": "thread_times.key_idle_power_cases/idle_power_animated_gif"
+    },
+    {
+        "duration": "46.065211999999995",
+        "name": "thread_times.key_idle_power_cases/idle_power_blank"
+    },
+    {
+        "duration": "43.26832057142856",
+        "name": "thread_times.key_idle_power_cases/idle_power_css_animation"
+    },
+    {
+        "duration": "45.39126485714285",
+        "name": "thread_times.key_idle_power_cases/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "115.75829571428572",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "45.47862071428572",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timetout"
+    },
+    {
+        "duration": "41.56898869696969",
+        "name": "thread_times.key_idle_power_cases/request-animation-frame.html"
+    },
+    {
+        "duration": "41.78892557575759",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html"
+    },
+    {
+        "duration": "111.98851255555563",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html (Long Idle)"
+    },
+    {
+        "duration": "37.20279305050504",
+        "name": "thread_times.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "36.62669721212121",
+        "name": "thread_times.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "36.0092783939394",
+        "name": "thread_times.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "26.938259101010093",
+        "name": "thread_times.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "25.986242262626266",
+        "name": "thread_times.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "48.61527342857143",
+        "name": "thread_times.key_noop_cases/no_op_raf"
+    },
+    {
+        "duration": "40.184493808080795",
+        "name": "thread_times.key_noop_cases/no_op_raf.html"
+    },
+    {
+        "duration": "21.643692714285717",
+        "name": "thread_times.key_noop_cases/no_op_scroll"
+    },
+    {
+        "duration": "20.707322585858588",
+        "name": "thread_times.key_noop_cases/no_op_scroll.html"
+    },
+    {
+        "duration": "19.690998571428572",
+        "name": "thread_times.key_noop_cases/no_op_settimeout"
+    },
+    {
+        "duration": "20.74383840404041",
+        "name": "thread_times.key_noop_cases/no_op_settimeout.html"
+    },
+    {
+        "duration": "24.778715714285713",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler"
+    },
+    {
+        "duration": "24.563413919191916",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler.html"
+    },
+    {
+        "duration": "21.836539353535354",
+        "name": "thread_times.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "23.811427767676765",
+        "name": "thread_times.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "25.071473323232322",
+        "name": "thread_times.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "20.997457141414145",
+        "name": "thread_times.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "22.922611707070704",
+        "name": "thread_times.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "21.33588271717171",
+        "name": "thread_times.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "23.04708584848485",
+        "name": "thread_times.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "23.369223595959607",
+        "name": "thread_times.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "20.548894959595962",
+        "name": "thread_times.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "21.002785818181827",
+        "name": "thread_times.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "23.20890212121213",
+        "name": "thread_times.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "41.852787212121214",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "18.353564686868694",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "17.275717585858583",
+        "name": "thread_times.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "21.40286422222223",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "20.702141484848482",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "22.080833020202025",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "22.938988939393937",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "24.586446494949506",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "24.511456969696972",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "23.706549111111116",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "21.79080307070707",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "22.648982101010095",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "25.247263686868692",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "23.556514060606062",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "23.058419878787888",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "17.90385209090909",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "2.3378928583333333E-4",
+        "name": "thread_times.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "2.494454375E-4",
+        "name": "thread_times.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "30.09303194949495",
+        "name": "thread_times.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "20.87060688888889",
+        "name": "thread_times.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "2.2933880499999997E-4",
+        "name": "thread_times.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "20.438563636363636",
+        "name": "thread_times.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "2.6724735666666666E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "31.841551959595954",
+        "name": "thread_times.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "2.5840600416666666E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "23.77836389898989",
+        "name": "thread_times.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "28.182000717171704",
+        "name": "thread_times.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "27.97236217171717",
+        "name": "thread_times.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "19.24458981818181",
+        "name": "thread_times.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "18.73346793939394",
+        "name": "thread_times.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "42.39694412121213",
+        "name": "thread_times.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "23.602621767676773",
+        "name": "thread_times.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "1.249710723333333E-4",
+        "name": "thread_times.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "18.0999246060606",
+        "name": "thread_times.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "25.95531406060607",
+        "name": "thread_times.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "17.361586454545453",
+        "name": "thread_times.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "23.9859142020202",
+        "name": "thread_times.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "35.28554370707072",
+        "name": "thread_times.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "35.05850645454546",
+        "name": "thread_times.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "18.347256585858588",
+        "name": "thread_times.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "32.18712203030304",
+        "name": "thread_times.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "30.337604585858575",
+        "name": "thread_times.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "22.26083785858586",
+        "name": "thread_times.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "23.966337838383843",
+        "name": "thread_times.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "24.223124181818182",
+        "name": "thread_times.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "26.704697",
+        "name": "thread_times.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "22.506499939393933",
+        "name": "thread_times.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "51.63699789898991",
+        "name": "thread_times.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "37.219621949494964",
+        "name": "thread_times.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "32.38917835353534",
+        "name": "thread_times.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "51.36507676767677",
+        "name": "thread_times.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "34.04353099999999",
+        "name": "thread_times.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "26.7478709981217",
+        "name": "thread_times.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "34.34752413131313",
+        "name": "thread_times.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "32.324948030303034",
+        "name": "thread_times.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "42.21546366666667",
+        "name": "thread_times.tough_compositor_cases/cc_poster_circle"
+    },
+    {
+        "duration": "45.590932",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "52.08899866666667",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_text_only"
+    },
+    {
+        "duration": "50.01831511111112",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/beqojupo/1/quiet?JS_FULL_SCREEN_INVALIDATION"
+    },
+    {
+        "duration": "40.70294216161616",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/covoqi/1/quiet?NEW_TILINGS"
+    },
+    {
+        "duration": "31.098193606060608",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/falefice/1/quiet?CC_POSTER_CIRCLE"
+    },
+    {
+        "duration": "34.55790605050505",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/giqafofe/1/quiet?JS_POSTER_CIRCLE"
+    },
+    {
+        "duration": "29.031353121212117",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/jevibahi/4/quiet?JS_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "42.078529676767666",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/pixavefe/1/quiet?CC_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "28.99849667676767",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/wixadinu/2/quiet?JS_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "28.457860787878783",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/yakagevo/1/quiet?CC_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "117.86474483333332",
+        "name": "thread_times.tough_compositor_cases/js_full_screen_invalidation"
+    },
+    {
+        "duration": "70.29189933333332",
+        "name": "thread_times.tough_compositor_cases/js_poster_circle"
+    },
+    {
+        "duration": "48.1593245",
+        "name": "thread_times.tough_compositor_cases/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "40.20628516666667",
+        "name": "thread_times.tough_compositor_cases/js_scroll_text_only"
+    },
+    {
+        "duration": "84.0134045",
+        "name": "thread_times.tough_compositor_cases/new_tilings"
+    },
+    {
+        "duration": "28.531368454545447",
+        "name": "thread_times.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "29.12396254545455",
+        "name": "thread_times.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "29.328133777777783",
+        "name": "thread_times.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "29.809518525252546",
+        "name": "thread_times.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "30.191594292929288",
+        "name": "thread_times.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "27.785533595959603",
+        "name": "thread_times.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "25.298953505050495",
+        "name": "thread_times.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "23.546570878787882",
+        "name": "thread_times.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.259863383838383",
+        "name": "thread_times.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "19.929192999999998",
+        "name": "thread_times.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "37.3660172929293",
+        "name": "thread_times.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.75153397979798",
+        "name": "thread_times.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "25.13098511111111",
+        "name": "thread_times.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "25.491935232323225",
+        "name": "thread_times.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "26.16174813131313",
+        "name": "thread_times.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "24.09711046464647",
+        "name": "thread_times.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "22.20514414141415",
+        "name": "thread_times.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.761244353535346",
+        "name": "thread_times.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.0513925959596",
+        "name": "thread_times.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "17.84974856565656",
+        "name": "thread_times.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "27.495415646464643",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "29.57633684848485",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "30.11915795959595",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "29.696836515151517",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "29.146649222222216",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "27.518887474747473",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "24.91401772727274",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "23.258650606060623",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.424119929292928",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.368543909090914",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.014474686868688",
+        "name": "thread_times.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.086354686868685",
+        "name": "thread_times.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "20.167101969696976",
+        "name": "thread_times.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.193113161616168",
+        "name": "thread_times.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "20.359856616161625",
+        "name": "thread_times.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "18.986125878787877",
+        "name": "thread_times.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "17.511826363636363",
+        "name": "thread_times.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "16.796337702020203",
+        "name": "thread_times.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "15.66626123232323",
+        "name": "thread_times.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "15.177268585858585",
+        "name": "thread_times.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "14.186135681818175",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "16.15664002020202",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "13.168792727272727",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "13.446979494949494",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "13.172386545454541",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "13.76935686868686",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "15.272180611111114",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "25.72748885858586",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "16.527687575757575",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "4.454959518181818E-4",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "41.033312878787875",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "112.25431550505051",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "72.65116685858587",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "109.1385924949495",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "150.93145262626263",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "183.27126646464652",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "89.47476730303025",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.656358890909091E-4",
+        "name": "v8.browsing_mobile-future/browse:news:globo"
+    },
+    {
+        "duration": "74.66142475757576",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "71.70933237373741",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "2.539591345454546E-4",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "74.7166240909091",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "131.05680376767677",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "108.49170429292934",
+        "name": "v8.browsing_mobile-future/browse:shopping:avito"
+    },
+    {
+        "duration": "2.662918781818182E-4",
+        "name": "v8.browsing_mobile-future/browse:shopping:flipkart"
+    },
+    {
+        "duration": "52.924462949494945",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "100.62009274747479",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "226.84413737373728",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "137.48432453535352",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "124.48574706060609",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "137.38619383838383",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "68.6252022121212",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "105.61960614141412",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "70.9615241111111",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "5.22391E-4",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "42.38519705050505",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "114.8740007373737",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "70.34756277777777",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "109.46432981818178",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "152.09646494949496",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "182.61033141414137",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "90.23109470707071",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.3993581066666668E-4",
+        "name": "v8.browsing_mobile/browse:news:globo"
+    },
+    {
+        "duration": "75.68449179797979",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "72.24280328282828",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.6033719266666666E-4",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "75.71519345454547",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "142.33761666666666",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "110.92820369696972",
+        "name": "v8.browsing_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.3978551066666668E-4",
+        "name": "v8.browsing_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "53.38554023232324",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "101.00470251515152",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "238.88736484848494",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "138.04213669696972",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "124.81172459595956",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "138.2626141414142",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "69.61902062626264",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "107.34052462626265",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "70.61893831313134",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "11.229945395622893",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "30.824779141414133",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "11.287740523569026",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "11.969186171717174",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "21.68770044107744",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "12.037466341750843",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "23.76745623232323",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "30.784937747474743",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "41.29598506060605",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "41.264503080808076",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "41.30380380808081",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "27.157537777777794",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "45.005756464646474",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "73.58467360606058",
+        "name": "webrtc/pause_play_peerconnections"
+    }
+]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_story_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_story_timing.json
new file mode 100644
index 0000000..576526c
--- /dev/null
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus5x_webview_story_timing.json
@@ -0,0 +1,7850 @@
+[
+    {
+        "duration": "43.710161005050495",
+        "name": "blink_perf.bindings/append-child.html"
+    },
+    {
+        "duration": "21.466651782828283",
+        "name": "blink_perf.bindings/create-element.html"
+    },
+    {
+        "duration": "19.279228727272724",
+        "name": "blink_perf.bindings/document-implementation.html"
+    },
+    {
+        "duration": "11.96587262626262",
+        "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
+    },
+    {
+        "duration": "19.636889272727277",
+        "name": "blink_perf.bindings/first-child.html"
+    },
+    {
+        "duration": "17.19298712626263",
+        "name": "blink_perf.bindings/gc-forest.html"
+    },
+    {
+        "duration": "23.480957070707067",
+        "name": "blink_perf.bindings/gc-mini-tree.html"
+    },
+    {
+        "duration": "105.39759127272724",
+        "name": "blink_perf.bindings/gc-tree.html"
+    },
+    {
+        "duration": "13.544000414141411",
+        "name": "blink_perf.bindings/get-attribute-rare.html"
+    },
+    {
+        "duration": "24.329658479797974",
+        "name": "blink_perf.bindings/get-attribute.html"
+    },
+    {
+        "duration": "13.88523682828283",
+        "name": "blink_perf.bindings/get-element-by-id.html"
+    },
+    {
+        "duration": "53.81350880303032",
+        "name": "blink_perf.bindings/get-elements-by-tag-name.html"
+    },
+    {
+        "duration": "22.902443853535353",
+        "name": "blink_perf.bindings/id-getter.html"
+    },
+    {
+        "duration": "20.845164631313125",
+        "name": "blink_perf.bindings/id-setter.html"
+    },
+    {
+        "duration": "22.912877444444447",
+        "name": "blink_perf.bindings/indexed-getter.html"
+    },
+    {
+        "duration": "23.359729914141415",
+        "name": "blink_perf.bindings/insert-before.html"
+    },
+    {
+        "duration": "15.66073734848485",
+        "name": "blink_perf.bindings/named-property-enumerator.html"
+    },
+    {
+        "duration": "330.2640862626263",
+        "name": "blink_perf.bindings/node-list-access.html"
+    },
+    {
+        "duration": "74.65473911111104",
+        "name": "blink_perf.bindings/node-type.html"
+    },
+    {
+        "duration": "12.166218356565656",
+        "name": "blink_perf.bindings/post-message.html"
+    },
+    {
+        "duration": "15.031689888888891",
+        "name": "blink_perf.bindings/sequence-conversion-array.html"
+    },
+    {
+        "duration": "14.599702873737376",
+        "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
+    },
+    {
+        "duration": "21.492740142424246",
+        "name": "blink_perf.bindings/serialize-array.html"
+    },
+    {
+        "duration": "5.939830036363632",
+        "name": "blink_perf.bindings/serialize-long-string.html"
+    },
+    {
+        "duration": "22.6646922070707",
+        "name": "blink_perf.bindings/serialize-map.html"
+    },
+    {
+        "duration": "7.639374234343439",
+        "name": "blink_perf.bindings/serialize-nested-array.html"
+    },
+    {
+        "duration": "22.99386185858585",
+        "name": "blink_perf.bindings/set-attribute-rare.html"
+    },
+    {
+        "duration": "15.59822455555556",
+        "name": "blink_perf.bindings/set-attribute.html"
+    },
+    {
+        "duration": "34.92016534343434",
+        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
+    },
+    {
+        "duration": "96.57043277777778",
+        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
+    },
+    {
+        "duration": "19.932629686868687",
+        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
+    },
+    {
+        "duration": "16.362395984848487",
+        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
+    },
+    {
+        "duration": "20.073967969696973",
+        "name": "blink_perf.bindings/typed-array-construct-from-array.html"
+    },
+    {
+        "duration": "30.49073951515151",
+        "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
+    },
+    {
+        "duration": "29.13049945959595",
+        "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
+    },
+    {
+        "duration": "30.29200554040404",
+        "name": "blink_perf.bindings/typed-array-set-from-typed.html"
+    },
+    {
+        "duration": "27.08327581313133",
+        "name": "blink_perf.bindings/undefined-first-child.html"
+    },
+    {
+        "duration": "19.233899015151515",
+        "name": "blink_perf.bindings/undefined-get-element-by-id.html"
+    },
+    {
+        "duration": "25.02407145959597",
+        "name": "blink_perf.bindings/undefined-id-getter.html"
+    },
+    {
+        "duration": "52.531290308080806",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "0.00132864316",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "25.053827",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "5.815777425252523",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "0.002024126051333333",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.1621821575757565",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "13.275490888888896",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "13.645664964646466",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
+    },
+    {
+        "duration": "13.021081863636365",
+        "name": "blink_perf.canvas/drawimage.html"
+    },
+    {
+        "duration": "25.09372122727271",
+        "name": "blink_perf.canvas/getImageData.html"
+    },
+    {
+        "duration": "12.229608398989905",
+        "name": "blink_perf.canvas/getImageDataColorManaged.html"
+    },
+    {
+        "duration": "15.118329797979797",
+        "name": "blink_perf.canvas/putImageData.html"
+    },
+    {
+        "duration": "10.861538590909086",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "8.69619393333333",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "6.326549196969696",
+        "name": "blink_perf.canvas/transferFromImageBitmap.html"
+    },
+    {
+        "duration": "10.61203425757576",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
+    },
+    {
+        "duration": "13.249192444444448",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
+    },
+    {
+        "duration": "51.21651611818182",
+        "name": "blink_perf.canvas/upload-video-to-texture.html"
+    },
+    {
+        "duration": "11.359766171717173",
+        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
+    },
+    {
+        "duration": "36.33728941414142",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "13.090207545454547",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "13.476174373737376",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "12.649947808080809",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "13.386500691919192",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "11.821115388888892",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "11.777885601010096",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "11.70876669696969",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "17.168545424242428",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "11.63261043939394",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "11.658259974747478",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "11.618406050505053",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "11.616704303030296",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "11.570646590909089",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "11.701989151515152",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "13.675743585858582",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "11.710822313131313",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "24.321205196969693",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "11.66891505555556",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "11.675061646464647",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "13.512045828282837",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "11.658760570707077",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "30.621573444444433",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "15.044431176767679",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "23.396902151515157",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "17.755227363636365",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "12.78865542424242",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "13.332958797979796",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "12.629907702020203",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "24.043709969696966",
+        "name": "blink_perf.css/SelectorCountScaling.html"
+    },
+    {
+        "duration": "30.626571797979793",
+        "name": "blink_perf.dom/addRange.html"
+    },
+    {
+        "duration": "6.203406990909091",
+        "name": "blink_perf.dom/delete-in-password-field.html"
+    },
+    {
+        "duration": "15.154764666666669",
+        "name": "blink_perf.dom/div-editable.html"
+    },
+    {
+        "duration": "5.4653650050505025",
+        "name": "blink_perf.dom/inner_html_with_selection.html"
+    },
+    {
+        "duration": "22.20487820202019",
+        "name": "blink_perf.dom/long-sibling-list.html"
+    },
+    {
+        "duration": "9.385656080808078",
+        "name": "blink_perf.dom/modify-element-classname.html"
+    },
+    {
+        "duration": "7.760505388888886",
+        "name": "blink_perf.dom/modify-element-id.html"
+    },
+    {
+        "duration": "7.691121129292931",
+        "name": "blink_perf.dom/modify-element-title.html"
+    },
+    {
+        "duration": "6.623128434343436",
+        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
+    },
+    {
+        "duration": "8.340144384848484",
+        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
+    },
+    {
+        "duration": "5.617466316161618",
+        "name": "blink_perf.dom/remove_child_with_selection.html"
+    },
+    {
+        "duration": "12.210182823232323",
+        "name": "blink_perf.dom/select-multiple-add.html"
+    },
+    {
+        "duration": "12.558656565656566",
+        "name": "blink_perf.dom/select-single-add.html"
+    },
+    {
+        "duration": "12.875960944444442",
+        "name": "blink_perf.dom/select-single-remove.html"
+    },
+    {
+        "duration": "11.80499445454545",
+        "name": "blink_perf.dom/textarea-dom.html"
+    },
+    {
+        "duration": "20.402384040404037",
+        "name": "blink_perf.dom/textarea-edit.html"
+    },
+    {
+        "duration": "29.735415272727273",
+        "name": "blink_perf.events/EventsDispatching.html"
+    },
+    {
+        "duration": "14.84207607070707",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+    },
+    {
+        "duration": "83.43082497979799",
+        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+    },
+    {
+        "duration": "57.80973024242423",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "69.52816724242427",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "17.9046943030303",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "38.995668373737374",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "13.725802595959602",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "25.247929606060616",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "16.68574221212122",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "53.282347979798",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "27.48404933333334",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "7.9724693272727265",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+    },
+    {
+        "duration": "14.028517262626272",
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "13.823525267676768",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "12.927425434343434",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "16.372967580808076",
+        "name": "blink_perf.layout/attach-inlines.html"
+    },
+    {
+        "duration": "16.26972809090909",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "14.21221799494949",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "14.073061823232326",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "23.037550202020213",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "18.128352515151512",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "16.79507116161616",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "13.87877443939394",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "10.012481784848486",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "16.542101237373736",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "15.157575530303024",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "18.509134292929286",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "14.878564106060605",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "14.479207378787875",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "23.294889959595952",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "14.508850530303034",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "16.365786737373735",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "14.31536603535354",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "64.10508724242425",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "69.10020954545455",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "44.9463627070707",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "25.295195353535355",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "27.456578919191923",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "18.932700909090904",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "9.810852550505048",
+        "name": "blink_perf.layout/floats_2_100_nested.html"
+    },
+    {
+        "duration": "42.017448595959614",
+        "name": "blink_perf.layout/floats_50_100.html"
+    },
+    {
+        "duration": "25.82731279797979",
+        "name": "blink_perf.layout/floats_50_100_nested.html"
+    },
+    {
+        "duration": "13.554099565656564",
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "43.934878111111104",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "43.582235373737376",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "54.38831364646463",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "25.25288136262626",
+        "name": "blink_perf.layout/latin-complex-text.html"
+    },
+    {
+        "duration": "10.926126626262624",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "13.016560525252526",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "32.60793619191919",
+        "name": "blink_perf.layout/line-layout-line-height.html"
+    },
+    {
+        "duration": "19.61204067171718",
+        "name": "blink_perf.layout/line-layout-repeat-append.html"
+    },
+    {
+        "duration": "17.51759087373737",
+        "name": "blink_perf.layout/line-layout.html"
+    },
+    {
+        "duration": "10.262174522222221",
+        "name": "blink_perf.layout/long-line-nowrap-collapse.html"
+    },
+    {
+        "duration": "10.259737029292928",
+        "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
+    },
+    {
+        "duration": "16.23090856060606",
+        "name": "blink_perf.layout/long-line-nowrap.html"
+    },
+    {
+        "duration": "13.607581570707074",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "26.567295015151522",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
+    },
+    {
+        "duration": "16.31402713636364",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
+    },
+    {
+        "duration": "23.720862101010102",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
+    },
+    {
+        "duration": "17.447701237373735",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
+    },
+    {
+        "duration": "14.590414040404037",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
+    },
+    {
+        "duration": "22.064679808080815",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "16.983525808080806",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "14.67293876262626",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "14.28818755555556",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "259.29189949494946",
+        "name": "blink_perf.layout/subtree-detaching.html"
+    },
+    {
+        "duration": "33.017890474747475",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "16.717820106060607",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "17.165051464646467",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "19.506332227272722",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "25.758721136363643",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "16.15341096464646",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "14.376453363636358",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "16.090510590909098",
+        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
+    },
+    {
+        "duration": "16.33907396464647",
+        "name": "blink_perf.owp_storage/idb-load-docs.html"
+    },
+    {
+        "duration": "27.810137272727264",
+        "name": "blink_perf.paint/appending-text.html"
+    },
+    {
+        "duration": "52.19531483838382",
+        "name": "blink_perf.paint/color-changes.html"
+    },
+    {
+        "duration": "25.476850050505043",
+        "name": "blink_perf.paint/complex-content-slow-scroll.html"
+    },
+    {
+        "duration": "28.26903971717171",
+        "name": "blink_perf.paint/containment-resize.html"
+    },
+    {
+        "duration": "29.477692494949494",
+        "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
+    },
+    {
+        "duration": "38.25898920202019",
+        "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
+    },
+    {
+        "duration": "24.849034464646454",
+        "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
+    },
+    {
+        "duration": "40.57117869696971",
+        "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
+    },
+    {
+        "duration": "28.14616440404041",
+        "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
+    },
+    {
+        "duration": "32.23157467676767",
+        "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
+    },
+    {
+        "duration": "22.831525191919198",
+        "name": "blink_perf.paint/large-table-collapsed-border-change.html"
+    },
+    {
+        "duration": "36.796646545454536",
+        "name": "blink_perf.paint/large-table-repaint.html"
+    },
+    {
+        "duration": "20.924201555555555",
+        "name": "blink_perf.paint/move-text-with-mask.html"
+    },
+    {
+        "duration": "70.86718990909091",
+        "name": "blink_perf.paint/paint-offset-changes.html"
+    },
+    {
+        "duration": "41.965940232323234",
+        "name": "blink_perf.paint/transform-changes.html"
+    },
+    {
+        "duration": "23.780095722222228",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "34.43425764646462",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "52.29287583838385",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "133.51053239393937",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "13.66295887373738",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "20.364776308080813",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "14.463044792929292",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "21.755069464646457",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "16.942033691919196",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "14.569431893939393",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "22.849827095959593",
+        "name": "blink_perf.parser/query-selector-all-class-first.html"
+    },
+    {
+        "duration": "17.248722343434356",
+        "name": "blink_perf.parser/query-selector-all-class-last.html"
+    },
+    {
+        "duration": "13.948599606060606",
+        "name": "blink_perf.parser/query-selector-all-class.html"
+    },
+    {
+        "duration": "20.14274206060606",
+        "name": "blink_perf.parser/query-selector-all-deep.html"
+    },
+    {
+        "duration": "18.86931236868686",
+        "name": "blink_perf.parser/query-selector-all-first.html"
+    },
+    {
+        "duration": "16.951212328282832",
+        "name": "blink_perf.parser/query-selector-all-id-deep.html"
+    },
+    {
+        "duration": "20.91142506060605",
+        "name": "blink_perf.parser/query-selector-all-id-first.html"
+    },
+    {
+        "duration": "25.247670954545455",
+        "name": "blink_perf.parser/query-selector-all-id-last.html"
+    },
+    {
+        "duration": "26.219155712121207",
+        "name": "blink_perf.parser/query-selector-all-last.html"
+    },
+    {
+        "duration": "15.151522959595955",
+        "name": "blink_perf.parser/query-selector-deep.html"
+    },
+    {
+        "duration": "25.552886328282824",
+        "name": "blink_perf.parser/query-selector-first.html"
+    },
+    {
+        "duration": "17.99741758585858",
+        "name": "blink_perf.parser/query-selector-id-deep.html"
+    },
+    {
+        "duration": "18.756966954545465",
+        "name": "blink_perf.parser/query-selector-id-last.html"
+    },
+    {
+        "duration": "13.08529880808081",
+        "name": "blink_perf.parser/query-selector-last.html"
+    },
+    {
+        "duration": "26.086938691919183",
+        "name": "blink_perf.parser/simple-url.html"
+    },
+    {
+        "duration": "13.016138247474752",
+        "name": "blink_perf.parser/textarea-parsing.html"
+    },
+    {
+        "duration": "22.30048255555556",
+        "name": "blink_perf.parser/tiny-innerHTML.html"
+    },
+    {
+        "duration": "15.636929752525248",
+        "name": "blink_perf.parser/url-parser.html"
+    },
+    {
+        "duration": "11.681636318181818",
+        "name": "blink_perf.parser/xml-parser.html"
+    },
+    {
+        "duration": "20.815860975757584",
+        "name": "blink_perf.svg/AzLizardBenjiPark.html"
+    },
+    {
+        "duration": "12.359570303030301",
+        "name": "blink_perf.svg/Bamboo.html"
+    },
+    {
+        "duration": "9.221356190909091",
+        "name": "blink_perf.svg/Cactus.html"
+    },
+    {
+        "duration": "7.311559196969696",
+        "name": "blink_perf.svg/Cowboy.html"
+    },
+    {
+        "duration": "7.890301170707067",
+        "name": "blink_perf.svg/Cowboy_transform.html"
+    },
+    {
+        "duration": "0.0012697439869230772",
+        "name": "blink_perf.svg/CrawFishGanson.html"
+    },
+    {
+        "duration": "0.0033021156307692315",
+        "name": "blink_perf.svg/Debian.html"
+    },
+    {
+        "duration": "6.044832335353536",
+        "name": "blink_perf.svg/DropsOnABlade.html"
+    },
+    {
+        "duration": "0.0015119222453846154",
+        "name": "blink_perf.svg/FlowerFromMyGarden.html"
+    },
+    {
+        "duration": "6.356588014141415",
+        "name": "blink_perf.svg/FoodLeifLodahl.html"
+    },
+    {
+        "duration": "6.772247781818182",
+        "name": "blink_perf.svg/France.html"
+    },
+    {
+        "duration": "5.997041629292927",
+        "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
+    },
+    {
+        "duration": "17.370412861616163",
+        "name": "blink_perf.svg/GearFlowers.html"
+    },
+    {
+        "duration": "0.001414684143846154",
+        "name": "blink_perf.svg/HarveyRayner.html"
+    },
+    {
+        "duration": "6.171705394949491",
+        "name": "blink_perf.svg/HereGear.html"
+    },
+    {
+        "duration": "13.725875681818186",
+        "name": "blink_perf.svg/MtSaintHelens.html"
+    },
+    {
+        "duration": "5.941266208080808",
+        "name": "blink_perf.svg/Samurai.html"
+    },
+    {
+        "duration": "151.9034966666666",
+        "name": "blink_perf.svg/SierpinskiCarpet.html"
+    },
+    {
+        "duration": "0.0019494753746153845",
+        "name": "blink_perf.svg/SvgCubics.html"
+    },
+    {
+        "duration": "20.34843430404041",
+        "name": "blink_perf.svg/SvgHitTesting.html"
+    },
+    {
+        "duration": "0.0014553253499999996",
+        "name": "blink_perf.svg/SvgNestedUse.html"
+    },
+    {
+        "duration": "6.392270652525252",
+        "name": "blink_perf.svg/UnderTheSee.html"
+    },
+    {
+        "duration": "9.276637331313134",
+        "name": "blink_perf.svg/WorldIso.html"
+    },
+    {
+        "duration": "0.0013478902646153848",
+        "name": "blink_perf.svg/Worldcup.html"
+    },
+    {
+        "duration": "48.53575083838382",
+        "name": "dromaeo/http://dromaeo.com?dom-attr"
+    },
+    {
+        "duration": "37.19013324242423",
+        "name": "dromaeo/http://dromaeo.com?dom-modify"
+    },
+    {
+        "duration": "53.42711705050505",
+        "name": "dromaeo/http://dromaeo.com?dom-query"
+    },
+    {
+        "duration": "31.895180727272727",
+        "name": "dromaeo/http://dromaeo.com?dom-traverse"
+    },
+    {
+        "duration": "23.891938454545453",
+        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "16.635332686868693",
+        "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "18.015689505050506",
+        "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "288.66086139534883",
+        "name": "jetstream/http://browserbench.org/JetStream/"
+    },
+    {
+        "duration": "90.4301248787879",
+        "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
+    },
+    {
+        "duration": "23.993490184343433",
+        "name": "loading.mobile/58Pic"
+    },
+    {
+        "duration": "38.757891377777774",
+        "name": "loading.mobile/58Pic_3g"
+    },
+    {
+        "duration": "26.910460962121206",
+        "name": "loading.mobile/Amazon"
+    },
+    {
+        "duration": "53.42113716304347",
+        "name": "loading.mobile/Amazon_3g"
+    },
+    {
+        "duration": "29.50331746212122",
+        "name": "loading.mobile/BOLNoticias"
+    },
+    {
+        "duration": "55.32145016304346",
+        "name": "loading.mobile/BOLNoticias_3g"
+    },
+    {
+        "duration": "23.279014017676765",
+        "name": "loading.mobile/Baidu"
+    },
+    {
+        "duration": "44.148728717391315",
+        "name": "loading.mobile/Baidu_3g"
+    },
+    {
+        "duration": "26.846363952020198",
+        "name": "loading.mobile/Bradesco"
+    },
+    {
+        "duration": "102.59957781111108",
+        "name": "loading.mobile/Bradesco_3g"
+    },
+    {
+        "duration": "72.9612806919192",
+        "name": "loading.mobile/Dailymotion"
+    },
+    {
+        "duration": "74.87824047826086",
+        "name": "loading.mobile/Dailymotion_3g"
+    },
+    {
+        "duration": "34.2141514141414",
+        "name": "loading.mobile/Dawn"
+    },
+    {
+        "duration": "129.93033801136357",
+        "name": "loading.mobile/Dawn_3g"
+    },
+    {
+        "duration": "26.336514239057244",
+        "name": "loading.mobile/DevOpera"
+    },
+    {
+        "duration": "18.064041086956525",
+        "name": "loading.mobile/DevOpera_cold"
+    },
+    {
+        "duration": "43.02819153260871",
+        "name": "loading.mobile/DevOpera_cold_3g"
+    },
+    {
+        "duration": "22.00800485869566",
+        "name": "loading.mobile/DevOpera_hot"
+    },
+    {
+        "duration": "39.4869007826087",
+        "name": "loading.mobile/DevOpera_hot_3g"
+    },
+    {
+        "duration": "18.95250433695653",
+        "name": "loading.mobile/DevOpera_warm"
+    },
+    {
+        "duration": "38.45775408695652",
+        "name": "loading.mobile/DevOpera_warm_3g"
+    },
+    {
+        "duration": "0.0012462616003333334",
+        "name": "loading.mobile/Dramaq"
+    },
+    {
+        "duration": "58.109808288888914",
+        "name": "loading.mobile/Dramaq_3g"
+    },
+    {
+        "duration": "22.23429439015151",
+        "name": "loading.mobile/EnquiryIndianRail"
+    },
+    {
+        "duration": "33.82331157608696",
+        "name": "loading.mobile/EnquiryIndianRail_3g"
+    },
+    {
+        "duration": "15.937487818181813",
+        "name": "loading.mobile/Facebook"
+    },
+    {
+        "duration": "19.114188402173912",
+        "name": "loading.mobile/Facebook_3g"
+    },
+    {
+        "duration": "29.617296294612796",
+        "name": "loading.mobile/FlipBoard"
+    },
+    {
+        "duration": "19.46105798913044",
+        "name": "loading.mobile/FlipBoard_cold"
+    },
+    {
+        "duration": "91.9622578409091",
+        "name": "loading.mobile/FlipBoard_cold_3g"
+    },
+    {
+        "duration": "27.266055499999997",
+        "name": "loading.mobile/FlipBoard_hot"
+    },
+    {
+        "duration": "31.99167352173913",
+        "name": "loading.mobile/FlipBoard_hot_3g"
+    },
+    {
+        "duration": "21.529058130434777",
+        "name": "loading.mobile/FlipBoard_warm"
+    },
+    {
+        "duration": "85.66405354444441",
+        "name": "loading.mobile/FlipBoard_warm_3g"
+    },
+    {
+        "duration": "60.55684567845119",
+        "name": "loading.mobile/FlipKart"
+    },
+    {
+        "duration": "23.033425402173915",
+        "name": "loading.mobile/FlipKart_cold"
+    },
+    {
+        "duration": "66.02299523913044",
+        "name": "loading.mobile/FlipKart_cold_3g"
+    },
+    {
+        "duration": "75.6826534130435",
+        "name": "loading.mobile/FlipKart_hot"
+    },
+    {
+        "duration": "48.640250989130415",
+        "name": "loading.mobile/FlipKart_hot_3g"
+    },
+    {
+        "duration": "42.37759502173913",
+        "name": "loading.mobile/FlipKart_warm"
+    },
+    {
+        "duration": "76.94903645652175",
+        "name": "loading.mobile/FlipKart_warm_3g"
+    },
+    {
+        "duration": "20.994396595959607",
+        "name": "loading.mobile/FranceTVInfo"
+    },
+    {
+        "duration": "46.4086425111111",
+        "name": "loading.mobile/FranceTVInfo_3g"
+    },
+    {
+        "duration": "4.001061142333333E-4",
+        "name": "loading.mobile/G1"
+    },
+    {
+        "duration": "81.66232847826085",
+        "name": "loading.mobile/G1_3g"
+    },
+    {
+        "duration": "42.385607656565654",
+        "name": "loading.mobile/GSShop"
+    },
+    {
+        "duration": "61.01795577586206",
+        "name": "loading.mobile/GSShop_3g"
+    },
+    {
+        "duration": "20.08404553661616",
+        "name": "loading.mobile/GoogleBrazil"
+    },
+    {
+        "duration": "41.68150378260871",
+        "name": "loading.mobile/GoogleBrazil_3g"
+    },
+    {
+        "duration": "20.488763085858594",
+        "name": "loading.mobile/GoogleIndia"
+    },
+    {
+        "duration": "52.38023659782611",
+        "name": "loading.mobile/GoogleIndia_3g"
+    },
+    {
+        "duration": "18.486709728535352",
+        "name": "loading.mobile/GoogleIndonesia"
+    },
+    {
+        "duration": "39.925690108695655",
+        "name": "loading.mobile/GoogleIndonesia_3g"
+    },
+    {
+        "duration": "26.97895932323233",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan"
+    },
+    {
+        "duration": "50.0794518152174",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g"
+    },
+    {
+        "duration": "3.8059155225E-4",
+        "name": "loading.mobile/HashOcean"
+    },
+    {
+        "duration": "0.001554310318166667",
+        "name": "loading.mobile/Hongkiat"
+    },
+    {
+        "duration": "60.971316211111116",
+        "name": "loading.mobile/Hongkiat_3g"
+    },
+    {
+        "duration": "2.8745730758333334E-4",
+        "name": "loading.mobile/IBI"
+    },
+    {
+        "duration": "27.224490131313136",
+        "name": "loading.mobile/KapanLagi"
+    },
+    {
+        "duration": "64.63525433695654",
+        "name": "loading.mobile/KapanLagi_3g"
+    },
+    {
+        "duration": "47.17536922979797",
+        "name": "loading.mobile/Kaskus"
+    },
+    {
+        "duration": "85.85488718181819",
+        "name": "loading.mobile/Kaskus_3g"
+    },
+    {
+        "duration": "25.857782055555557",
+        "name": "loading.mobile/LocalMoxie"
+    },
+    {
+        "duration": "80.5758095",
+        "name": "loading.mobile/LocalMoxie_3g"
+    },
+    {
+        "duration": "18.845716358585864",
+        "name": "loading.mobile/Locanto"
+    },
+    {
+        "duration": "25.106230588888884",
+        "name": "loading.mobile/Locanto_3g"
+    },
+    {
+        "duration": "24.68494549242425",
+        "name": "loading.mobile/OLX"
+    },
+    {
+        "duration": "57.5110396630435",
+        "name": "loading.mobile/OLX_3g"
+    },
+    {
+        "duration": "22.511484681818175",
+        "name": "loading.mobile/QQNews"
+    },
+    {
+        "duration": "48.6439701521739",
+        "name": "loading.mobile/QQNews_3g"
+    },
+    {
+        "duration": "25.127993452020213",
+        "name": "loading.mobile/SlideShare"
+    },
+    {
+        "duration": "52.06472636956522",
+        "name": "loading.mobile/SlideShare_3g"
+    },
+    {
+        "duration": "25.18963348148148",
+        "name": "loading.mobile/Suumo"
+    },
+    {
+        "duration": "33.03201889673913",
+        "name": "loading.mobile/Suumo_cold"
+    },
+    {
+        "duration": "21.373286543478258",
+        "name": "loading.mobile/Suumo_cold_3g"
+    },
+    {
+        "duration": "19.86163722826087",
+        "name": "loading.mobile/Suumo_hot"
+    },
+    {
+        "duration": "21.339735760869566",
+        "name": "loading.mobile/Suumo_hot_3g"
+    },
+    {
+        "duration": "17.474695413043477",
+        "name": "loading.mobile/Suumo_warm"
+    },
+    {
+        "duration": "18.95671048913044",
+        "name": "loading.mobile/Suumo_warm_3g"
+    },
+    {
+        "duration": "30.5705035429293",
+        "name": "loading.mobile/Thairath"
+    },
+    {
+        "duration": "85.39000147826087",
+        "name": "loading.mobile/Thairath_3g"
+    },
+    {
+        "duration": "41.007019224747474",
+        "name": "loading.mobile/TheStar"
+    },
+    {
+        "duration": "123.6233761555555",
+        "name": "loading.mobile/TheStar_3g"
+    },
+    {
+        "duration": "28.232028053030284",
+        "name": "loading.mobile/TribunNews"
+    },
+    {
+        "duration": "76.18423021739132",
+        "name": "loading.mobile/TribunNews_3g"
+    },
+    {
+        "duration": "21.790143404040403",
+        "name": "loading.mobile/Twitter"
+    },
+    {
+        "duration": "34.37078044565219",
+        "name": "loading.mobile/Twitter_3g"
+    },
+    {
+        "duration": "26.167922075757584",
+        "name": "loading.mobile/VoiceMemos"
+    },
+    {
+        "duration": "16.907083749999998",
+        "name": "loading.mobile/VoiceMemos_cold"
+    },
+    {
+        "duration": "39.94248763043477",
+        "name": "loading.mobile/VoiceMemos_cold_3g"
+    },
+    {
+        "duration": "25.511058347826086",
+        "name": "loading.mobile/VoiceMemos_hot"
+    },
+    {
+        "duration": "31.937369771739125",
+        "name": "loading.mobile/VoiceMemos_hot_3g"
+    },
+    {
+        "duration": "22.19945110869566",
+        "name": "loading.mobile/VoiceMemos_warm"
+    },
+    {
+        "duration": "28.26258347826086",
+        "name": "loading.mobile/VoiceMemos_warm_3g"
+    },
+    {
+        "duration": "22.89494159848485",
+        "name": "loading.mobile/Wikipedia"
+    },
+    {
+        "duration": "40.587428",
+        "name": "loading.mobile/Wikipedia_3g"
+    },
+    {
+        "duration": "31.228469608585865",
+        "name": "loading.mobile/YahooNews"
+    },
+    {
+        "duration": "96.03172180434784",
+        "name": "loading.mobile/YahooNews_3g"
+    },
+    {
+        "duration": "22.850740934343442",
+        "name": "loading.mobile/Youtube"
+    },
+    {
+        "duration": "82.0899628043478",
+        "name": "loading.mobile/Youtube_3g"
+    },
+    {
+        "duration": "211.44279242424253",
+        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "20.871252840404036",
+        "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "20.043552416161614",
+        "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "20.46705741212121",
+        "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "20.3572059010101",
+        "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "20.59707455757576",
+        "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "20.274280157575763",
+        "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "20.39463243232323",
+        "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "19.896451250505045",
+        "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "20.375135751515156",
+        "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "20.786114458585857",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "21.868535602020202",
+        "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "20.42308210505051",
+        "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "21.429399646464645",
+        "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "20.596960523232326",
+        "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "20.910636072727264",
+        "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "21.181339739393934",
+        "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "21.53623007070708",
+        "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "20.308643361616166",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "21.085888781818184",
+        "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "23.939249133333334",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "87.34552894949495",
+        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+    },
+    {
+        "duration": "25.49579242424241",
+        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
+    },
+    {
+        "duration": "33.5630902121212",
+        "name": "power.idle_platform/IdleStory_10s"
+    },
+    {
+        "duration": "153.95646805050504",
+        "name": "power.idle_platform/IdleStory_120s"
+    },
+    {
+        "duration": "81.71001967676764",
+        "name": "power.idle_platform/IdleStory_60s"
+    },
+    {
+        "duration": "62.45803603030306",
+        "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
+    },
+    {
+        "duration": "64.16415597979798",
+        "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
+    },
+    {
+        "duration": "56.56884549494949",
+        "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
+    },
+    {
+        "duration": "74.5772553131313",
+        "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
+    },
+    {
+        "duration": "62.00912149494951",
+        "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
+    },
+    {
+        "duration": "62.30069503030302",
+        "name": "power.typical_10_mobile/http://m.ynet.co.il"
+    },
+    {
+        "duration": "63.00056509090906",
+        "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
+    },
+    {
+        "duration": "56.802226494949466",
+        "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
+    },
+    {
+        "duration": "58.370577737373736",
+        "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
+    },
+    {
+        "duration": "61.61755854545453",
+        "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
+    },
+    {
+        "duration": "62.24441163636365",
+        "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
+    },
+    {
+        "duration": "24.238371767676764",
+        "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
+    },
+    {
+        "duration": "31.11515700000001",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
+    },
+    {
+        "duration": "13.949700388888896",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
+    },
+    {
+        "duration": "21.88363852525252",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
+    },
+    {
+        "duration": "20.601791090909096",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
+    },
+    {
+        "duration": "14.053719601010105",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
+    },
+    {
+        "duration": "40.49341323232324",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
+    },
+    {
+        "duration": "22.722201707070703",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
+    },
+    {
+        "duration": "33.2423768181818",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
+    },
+    {
+        "duration": "30.379051949494954",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
+    },
+    {
+        "duration": "27.74594387878788",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
+    },
+    {
+        "duration": "29.565204898989908",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
+    },
+    {
+        "duration": "32.49423884848486",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
+    },
+    {
+        "duration": "45.72502970707072",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
+    },
+    {
+        "duration": "30.48564973232324",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
+    },
+    {
+        "duration": "13.886907252525251",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
+    },
+    {
+        "duration": "42.59791377777778",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
+    },
+    {
+        "duration": "56.83758615151512",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
+    },
+    {
+        "duration": "40.64715538383837",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
+    },
+    {
+        "duration": "5.402723946666667E-4",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html"
+    },
+    {
+        "duration": "22.7731826010101",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
+    },
+    {
+        "duration": "29.134247010101017",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
+    },
+    {
+        "duration": "44.344218282828294",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
+    },
+    {
+        "duration": "127.62389081818182",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
+    },
+    {
+        "duration": "129.2202806262626",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
+    },
+    {
+        "duration": "58.70107156565656",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
+    },
+    {
+        "duration": "7.66754154E-4",
+        "name": "rendering.mobile/amazon"
+    },
+    {
+        "duration": "3.496170040000001E-4",
+        "name": "rendering.mobile/amazon_desktop"
+    },
+    {
+        "duration": "3.5619735899999997E-4",
+        "name": "rendering.mobile/amazon_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.667956000000004",
+        "name": "rendering.mobile/amazon_pinch"
+    },
+    {
+        "duration": "22.985545199999997",
+        "name": "rendering.mobile/amazon_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "6.78157808E-4",
+        "name": "rendering.mobile/amazon_sync_scroll"
+    },
+    {
+        "duration": "26.80672564516129",
+        "name": "rendering.mobile/analog_clock_svg"
+    },
+    {
+        "duration": "23.01273414141415",
+        "name": "rendering.mobile/androidpolice"
+    },
+    {
+        "duration": "24.46231423913043",
+        "name": "rendering.mobile/androidpolice_mobile"
+    },
+    {
+        "duration": "29.379463494505497",
+        "name": "rendering.mobile/androidpolice_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.65324023232323",
+        "name": "rendering.mobile/androidpolice_sync_scroll"
+    },
+    {
+        "duration": "10.278078982142857",
+        "name": "rendering.mobile/animometer_webgl"
+    },
+    {
+        "duration": "6.150755712280702",
+        "name": "rendering.mobile/aquarium"
+    },
+    {
+        "duration": "39.77240342105264",
+        "name": "rendering.mobile/background_color_animation"
+    },
+    {
+        "duration": "54.34333322807018",
+        "name": "rendering.mobile/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "17.40963857575758",
+        "name": "rendering.mobile/baidu"
+    },
+    {
+        "duration": "23.21868437647059",
+        "name": "rendering.mobile/baidu_mobile"
+    },
+    {
+        "duration": "17.837246599999993",
+        "name": "rendering.mobile/baidu_mobile_sync_scroll"
+    },
+    {
+        "duration": "17.60054981818181",
+        "name": "rendering.mobile/baidu_sync_scroll"
+    },
+    {
+        "duration": "28.734529157142855",
+        "name": "rendering.mobile/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "31.88907641428572",
+        "name": "rendering.mobile/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "57.851989457142864",
+        "name": "rendering.mobile/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "47.59354288571427",
+        "name": "rendering.mobile/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "43.61113725714284",
+        "name": "rendering.mobile/balls_javascript_canvas"
+    },
+    {
+        "duration": "43.43374235714285",
+        "name": "rendering.mobile/balls_javascript_css"
+    },
+    {
+        "duration": "47.07719762857145",
+        "name": "rendering.mobile/balls_svg_animations"
+    },
+    {
+        "duration": "33.580774340909095",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "16.16309654040404",
+        "name": "rendering.mobile/bing"
+    },
+    {
+        "duration": "34.15254409411765",
+        "name": "rendering.mobile/bing_mobile"
+    },
+    {
+        "duration": "19.209669964705878",
+        "name": "rendering.mobile/bing_mobile_sync_scroll"
+    },
+    {
+        "duration": "16.15945843434344",
+        "name": "rendering.mobile/bing_sync_scroll"
+    },
+    {
+        "duration": "6.256896628070173",
+        "name": "rendering.mobile/blob"
+    },
+    {
+        "duration": "29.773866515151514",
+        "name": "rendering.mobile/blogspot"
+    },
+    {
+        "duration": "34.1971317979798",
+        "name": "rendering.mobile/blogspot_desktop"
+    },
+    {
+        "duration": "36.067764737373736",
+        "name": "rendering.mobile/blogspot_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.483757541176473",
+        "name": "rendering.mobile/blogspot_mobile"
+    },
+    {
+        "duration": "19.542800752941172",
+        "name": "rendering.mobile/blogspot_mobile_sync_scroll"
+    },
+    {
+        "duration": "18.397004454545456",
+        "name": "rendering.mobile/blogspot_sync_scroll"
+    },
+    {
+        "duration": "35.52710927272727",
+        "name": "rendering.mobile/boingboing"
+    },
+    {
+        "duration": "39.893923505882356",
+        "name": "rendering.mobile/boingboing_mobile"
+    },
+    {
+        "duration": "36.505680525252544",
+        "name": "rendering.mobile/boingboing_sync_scroll"
+    },
+    {
+        "duration": "23.20775003030302",
+        "name": "rendering.mobile/booking.com"
+    },
+    {
+        "duration": "20.156267131313136",
+        "name": "rendering.mobile/booking.com_desktop"
+    },
+    {
+        "duration": "23.214967212121213",
+        "name": "rendering.mobile/booking.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.341574811764698",
+        "name": "rendering.mobile/booking.com_mobile"
+    },
+    {
+        "duration": "27.342701917647066",
+        "name": "rendering.mobile/booking.com_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.553359575757565",
+        "name": "rendering.mobile/booking.com_sync_scroll"
+    },
+    {
+        "duration": "27.574315900000006",
+        "name": "rendering.mobile/booking_pinch"
+    },
+    {
+        "duration": "26.558064599999994",
+        "name": "rendering.mobile/booking_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.712603594936716",
+        "name": "rendering.mobile/bouncing_balls_15"
+    },
+    {
+        "duration": "31.406039329113902",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "38.715668443037984",
+        "name": "rendering.mobile/bouncing_gradient_circles"
+    },
+    {
+        "duration": "31.489764113924046",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "30.850618645569625",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "29.409504822222218",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.91535828260869",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.069734695652173",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.862095652173906",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.695406434782612",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.511838130434786",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.804752826086954",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.38180148888889",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.99813351111111",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.546919311111115",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "42.09668048101262",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "36.26956865822784",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "35.47104793670886",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "23.815934215189888",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "28.15288664556963",
+        "name": "rendering.mobile/canvas_to_blob"
+    },
+    {
+        "duration": "47.41462976767678",
+        "name": "rendering.mobile/capitolvolkswagen"
+    },
+    {
+        "duration": "45.681806176470566",
+        "name": "rendering.mobile/capitolvolkswagen_mobile"
+    },
+    {
+        "duration": "29.72584897647059",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.28286737373738",
+        "name": "rendering.mobile/capitolvolkswagen_sync_scroll"
+    },
+    {
+        "duration": "24.033549211538457",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "26.76060064705882",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "27.003191018867916",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "24.401534803921564",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "16.908363907894742",
+        "name": "rendering.mobile/cats_unscaled"
+    },
+    {
+        "duration": "15.127138472972971",
+        "name": "rendering.mobile/cats_viewport_width"
+    },
+    {
+        "duration": "48.170401076923085",
+        "name": "rendering.mobile/cc_poster_circle"
+    },
+    {
+        "duration": "45.64014838461538",
+        "name": "rendering.mobile/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "24.24001969230769",
+        "name": "rendering.mobile/cc_scroll_text_only"
+    },
+    {
+        "duration": "40.34895316455695",
+        "name": "rendering.mobile/chip_tune"
+    },
+    {
+        "duration": "20.10037827272727",
+        "name": "rendering.mobile/cnn"
+    },
+    {
+        "duration": "36.66732523232323",
+        "name": "rendering.mobile/cnn_article"
+    },
+    {
+        "duration": "40.56089909411764",
+        "name": "rendering.mobile/cnn_article_mobile"
+    },
+    {
+        "duration": "41.4801298",
+        "name": "rendering.mobile/cnn_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "37.457202161616145",
+        "name": "rendering.mobile/cnn_article_sync_scroll"
+    },
+    {
+        "duration": "6.07633588E-4",
+        "name": "rendering.mobile/cnn_desktop"
+    },
+    {
+        "duration": "6.17122654E-4",
+        "name": "rendering.mobile/cnn_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.545750847058827",
+        "name": "rendering.mobile/cnn_mobile"
+    },
+    {
+        "duration": "23.526520399999995",
+        "name": "rendering.mobile/cnn_mobile_sync_scroll"
+    },
+    {
+        "duration": "38.57584694736841",
+        "name": "rendering.mobile/cnn_pathological"
+    },
+    {
+        "duration": "34.256921399999996",
+        "name": "rendering.mobile/cnn_pinch"
+    },
+    {
+        "duration": "50.52591220000001",
+        "name": "rendering.mobile/cnn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.21708303030303",
+        "name": "rendering.mobile/cnn_sync_scroll"
+    },
+    {
+        "duration": "39.31636817142857",
+        "name": "rendering.mobile/compositor_heavy_animation"
+    },
+    {
+        "duration": "28.66751762264151",
+        "name": "rendering.mobile/coordinated_animation"
+    },
+    {
+        "duration": "57.02562106329113",
+        "name": "rendering.mobile/crafty_mind"
+    },
+    {
+        "duration": "45.9545077857143",
+        "name": "rendering.mobile/css_animations_many_keyframes"
+    },
+    {
+        "duration": "48.20691892857144",
+        "name": "rendering.mobile/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "36.08479931428572",
+        "name": "rendering.mobile/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "35.04541461428572",
+        "name": "rendering.mobile/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "32.52594221428571",
+        "name": "rendering.mobile/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "30.8484257",
+        "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "32.77719364285715",
+        "name": "rendering.mobile/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "59.867549300000015",
+        "name": "rendering.mobile/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "47.20657124285713",
+        "name": "rendering.mobile/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "48.39045852857141",
+        "name": "rendering.mobile/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "46.15127871428572",
+        "name": "rendering.mobile/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "45.18047001428571",
+        "name": "rendering.mobile/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "45.107940457142874",
+        "name": "rendering.mobile/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "44.07439195714283",
+        "name": "rendering.mobile/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "48.56929617142857",
+        "name": "rendering.mobile/css_transitions_inline_style"
+    },
+    {
+        "duration": "36.222728957142856",
+        "name": "rendering.mobile/css_transitions_new_element"
+    },
+    {
+        "duration": "31.00974952857143",
+        "name": "rendering.mobile/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "41.68550397142858",
+        "name": "rendering.mobile/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "34.654951185714296",
+        "name": "rendering.mobile/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "46.323205314285715",
+        "name": "rendering.mobile/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "30.262442414285722",
+        "name": "rendering.mobile/css_transitions_style_element"
+    },
+    {
+        "duration": "35.05418575714285",
+        "name": "rendering.mobile/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "40.53003538571428",
+        "name": "rendering.mobile/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "40.27076722857142",
+        "name": "rendering.mobile/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "48.44824967142858",
+        "name": "rendering.mobile/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "48.55014542857142",
+        "name": "rendering.mobile/css_transitions_updating_class"
+    },
+    {
+        "duration": "33.96033565714287",
+        "name": "rendering.mobile/css_value_type_color"
+    },
+    {
+        "duration": "67.1937098142857",
+        "name": "rendering.mobile/css_value_type_filter"
+    },
+    {
+        "duration": "41.11748671428572",
+        "name": "rendering.mobile/css_value_type_length"
+    },
+    {
+        "duration": "53.97059547142858",
+        "name": "rendering.mobile/css_value_type_length_complex"
+    },
+    {
+        "duration": "35.981320542857155",
+        "name": "rendering.mobile/css_value_type_length_simple"
+    },
+    {
+        "duration": "38.89165565714287",
+        "name": "rendering.mobile/css_value_type_path"
+    },
+    {
+        "duration": "39.078237571428566",
+        "name": "rendering.mobile/css_value_type_shadow"
+    },
+    {
+        "duration": "38.45599851428572",
+        "name": "rendering.mobile/css_value_type_transform_complex"
+    },
+    {
+        "duration": "43.90728251428571",
+        "name": "rendering.mobile/css_value_type_transform_simple"
+    },
+    {
+        "duration": "31.825909131313114",
+        "name": "rendering.mobile/cuteoverload"
+    },
+    {
+        "duration": "42.54843934117647",
+        "name": "rendering.mobile/cuteoverload_mobile"
+    },
+    {
+        "duration": "33.196147565656574",
+        "name": "rendering.mobile/cuteoverload_sync_scroll"
+    },
+    {
+        "duration": "29.14778566666666",
+        "name": "rendering.mobile/deviantart"
+    },
+    {
+        "duration": "41.9102750117647",
+        "name": "rendering.mobile/deviantart_mobile"
+    },
+    {
+        "duration": "33.9123436",
+        "name": "rendering.mobile/deviantart_mobile_sync_scroll"
+    },
+    {
+        "duration": "31.72734",
+        "name": "rendering.mobile/deviantart_sync_scroll"
+    },
+    {
+        "duration": "6.250381520000001E-4",
+        "name": "rendering.mobile/digg"
+    },
+    {
+        "duration": "7.04765322E-4",
+        "name": "rendering.mobile/digg_sync_scroll"
+    },
+    {
+        "duration": "6.421734359649122",
+        "name": "rendering.mobile/dynamic_cube_map"
+    },
+    {
+        "duration": "6.340379898245614",
+        "name": "rendering.mobile/earth"
+    },
+    {
+        "duration": "20.087298515151513",
+        "name": "rendering.mobile/ebay"
+    },
+    {
+        "duration": "20.399973696969695",
+        "name": "rendering.mobile/ebay_desktop"
+    },
+    {
+        "duration": "20.08636951515151",
+        "name": "rendering.mobile/ebay_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.556884141176468",
+        "name": "rendering.mobile/ebay_mobile"
+    },
+    {
+        "duration": "24.63842050588235",
+        "name": "rendering.mobile/ebay_mobile_sync_scroll"
+    },
+    {
+        "duration": "50.537938000000004",
+        "name": "rendering.mobile/ebay_pinch"
+    },
+    {
+        "duration": "30.8212417",
+        "name": "rendering.mobile/ebay_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "38.38223826415094",
+        "name": "rendering.mobile/ebay_scroll"
+    },
+    {
+        "duration": "23.134786454545456",
+        "name": "rendering.mobile/ebay_sync_scroll"
+    },
+    {
+        "duration": "16.910218163259334",
+        "name": "rendering.mobile/espn"
+    },
+    {
+        "duration": "18.83338903030303",
+        "name": "rendering.mobile/espn_desktop"
+    },
+    {
+        "duration": "16.418394732323236",
+        "name": "rendering.mobile/espn_desktop_gpu_raster"
+    },
+    {
+        "duration": "37.263548438596494",
+        "name": "rendering.mobile/espn_pathological"
+    },
+    {
+        "duration": "55.2774097",
+        "name": "rendering.mobile/espn_pinch"
+    },
+    {
+        "duration": "36.217196300000005",
+        "name": "rendering.mobile/espn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "5.722522760000001E-4",
+        "name": "rendering.mobile/espn_sync_scroll"
+    },
+    {
+        "duration": "32.51850638596491",
+        "name": "rendering.mobile/extra_large_texture_uploads"
+    },
+    {
+        "duration": "30.26300843434344",
+        "name": "rendering.mobile/facebook"
+    },
+    {
+        "duration": "30.671021949494943",
+        "name": "rendering.mobile/facebook_desktop"
+    },
+    {
+        "duration": "37.61428168686869",
+        "name": "rendering.mobile/facebook_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.51461703529412",
+        "name": "rendering.mobile/facebook_mobile"
+    },
+    {
+        "duration": "24.99711428235294",
+        "name": "rendering.mobile/facebook_mobile_sync_scroll"
+    },
+    {
+        "duration": "47.652740300000005",
+        "name": "rendering.mobile/facebook_pinch"
+    },
+    {
+        "duration": "27.2730392",
+        "name": "rendering.mobile/facebook_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.395900797979795",
+        "name": "rendering.mobile/facebook_sync_scroll"
+    },
+    {
+        "duration": "24.60461953164557",
+        "name": "rendering.mobile/fill_shapes"
+    },
+    {
+        "duration": "36.39395927058825",
+        "name": "rendering.mobile/filter_terrain_svg"
+    },
+    {
+        "duration": "27.414422433962255",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "2.66408918E-4",
+        "name": "rendering.mobile/forecast.io"
+    },
+    {
+        "duration": "3.4837722800000004E-4",
+        "name": "rendering.mobile/forecast.io_sync_scroll"
+    },
+    {
+        "duration": "24.78693363291139",
+        "name": "rendering.mobile/geo_apis"
+    },
+    {
+        "duration": "48.00056844047619",
+        "name": "rendering.mobile/gmail"
+    },
+    {
+        "duration": "46.64838630303031",
+        "name": "rendering.mobile/gmail_desktop"
+    },
+    {
+        "duration": "45.792286131313155",
+        "name": "rendering.mobile/gmail_desktop_gpu_raster"
+    },
+    {
+        "duration": "38.665179",
+        "name": "rendering.mobile/gmail_pinch"
+    },
+    {
+        "duration": "54.912827400000005",
+        "name": "rendering.mobile/gmail_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "38.988956202380955",
+        "name": "rendering.mobile/google_calendar"
+    },
+    {
+        "duration": "25.67304216161616",
+        "name": "rendering.mobile/google_calendar_desktop"
+    },
+    {
+        "duration": "32.873028999999995",
+        "name": "rendering.mobile/google_calendar_desktop_gpu_raster"
+    },
+    {
+        "duration": "49.22820888888889",
+        "name": "rendering.mobile/google_calendar_pinch"
+    },
+    {
+        "duration": "27.327119555555555",
+        "name": "rendering.mobile/google_calendar_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "52.45568446428573",
+        "name": "rendering.mobile/google_docs"
+    },
+    {
+        "duration": "39.40009832323233",
+        "name": "rendering.mobile/google_docs_desktop"
+    },
+    {
+        "duration": "55.60720949494947",
+        "name": "rendering.mobile/google_docs_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.631290999999994",
+        "name": "rendering.mobile/google_image_pinch"
+    },
+    {
+        "duration": "48.23712211111111",
+        "name": "rendering.mobile/google_image_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "39.83859084523809",
+        "name": "rendering.mobile/google_image_search"
+    },
+    {
+        "duration": "29.297496858585845",
+        "name": "rendering.mobile/google_image_search_desktop"
+    },
+    {
+        "duration": "35.41217265656565",
+        "name": "rendering.mobile/google_image_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.490645494949494",
+        "name": "rendering.mobile/google_news"
+    },
+    {
+        "duration": "26.176157403846155",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "35.45339372619047",
+        "name": "rendering.mobile/google_news_mobile"
+    },
+    {
+        "duration": "32.975317857142855",
+        "name": "rendering.mobile/google_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.561958262626277",
+        "name": "rendering.mobile/google_news_sync_scroll"
+    },
+    {
+        "duration": "35.563297686868715",
+        "name": "rendering.mobile/google_plus"
+    },
+    {
+        "duration": "37.34729419191919",
+        "name": "rendering.mobile/google_plus_desktop"
+    },
+    {
+        "duration": "43.55028533333332",
+        "name": "rendering.mobile/google_plus_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.386628345238098",
+        "name": "rendering.mobile/google_plus_mobile"
+    },
+    {
+        "duration": "27.372233559523814",
+        "name": "rendering.mobile/google_plus_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.346430292929288",
+        "name": "rendering.mobile/google_plus_sync_scroll"
+    },
+    {
+        "duration": "26.11428788888889",
+        "name": "rendering.mobile/google_search_pinch"
+    },
+    {
+        "duration": "24.92732166666667",
+        "name": "rendering.mobile/google_search_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.00604506060606",
+        "name": "rendering.mobile/google_web_search"
+    },
+    {
+        "duration": "16.13667863636364",
+        "name": "rendering.mobile/google_web_search_desktop"
+    },
+    {
+        "duration": "17.281335171717174",
+        "name": "rendering.mobile/google_web_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.30274392857143",
+        "name": "rendering.mobile/google_web_search_mobile"
+    },
+    {
+        "duration": "21.776435166666673",
+        "name": "rendering.mobile/google_web_search_mobile_sync_scroll"
+    },
+    {
+        "duration": "18.757268212121208",
+        "name": "rendering.mobile/google_web_search_sync_scroll"
+    },
+    {
+        "duration": "24.580936484848483",
+        "name": "rendering.mobile/gsp.ro"
+    },
+    {
+        "duration": "23.925913623529404",
+        "name": "rendering.mobile/gsp.ro_mobile"
+    },
+    {
+        "duration": "22.444946023529404",
+        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll"
+    },
+    {
+        "duration": "19.280955454545456",
+        "name": "rendering.mobile/gsp.ro_sync_scroll"
+    },
+    {
+        "duration": "27.036562553571436",
+        "name": "rendering.mobile/guardian_pathological"
+    },
+    {
+        "duration": "34.5139007375",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "23.550761857142856",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "23.830467374999994",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "24.86157828205128",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "26.341902647058816",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "41.899803166666665",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "37.23315233333333",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "91.08054375",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "47.01317077777779",
+        "name": "rendering.mobile/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "127.27843166666668",
+        "name": "rendering.mobile/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "47.75316466666666",
+        "name": "rendering.mobile/idle_power_set_timetout"
+    },
+    {
+        "duration": "41.816703299999986",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "38.50620337837838",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "30.708012000000004",
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "28.786898384615387",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "68.41816299999999",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "79.27743476923077",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "32.48406284615385",
+        "name": "rendering.mobile/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "32.70270669230769",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "29.014957188405784",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "28.873295839285724",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "32.656102642857135",
+        "name": "rendering.mobile/latimes_pathological"
+    },
+    {
+        "duration": "21.342315070707073",
+        "name": "rendering.mobile/linkedin"
+    },
+    {
+        "duration": "29.248654080808063",
+        "name": "rendering.mobile/linkedin_desktop"
+    },
+    {
+        "duration": "21.847391919191928",
+        "name": "rendering.mobile/linkedin_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.349045035714283",
+        "name": "rendering.mobile/linkedin_mobile"
+    },
+    {
+        "duration": "26.095271095238093",
+        "name": "rendering.mobile/linkedin_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.779569446428564",
+        "name": "rendering.mobile/linkedin_pathological"
+    },
+    {
+        "duration": "25.843569777777773",
+        "name": "rendering.mobile/linkedin_pinch"
+    },
+    {
+        "duration": "24.660375555555557",
+        "name": "rendering.mobile/linkedin_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.474728333333342",
+        "name": "rendering.mobile/linkedin_sync_scroll"
+    },
+    {
+        "duration": "21.651753905660378",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "38.6355049074074",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "26.450445884615384",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "32.85865583333332",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "7.1029886125",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "31.583060075471685",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "28.434753458333333",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "35.16016092857143",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "29.635386512820507",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "28.45921130769231",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "34.469421782051285",
+        "name": "rendering.mobile/microsoft_fireflies"
+    },
+    {
+        "duration": "29.66009291025641",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "37.13717254166666",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "40.3880417051282",
+        "name": "rendering.mobile/microsoft_speed_reading"
+    },
+    {
+        "duration": "32.95111364102566",
+        "name": "rendering.mobile/microsoft_tweet_map"
+    },
+    {
+        "duration": "29.425587141025645",
+        "name": "rendering.mobile/microsoft_video_city"
+    },
+    {
+        "duration": "35.3308352987013",
+        "name": "rendering.mobile/microsoft_worker_fountains"
+    },
+    {
+        "duration": "26.41387358441559",
+        "name": "rendering.mobile/mix_10k"
+    },
+    {
+        "duration": "49.69339789705884",
+        "name": "rendering.mobile/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "49.204339328358195",
+        "name": "rendering.mobile/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "35.6618340882353",
+        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "45.454140417910466",
+        "name": "rendering.mobile/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "18.428021095959583",
+        "name": "rendering.mobile/mlb"
+    },
+    {
+        "duration": "17.6818741547619",
+        "name": "rendering.mobile/mlb_mobile"
+    },
+    {
+        "duration": "17.626012130952386",
+        "name": "rendering.mobile/mlb_mobile_sync_scroll"
+    },
+    {
+        "duration": "18.56526690909091",
+        "name": "rendering.mobile/mlb_sync_scroll"
+    },
+    {
+        "duration": "21.247756615384613",
+        "name": "rendering.mobile/mobile_news_sandbox"
+    },
+    {
+        "duration": "28.540633129870134",
+        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "30.487791675324672",
+        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "36.84002817073171",
+        "name": "rendering.mobile/motion_mark_focus"
+    },
+    {
+        "duration": "40.444369846153855",
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "31.06233492307693",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "24.783037153846156",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "22.456653076923082",
+        "name": "rendering.mobile/no_op_settimeout"
+    },
+    {
+        "duration": "26.057084307692307",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "6.535621512727271",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "34.57626360377358",
+        "name": "rendering.mobile/nyc_gov_scroll"
+    },
+    {
+        "duration": "25.514018424242423",
+        "name": "rendering.mobile/nytimes"
+    },
+    {
+        "duration": "34.19555962195122",
+        "name": "rendering.mobile/nytimes_mobile"
+    },
+    {
+        "duration": "32.82841445283019",
+        "name": "rendering.mobile/nytimes_scroll"
+    },
+    {
+        "duration": "25.641361575757575",
+        "name": "rendering.mobile/nytimes_sync_scroll"
+    },
+    {
+        "duration": "44.97328670149254",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "31.760868169811324",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "7.02072830425532",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "35.24258842553191",
+        "name": "rendering.mobile/pbs_pathological"
+    },
+    {
+        "duration": "20.825088980769223",
+        "name": "rendering.mobile/physical_simulation"
+    },
+    {
+        "duration": "30.116419070707067",
+        "name": "rendering.mobile/pinterest"
+    },
+    {
+        "duration": "27.0131303030303",
+        "name": "rendering.mobile/pinterest_desktop"
+    },
+    {
+        "duration": "6.1702728E-4",
+        "name": "rendering.mobile/pinterest_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.854186621621626",
+        "name": "rendering.mobile/pinterest_mobile"
+    },
+    {
+        "duration": "27.78692779729731",
+        "name": "rendering.mobile/pinterest_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.187462515151513",
+        "name": "rendering.mobile/pinterest_sync_scroll"
+    },
+    {
+        "duration": "30.112008514705877",
+        "name": "rendering.mobile/put_get_image_data"
+    },
+    {
+        "duration": "28.860670304347824",
+        "name": "rendering.mobile/raf"
+    },
+    {
+        "duration": "29.04149497826086",
+        "name": "rendering.mobile/raf_animation"
+    },
+    {
+        "duration": "29.07051547826087",
+        "name": "rendering.mobile/raf_canvas"
+    },
+    {
+        "duration": "33.10129821739131",
+        "name": "rendering.mobile/raf_touch_animation"
+    },
+    {
+        "duration": "36.06369610869565",
+        "name": "rendering.mobile/recode_pathological"
+    },
+    {
+        "duration": "32.356348232323235",
+        "name": "rendering.mobile/reddit"
+    },
+    {
+        "duration": "28.860163068493158",
+        "name": "rendering.mobile/reddit_mobile"
+    },
+    {
+        "duration": "29.421169656565674",
+        "name": "rendering.mobile/reddit_sync_scroll"
+    },
+    {
+        "duration": "24.961647940298512",
+        "name": "rendering.mobile/runway"
+    },
+    {
+        "duration": "6.447187354347828",
+        "name": "rendering.mobile/san_angeles"
+    },
+    {
+        "duration": "19.79681573809524",
+        "name": "rendering.mobile/second_batch_js_heavy"
+    },
+    {
+        "duration": "18.936460878048774",
+        "name": "rendering.mobile/second_batch_js_light"
+    },
+    {
+        "duration": "18.957902904761905",
+        "name": "rendering.mobile/second_batch_js_medium"
+    },
+    {
+        "duration": "22.51028035353536",
+        "name": "rendering.mobile/sfgate"
+    },
+    {
+        "duration": "24.4464549041096",
+        "name": "rendering.mobile/sfgate_mobile"
+    },
+    {
+        "duration": "25.986390246575336",
+        "name": "rendering.mobile/sfgate_mobile_sync_scroll"
+    },
+    {
+        "duration": "26.88410311111111",
+        "name": "rendering.mobile/sfgate_sync_scroll"
+    },
+    {
+        "duration": "35.96992441463414",
+        "name": "rendering.mobile/silk_finance"
+    },
+    {
+        "duration": "26.009418609756096",
+        "name": "rendering.mobile/simple_text_page"
+    },
+    {
+        "duration": "20.504772625",
+        "name": "rendering.mobile/simple_touch_drag"
+    },
+    {
+        "duration": "34.00682266666667",
+        "name": "rendering.mobile/slashdot"
+    },
+    {
+        "duration": "28.00216157352941",
+        "name": "rendering.mobile/slashdot_mobile"
+    },
+    {
+        "duration": "30.92553614141414",
+        "name": "rendering.mobile/slashdot_sync_scroll"
+    },
+    {
+        "duration": "21.53002008888889",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "31.946210219512185",
+        "name": "rendering.mobile/small_texture_uploads"
+    },
+    {
+        "duration": "24.519523596774192",
+        "name": "rendering.mobile/spielzeugz"
+    },
+    {
+        "duration": "21.728243269230767",
+        "name": "rendering.mobile/sticky_using_webkit"
+    },
+    {
+        "duration": "33.70373879245283",
+        "name": "rendering.mobile/stress_hidey_bars"
+    },
+    {
+        "duration": "23.77484211290322",
+        "name": "rendering.mobile/stroke_shapes"
+    },
+    {
+        "duration": "33.72196191304349",
+        "name": "rendering.mobile/svg_icon_raster"
+    },
+    {
+        "duration": "22.509157622222226",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "25.171395352941172",
+        "name": "rendering.mobile/swipe_to_dismiss"
+    },
+    {
+        "duration": "25.166236512195123",
+        "name": "rendering.mobile/sync_scroll_offset"
+    },
+    {
+        "duration": "33.213632000000004",
+        "name": "rendering.mobile/techcrunch"
+    },
+    {
+        "duration": "41.2233453030303",
+        "name": "rendering.mobile/techcrunch_desktop"
+    },
+    {
+        "duration": "40.826328575757564",
+        "name": "rendering.mobile/techcrunch_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.52888294117648",
+        "name": "rendering.mobile/techcrunch_mobile"
+    },
+    {
+        "duration": "20.329765029411767",
+        "name": "rendering.mobile/techcrunch_mobile_sync_scroll"
+    },
+    {
+        "duration": "20.916152656565657",
+        "name": "rendering.mobile/techcrunch_sync_scroll"
+    },
+    {
+        "duration": "26.39701502272727",
+        "name": "rendering.mobile/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "26.62531109090909",
+        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.649814863636365",
+        "name": "rendering.mobile/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "27.05962456818182",
+        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.32059343181818",
+        "name": "rendering.mobile/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "23.874317113636366",
+        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.160761272727278",
+        "name": "rendering.mobile/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.74922361363637",
+        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.268694659090908",
+        "name": "rendering.mobile/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "19.997179568181814",
+        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.09051034090909",
+        "name": "rendering.mobile/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "18.86159429545454",
+        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.45415702272727",
+        "name": "rendering.mobile/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.342103659090906",
+        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.15225561363636",
+        "name": "rendering.mobile/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "17.559075659090908",
+        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.547413522727272",
+        "name": "rendering.mobile/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "17.31163904545455",
+        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.22320379545455",
+        "name": "rendering.mobile/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "16.991829068181826",
+        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.24229172093023",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "28.397971186046515",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.05856388372094",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "28.099364465116285",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.581262930232555",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "25.843643976744197",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.411326139534886",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "23.76503802325581",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.976109209302326",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.416613720930233",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.854944255813958",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "20.590223953488376",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.177799441860465",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "19.935030837209307",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.85696157142857",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.352182380952378",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.560894857142852",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "19.364596880952384",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.222461714285718",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "18.87275283333333",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.30948148837209",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.3690576511628",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.48256629545455",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.491966046511624",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.26542688372093",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.141999906976743",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.929266930232565",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "18.960084069767444",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.823632139534887",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "17.80651706976744",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.24032913953489",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "17.207531465116283",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.99219104651163",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "16.995352581395355",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.47762974418604",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "16.572499360465113",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.37412004651163",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.246985232558142",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.22658137209302",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "16.262553534883722",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.050388060606064",
+        "name": "rendering.mobile/theverge"
+    },
+    {
+        "duration": "37.297716454545444",
+        "name": "rendering.mobile/theverge_article"
+    },
+    {
+        "duration": "37.69249268656717",
+        "name": "rendering.mobile/theverge_article_mobile"
+    },
+    {
+        "duration": "37.418735268656725",
+        "name": "rendering.mobile/theverge_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "32.45521103030304",
+        "name": "rendering.mobile/theverge_article_sync_scroll"
+    },
+    {
+        "duration": "22.603046044776136",
+        "name": "rendering.mobile/theverge_mobile"
+    },
+    {
+        "duration": "22.690247089552233",
+        "name": "rendering.mobile/theverge_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.41548065656566",
+        "name": "rendering.mobile/theverge_sync_scroll"
+    },
+    {
+        "duration": "26.79429918867924",
+        "name": "rendering.mobile/toggle_drawer"
+    },
+    {
+        "duration": "26.468575975",
+        "name": "rendering.mobile/touch_handler_scrolling"
+    },
+    {
+        "duration": "32.384462346153846",
+        "name": "rendering.mobile/transform_transitions"
+    },
+    {
+        "duration": "28.466567192307703",
+        "name": "rendering.mobile/transform_transitions_js_block"
+    },
+    {
+        "duration": "22.360818189303746",
+        "name": "rendering.mobile/twitter"
+    },
+    {
+        "duration": "21.39205116161617",
+        "name": "rendering.mobile/twitter_desktop"
+    },
+    {
+        "duration": "24.45776253535353",
+        "name": "rendering.mobile/twitter_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.221030999999996",
+        "name": "rendering.mobile/twitter_pinch"
+    },
+    {
+        "duration": "27.6379825",
+        "name": "rendering.mobile/twitter_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "6.618499720000001E-4",
+        "name": "rendering.mobile/twitter_sync_scroll"
+    },
+    {
+        "duration": "26.093082243243238",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "32.67718308080808",
+        "name": "rendering.mobile/usatoday"
+    },
+    {
+        "duration": "34.90895277272727",
+        "name": "rendering.mobile/usatoday_mobile"
+    },
+    {
+        "duration": "36.654332353846165",
+        "name": "rendering.mobile/usatoday_mobile_sync_scroll"
+    },
+    {
+        "duration": "30.543866131313127",
+        "name": "rendering.mobile/usatoday_sync_scroll"
+    },
+    {
+        "duration": "27.993631698113216",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "27.522190609375002",
+        "name": "rendering.mobile/weather.com"
+    },
+    {
+        "duration": "23.06806914141414",
+        "name": "rendering.mobile/weather.com_desktop"
+    },
+    {
+        "duration": "27.17261007070707",
+        "name": "rendering.mobile/weather.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.748781249999997",
+        "name": "rendering.mobile/weather_pinch"
+    },
+    {
+        "duration": "32.162023000000005",
+        "name": "rendering.mobile/weather_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.469335265306114",
+        "name": "rendering.mobile/web_animation_value_type_color"
+    },
+    {
+        "duration": "28.43072435416667",
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "31.159814458333326",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "31.531687854166663",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "33.94232875000001",
+        "name": "rendering.mobile/web_animation_value_type_path"
+    },
+    {
+        "duration": "29.4891520625",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "28.27349681249999",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "28.57466981250001",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "28.719930104166668",
+        "name": "rendering.mobile/web_animations_set_current_time"
+    },
+    {
+        "duration": "30.395648437499997",
+        "name": "rendering.mobile/web_animations_simultaneous"
+    },
+    {
+        "duration": "32.84137083333332",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "28.174942346938764",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "33.46774014583334",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "28.870094494949498",
+        "name": "rendering.mobile/wikipedia"
+    },
+    {
+        "duration": "26.051874505050506",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "25.80694769696971",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll"
+    },
+    {
+        "duration": "30.329841737373744",
+        "name": "rendering.mobile/wikipedia_desktop"
+    },
+    {
+        "duration": "31.21763802020202",
+        "name": "rendering.mobile/wikipedia_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.26330538095239",
+        "name": "rendering.mobile/wikipedia_mobile"
+    },
+    {
+        "duration": "28.306962095238084",
+        "name": "rendering.mobile/wikipedia_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.74394723232324",
+        "name": "rendering.mobile/wikipedia_sync_scroll"
+    },
+    {
+        "duration": "31.13661538383839",
+        "name": "rendering.mobile/wordpress"
+    },
+    {
+        "duration": "29.18034723232324",
+        "name": "rendering.mobile/wordpress_desktop"
+    },
+    {
+        "duration": "32.87116645454547",
+        "name": "rendering.mobile/wordpress_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.421136693548394",
+        "name": "rendering.mobile/wordpress_mobile"
+    },
+    {
+        "duration": "33.733404295081975",
+        "name": "rendering.mobile/wordpress_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.400827040404046",
+        "name": "rendering.mobile/wordpress_sync_scroll"
+    },
+    {
+        "duration": "33.74512848484848",
+        "name": "rendering.mobile/worldjournal"
+    },
+    {
+        "duration": "37.907625800000005",
+        "name": "rendering.mobile/worldjournal_mobile"
+    },
+    {
+        "duration": "40.169337711864415",
+        "name": "rendering.mobile/worldjournal_mobile_sync_scroll"
+    },
+    {
+        "duration": "33.863973454545466",
+        "name": "rendering.mobile/worldjournal_sync_scroll"
+    },
+    {
+        "duration": "37.26803534375",
+        "name": "rendering.mobile/wow_wiki_pathological"
+    },
+    {
+        "duration": "35.01629922222222",
+        "name": "rendering.mobile/wowwiki"
+    },
+    {
+        "duration": "38.725140322033894",
+        "name": "rendering.mobile/wowwiki_mobile"
+    },
+    {
+        "duration": "34.92118466101694",
+        "name": "rendering.mobile/wowwiki_mobile_sync_scroll"
+    },
+    {
+        "duration": "35.37602571717172",
+        "name": "rendering.mobile/wowwiki_sync_scroll"
+    },
+    {
+        "duration": "28.89404680808081",
+        "name": "rendering.mobile/wsj"
+    },
+    {
+        "duration": "24.740243125000003",
+        "name": "rendering.mobile/wsj_mobile"
+    },
+    {
+        "duration": "20.79276046875001",
+        "name": "rendering.mobile/wsj_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.44517348484849",
+        "name": "rendering.mobile/wsj_sync_scroll"
+    },
+    {
+        "duration": "21.387545131313136",
+        "name": "rendering.mobile/yahoo_answers"
+    },
+    {
+        "duration": "21.63650351515151",
+        "name": "rendering.mobile/yahoo_answers_desktop"
+    },
+    {
+        "duration": "19.17910185858585",
+        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.5176687118644",
+        "name": "rendering.mobile/yahoo_answers_mobile"
+    },
+    {
+        "duration": "24.158132",
+        "name": "rendering.mobile/yahoo_answers_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.077926914141415",
+        "name": "rendering.mobile/yahoo_answers_sync_scroll"
+    },
+    {
+        "duration": "34.02458616949153",
+        "name": "rendering.mobile/yahoo_games"
+    },
+    {
+        "duration": "43.987016565656575",
+        "name": "rendering.mobile/yahoo_games_desktop"
+    },
+    {
+        "duration": "33.28042836363637",
+        "name": "rendering.mobile/yahoo_games_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.29125",
+        "name": "rendering.mobile/yahoo_games_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.266425383838385",
+        "name": "rendering.mobile/yahoo_news"
+    },
+    {
+        "duration": "27.63282556565657",
+        "name": "rendering.mobile/yahoo_news_desktop"
+    },
+    {
+        "duration": "23.063192545454545",
+        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.572827440677965",
+        "name": "rendering.mobile/yahoo_news_mobile"
+    },
+    {
+        "duration": "23.277145593220343",
+        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "32.62292733333334",
+        "name": "rendering.mobile/yahoo_news_pinch"
+    },
+    {
+        "duration": "31.494334",
+        "name": "rendering.mobile/yahoo_news_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.843903535353537",
+        "name": "rendering.mobile/yahoo_news_sync_scroll"
+    },
+    {
+        "duration": "26.921064842105263",
+        "name": "rendering.mobile/yahoo_sports"
+    },
+    {
+        "duration": "26.16323771717173",
+        "name": "rendering.mobile/yahoo_sports_desktop"
+    },
+    {
+        "duration": "26.78370534343433",
+        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster"
+    },
+    {
+        "duration": "37.110751",
+        "name": "rendering.mobile/yahoo_sports_pinch"
+    },
+    {
+        "duration": "32.51537966666667",
+        "name": "rendering.mobile/yahoo_sports_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.930524898989898",
+        "name": "rendering.mobile/youtube"
+    },
+    {
+        "duration": "48.741983808080796",
+        "name": "rendering.mobile/youtube_desktop"
+    },
+    {
+        "duration": "0.00256695748",
+        "name": "rendering.mobile/youtube_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.597173875",
+        "name": "rendering.mobile/youtube_mobile"
+    },
+    {
+        "duration": "16.886911929824556",
+        "name": "rendering.mobile/youtube_mobile_sync_scroll"
+    },
+    {
+        "duration": "33.098458666666666",
+        "name": "rendering.mobile/youtube_pinch"
+    },
+    {
+        "duration": "30.365898666666666",
+        "name": "rendering.mobile/youtube_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.354810424242423",
+        "name": "rendering.mobile/youtube_sync_scroll"
+    },
+    {
+        "duration": "34.03570310344827",
+        "name": "rendering.mobile/yuv_decoding"
+    },
+    {
+        "duration": "37.03645403448276",
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+    },
+    {
+        "duration": "33.12075153571429",
+        "name": "rendering.mobile/zdnet_pathological"
+    },
+    {
+        "duration": "25.555830627450984",
+        "name": "rendering.mobile/zoom_in_animation"
+    },
+    {
+        "duration": "21.067602194444458",
+        "name": "scheduler.tough_scheduling_cases/raf"
+    },
+    {
+        "duration": "21.16086323232324",
+        "name": "scheduler.tough_scheduling_cases/raf.html"
+    },
+    {
+        "duration": "23.767237291666675",
+        "name": "scheduler.tough_scheduling_cases/raf_animation"
+    },
+    {
+        "duration": "26.87727507070708",
+        "name": "scheduler.tough_scheduling_cases/raf_animation.html"
+    },
+    {
+        "duration": "23.442381722222223",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas"
+    },
+    {
+        "duration": "22.963322424242428",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas.html"
+    },
+    {
+        "duration": "23.815313500000002",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation"
+    },
+    {
+        "duration": "34.12548400000001",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation.html"
+    },
+    {
+        "duration": "18.95832684848484",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?heavy"
+    },
+    {
+        "duration": "15.03128408080808",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?light"
+    },
+    {
+        "duration": "20.28770635858586",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?medium"
+    },
+    {
+        "duration": "15.277784284722223",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_heavy"
+    },
+    {
+        "duration": "14.888292930555556",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_light"
+    },
+    {
+        "duration": "19.716061125",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_medium"
+    },
+    {
+        "duration": "33.05995713888888",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page"
+    },
+    {
+        "duration": "32.978883787878786",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page.html"
+    },
+    {
+        "duration": "24.06399504166667",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag"
+    },
+    {
+        "duration": "41.98956365151515",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag.html"
+    },
+    {
+        "duration": "22.01773870833333",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset"
+    },
+    {
+        "duration": "26.870501646464646",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset.html"
+    },
+    {
+        "duration": "20.48665958333333",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling"
+    },
+    {
+        "duration": "20.44712684848484",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling.html"
+    },
+    {
+        "duration": "1.27474468E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/amazon"
+    },
+    {
+        "duration": "24.09563207070707",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "16.131964318181822",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "1.3149579266666668E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/cnn"
+    },
+    {
+        "duration": "13.499913707070712",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/ebay"
+    },
+    {
+        "duration": "16.62560141414142",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/espn"
+    },
+    {
+        "duration": "21.362284121212117",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/facebook"
+    },
+    {
+        "duration": "38.43163644444445",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/gmail"
+    },
+    {
+        "duration": "20.706264606060607",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "30.265740979797982",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "22.99724454545453",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "27.05944164646464",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "13.103097217171713",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "16.559211535353537",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "2.3425420133333332E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "23.807741171717165",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "18.337747989898983",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/twitter"
+    },
+    {
+        "duration": "16.93510691414142",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "23.711983515151523",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "22.697534606060593",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "14.119658171717173",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "2.5188128133333333E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "1.4236768126666666E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "2.4023056066666663E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "7.2681109E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/youtube"
+    },
+    {
+        "duration": "36.41439267676768",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "26.3865436969697",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "37.75898114141412",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "38.54529784848486",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "32.1008236262626",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "25.963946555555566",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "41.51771323232323",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "38.609894464646466",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "37.35186696969698",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "53.61415506060607",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "32.8260186969697",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "44.157458696969705",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "37.80199118556699",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "46.90491107216495",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "31.089769731958768",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "42.59142244329896",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "32.418125999999994",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "33.04106813131312",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "32.228422111111115",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "28.77427532323231",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "25.857337212121198",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "34.81581632323232",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "21.2172323125",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "25.95152704225351",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "38.70133004166669",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "34.01566707291666",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "24.585781999999995",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "29.36216261458333",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "25.291818145833318",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "30.46532039583334",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "27.774460260416646",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "28.247537447916653",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "33.400358874999995",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "34.07377393939394",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "5.074024180000001E-4",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "40.085113232323216",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "34.35318766666669",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "30.1938478989899",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "38.73342768686867",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "22.622986717171724",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "26.530395010101",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "26.81221993939393",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "34.292192242424235",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "35.00954514141415",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "24.322987353535346",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "25.297640052083334",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "24.16532257291666",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "30.79673694791667",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "32.14087682291666",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "36.721524093750006",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "24.562798635416673",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "21.401144666666664",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.458445717171717",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.492320464646454",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "17.80853970707071",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "18.07885275757576",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.821977707070712",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.370807080808074",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "14.79814886363636",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "14.472012398989898",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "16.181806171717177",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "30.83875375757576",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.22582718181818",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.22782233333334",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "15.667519429292927",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.19245455050505",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.456844787878786",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.066775727272727",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.624834550505046",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.443541060606062",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.267672025252532",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "19.49211380808081",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.497779444444447",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.414129818181827",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "16.020979540404042",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "16.536690747474736",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "19.39338583333333",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.46957098989899",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "24.17904639393939",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "20.308240363636358",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "14.70824166161616",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "18.181492353535354",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "18.300120939393942",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "16.1949172979798",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "14.965585848484851",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "13.615810949494954",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.075792747474749",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "12.64716204545455",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.477032661616162",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.213493045454547",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.09429941414142",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "35.088195139534896",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "34.94015415151516",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "36.35903409302327",
+        "name": "smoothness.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "36.23899712121214",
+        "name": "smoothness.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "5.166371726666667E-4",
+        "name": "smoothness.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "20.586755151515163",
+        "name": "smoothness.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "21.1071388989899",
+        "name": "smoothness.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "14.608619621212124",
+        "name": "smoothness.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "18.449547777777777",
+        "name": "smoothness.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "26.733232919191916",
+        "name": "smoothness.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "20.131632161616157",
+        "name": "smoothness.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "34.04602186868687",
+        "name": "smoothness.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "17.599823404040404",
+        "name": "smoothness.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "32.80784984848483",
+        "name": "smoothness.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "27.099500939393945",
+        "name": "smoothness.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "24.766462454545447",
+        "name": "smoothness.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "4.557609546666666E-4",
+        "name": "smoothness.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "19.83891085858586",
+        "name": "smoothness.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "4.805405986666666E-4",
+        "name": "smoothness.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "18.146416232323233",
+        "name": "smoothness.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "2.727031706666666E-4",
+        "name": "smoothness.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "22.421427535353537",
+        "name": "smoothness.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "18.216259",
+        "name": "smoothness.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "17.78878416666667",
+        "name": "smoothness.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "18.36881368686868",
+        "name": "smoothness.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "18.776306595959596",
+        "name": "smoothness.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "14.939128353535347",
+        "name": "smoothness.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "20.574713353535348",
+        "name": "smoothness.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "26.608050525252523",
+        "name": "smoothness.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "26.4931048989899",
+        "name": "smoothness.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "21.72362251515151",
+        "name": "smoothness.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "27.12680304040405",
+        "name": "smoothness.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "16.374971782828293",
+        "name": "smoothness.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "18.205650373737374",
+        "name": "smoothness.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "25.435177080808078",
+        "name": "smoothness.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "5.014419593333333E-4",
+        "name": "smoothness.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "24.55112995959595",
+        "name": "smoothness.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "20.32118743434343",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "26.193613202020202",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "22.6116043030303",
+        "name": "smoothness.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "24.244546797979798",
+        "name": "smoothness.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "27.690978323232322",
+        "name": "smoothness.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "31.4456508080808",
+        "name": "smoothness.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "18.583867808080807",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "20.347959676767687",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "15.585170691919187",
+        "name": "smoothness.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "27.470859075949367",
+        "name": "smoothness.key_silk_cases/basic_stream"
+    },
+    {
+        "duration": "17.639884101265817",
+        "name": "smoothness.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "19.230973848101264",
+        "name": "smoothness.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "30.509082088607595",
+        "name": "smoothness.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "17.504084075949375",
+        "name": "smoothness.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "19.045557430379745",
+        "name": "smoothness.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "18.87164629113924",
+        "name": "smoothness.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "24.982495060606066",
+        "name": "smoothness.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "20.120842924050635",
+        "name": "smoothness.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "19.2932084050633",
+        "name": "smoothness.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "19.609963063291136",
+        "name": "smoothness.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "18.79934310126583",
+        "name": "smoothness.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "37.75988169696969",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "17.092478101010094",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "16.489196555555562",
+        "name": "smoothness.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "18.342064888888892",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "18.10732903030302",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "18.48845703030303",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "19.65609877777778",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "29.049842636363625",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "19.516584313131318",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "19.67983170707071",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "18.452651585858593",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "23.351940101010094",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "20.154087787878787",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "19.815807070707073",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "20.763194979797976",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "17.338429010101006",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "25.976240181818188",
+        "name": "smoothness.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "2.3785659214285718E-4",
+        "name": "smoothness.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "26.814265666666667",
+        "name": "smoothness.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "20.16233454545454",
+        "name": "smoothness.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "2.488919671428572E-4",
+        "name": "smoothness.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "20.023902898989903",
+        "name": "smoothness.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "2.54205295E-4",
+        "name": "smoothness.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "27.18603014141415",
+        "name": "smoothness.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "15.029928803030305",
+        "name": "smoothness.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "22.039306464646458",
+        "name": "smoothness.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "22.205341886075946",
+        "name": "smoothness.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "22.793513424242423",
+        "name": "smoothness.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "16.725830329113915",
+        "name": "smoothness.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "17.25106226262626",
+        "name": "smoothness.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "42.8510921392405",
+        "name": "smoothness.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "19.181962848101268",
+        "name": "smoothness.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "18.94820630379746",
+        "name": "smoothness.key_silk_cases/masonry"
+    },
+    {
+        "duration": "20.084398111111113",
+        "name": "smoothness.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "16.629058993670885",
+        "name": "smoothness.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "19.568017012658235",
+        "name": "smoothness.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "15.704912240506324",
+        "name": "smoothness.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "20.245584191919185",
+        "name": "smoothness.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "25.47288481012658",
+        "name": "smoothness.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "26.22736262626264",
+        "name": "smoothness.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "16.60805402531645",
+        "name": "smoothness.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "24.647190000000005",
+        "name": "smoothness.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "26.280476708860753",
+        "name": "smoothness.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "16.554193196202526",
+        "name": "smoothness.key_silk_cases/swipe_action"
+    },
+    {
+        "duration": "17.839553746835442",
+        "name": "smoothness.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "21.311540531645562",
+        "name": "smoothness.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "19.523768189873426",
+        "name": "smoothness.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "18.70693006329114",
+        "name": "smoothness.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "17.921342088607595",
+        "name": "smoothness.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "5.517164853333334E-4",
+        "name": "smoothness.maps/maps_perf_test"
+    },
+    {
+        "duration": "36.94292606315789",
+        "name": "smoothness.pathological_mobile_sites/cnn_pathological"
+    },
+    {
+        "duration": "20.929804778947368",
+        "name": "smoothness.pathological_mobile_sites/espn_pathological"
+    },
+    {
+        "duration": "17.66171575789473",
+        "name": "smoothness.pathological_mobile_sites/guardian_pathological"
+    },
+    {
+        "duration": "36.68538049494951",
+        "name": "smoothness.pathological_mobile_sites/http://edition.cnn.com"
+    },
+    {
+        "duration": "20.843824494949498",
+        "name": "smoothness.pathological_mobile_sites/http://m.espn.go.com/nhl/rankings"
+    },
+    {
+        "duration": "24.095470787878796",
+        "name": "smoothness.pathological_mobile_sites/http://recode.net"
+    },
+    {
+        "duration": "2.31011708E-4",
+        "name": "smoothness.pathological_mobile_sites/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "22.724323464646456",
+        "name": "smoothness.pathological_mobile_sites/http://www.latimes.com"
+    },
+    {
+        "duration": "23.269896363636363",
+        "name": "smoothness.pathological_mobile_sites/http://www.pbs.org/newshour/bb/much-really-cost-live-city-like-seattle/#the-rundown"
+    },
+    {
+        "duration": "17.804328181818185",
+        "name": "smoothness.pathological_mobile_sites/http://www.theguardian.com/politics/2015/mar/09/ed-balls-tory-spending-plans-nhs-charging"
+    },
+    {
+        "duration": "25.178577090909098",
+        "name": "smoothness.pathological_mobile_sites/http://www.wowwiki.com/World_of_Warcraft:_Mists_of_Pandaria"
+    },
+    {
+        "duration": "21.242836343434348",
+        "name": "smoothness.pathological_mobile_sites/http://www.zdnet.com"
+    },
+    {
+        "duration": "21.195858777777783",
+        "name": "smoothness.pathological_mobile_sites/https://www.linkedin.com/in/linustorvalds"
+    },
+    {
+        "duration": "22.586187084210536",
+        "name": "smoothness.pathological_mobile_sites/latimes_pathological"
+    },
+    {
+        "duration": "20.835326673684207",
+        "name": "smoothness.pathological_mobile_sites/linkedin_pathological"
+    },
+    {
+        "duration": "23.163372147368424",
+        "name": "smoothness.pathological_mobile_sites/pbs_pathological"
+    },
+    {
+        "duration": "23.78454714736842",
+        "name": "smoothness.pathological_mobile_sites/recode_pathological"
+    },
+    {
+        "duration": "24.757222410526307",
+        "name": "smoothness.pathological_mobile_sites/wow_wiki_pathological"
+    },
+    {
+        "duration": "21.2324124631579",
+        "name": "smoothness.pathological_mobile_sites/zdnet_pathological"
+    },
+    {
+        "duration": "46.22119991208792",
+        "name": "smoothness.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "26.68096419191919",
+        "name": "smoothness.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "45.04071079797979",
+        "name": "smoothness.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "27.12913316161616",
+        "name": "smoothness.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "3.2318433133333323E-4",
+        "name": "smoothness.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "26.650630109890106",
+        "name": "smoothness.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "26.290243230769228",
+        "name": "smoothness.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "19.894567676767686",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "22.385174929292933",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "15.51568738383839",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "16.434297984848488",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "16.941309333333333",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "26.954306383838382",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "20.096887535353535",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "34.98344145454544",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "17.558250595959592",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "32.96904016161617",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "26.338250131313135",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "24.22288457575759",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "5.575219791666668E-4",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "18.15044055555556",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "24.026684161616156",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "18.23374773737374",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "24.788833959595937",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "22.512064696969702",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "20.700705505050507",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "16.164381131313135",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "16.684285595959594",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "19.04377662626263",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "14.99526743939394",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "18.75821594949495",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "25.65778292929293",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "24.403230383838366",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "21.924604989898977",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "21.372965232323246",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "20.1489748989899",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "20.171315959595958",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "25.599843151515145",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "17.12718608585858",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "23.919891202020203",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "24.02764815151516",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "20.484248363636365",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "22.847269101010106",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "23.959380565656563",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "27.935085949494937",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "29.434814590909085",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "19.206687909090917",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "20.537193010101007",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "15.827074186868684",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "3.0692418533333346E-4",
+        "name": "smoothness.top_25_smooth/amazon"
+    },
+    {
+        "duration": "37.8736776060606",
+        "name": "smoothness.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "18.2841496060606",
+        "name": "smoothness.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "3.2502810240000004E-4",
+        "name": "smoothness.top_25_smooth/cnn"
+    },
+    {
+        "duration": "17.277827323232323",
+        "name": "smoothness.top_25_smooth/ebay"
+    },
+    {
+        "duration": "30.581809444444453",
+        "name": "smoothness.top_25_smooth/espn"
+    },
+    {
+        "duration": "27.29405719191919",
+        "name": "smoothness.top_25_smooth/facebook"
+    },
+    {
+        "duration": "41.4971061818182",
+        "name": "smoothness.top_25_smooth/gmail"
+    },
+    {
+        "duration": "34.74174319191919",
+        "name": "smoothness.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "46.26596047474748",
+        "name": "smoothness.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "27.466141575757575",
+        "name": "smoothness.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "41.814165848484855",
+        "name": "smoothness.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "20.93440856565656",
+        "name": "smoothness.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "29.701923888888892",
+        "name": "smoothness.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "22.33785186868688",
+        "name": "smoothness.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "31.417837747474753",
+        "name": "smoothness.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "25.22564817171717",
+        "name": "smoothness.top_25_smooth/twitter"
+    },
+    {
+        "duration": "20.64901446464647",
+        "name": "smoothness.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "27.139429989898982",
+        "name": "smoothness.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "25.997475434343432",
+        "name": "smoothness.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "21.650560055555555",
+        "name": "smoothness.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "5.818843786666667E-4",
+        "name": "smoothness.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "3.406524642666667E-4",
+        "name": "smoothness.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "5.889256806666666E-4",
+        "name": "smoothness.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "0.0016805330953333331",
+        "name": "smoothness.top_25_smooth/youtube"
+    },
+    {
+        "duration": "34.56751542424243",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swiffy72.html"
+    },
+    {
+        "duration": "22.909385616161625",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swiffy72.html"
+    },
+    {
+        "duration": "22.975871404040404",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swiffy72.html"
+    },
+    {
+        "duration": "22.972002737373735",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swiffy72.html"
+    },
+    {
+        "duration": "23.05482634343434",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swiffy72.html"
+    },
+    {
+        "duration": "22.805655010101006",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swiffy72.html"
+    },
+    {
+        "duration": "22.87244442424242",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swiffy72.html"
+    },
+    {
+        "duration": "22.9845251010101",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swiffy72.html"
+    },
+    {
+        "duration": "22.89903734343434",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swiffy72.html"
+    },
+    {
+        "duration": "22.951369333333336",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swiffy72.html"
+    },
+    {
+        "duration": "22.826379797979797",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swiffy72.html"
+    },
+    {
+        "duration": "24.899845422680418",
+        "name": "smoothness.tough_animation_cases/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "27.15536406060606",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations.html"
+    },
+    {
+        "duration": "2.4420874428571427E-4",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations_composited_transform.html"
+    },
+    {
+        "duration": "24.229545020618563",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "24.837807959595956",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties.html"
+    },
+    {
+        "duration": "24.50793077319588",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "24.86421067676768",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties.html"
+    },
+    {
+        "duration": "26.48453179381444",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "24.863760353535337",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties.html"
+    },
+    {
+        "duration": "22.800410463917522",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas"
+    },
+    {
+        "duration": "23.274929121212118",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas.html"
+    },
+    {
+        "duration": "23.30335260824742",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css"
+    },
+    {
+        "duration": "25.252873878787877",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css.html"
+    },
+    {
+        "duration": "42.93326180208333",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations"
+    },
+    {
+        "duration": "40.918010818181806",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations.html"
+    },
+    {
+        "duration": "23.79737",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation"
+    },
+    {
+        "duration": "25.773161141414157",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation.html?N=0200"
+    },
+    {
+        "duration": "44.38432013402061",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes"
+    },
+    {
+        "duration": "51.591521434343434",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "30.879023030303035",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "24.507783353535352",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.303483707070704",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "24.504219626262632",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "24.156211371134027",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "36.37883774226804",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "26.09757115463918",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "24.112843123711333",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "29.117117505050512",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "35.91695296969697",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "57.64283951515154",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "39.27128178787879",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "58.37891158762889",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "47.13851064646466",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "57.87615024742269",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "27.063015804123715",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "32.089443391752575",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "47.50945545454545",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "28.628942010101003",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "31.78232003030303",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "55.57603925252526",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "44.81053476288658",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "44.6923009587629",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "45.60322674226803",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "26.501559319587628",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "27.839722020618552",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "24.43261041237113",
+        "name": "smoothness.tough_animation_cases/css_transitions_inline_style"
+    },
+    {
+        "duration": "79.33357682474227",
+        "name": "smoothness.tough_animation_cases/css_transitions_new_element"
+    },
+    {
+        "duration": "96.87450298989894",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "24.970412636363644",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "24.94537036363636",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.760781292929295",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.183771252525258",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "32.74516772727273",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "25.224967707070714",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "25.1552522828283",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "28.448033855670104",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "24.800368041237103",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "28.786142061855664",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "25.49996343434344",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "41.9959312020202",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "65.85708645454545",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "56.72426313131312",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.685134587628863",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "28.256827587628866",
+        "name": "smoothness.tough_animation_cases/css_transitions_style_element"
+    },
+    {
+        "duration": "71.8020497216495",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "26.857441061855667",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "41.913826659793834",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "58.92744940206185",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "24.4826440927835",
+        "name": "smoothness.tough_animation_cases/css_transitions_updating_class"
+    },
+    {
+        "duration": "34.85501404123712",
+        "name": "smoothness.tough_animation_cases/css_value_type_color"
+    },
+    {
+        "duration": "33.23546517171717",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.92936157575757",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "74.26855706185566",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter"
+    },
+    {
+        "duration": "52.59241324242426",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "69.46276271134022",
+        "name": "smoothness.tough_animation_cases/css_value_type_length"
+    },
+    {
+        "duration": "76.21336215151514",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "41.64246086868687",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "28.93951912371134",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex"
+    },
+    {
+        "duration": "31.06406177777778",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "34.911568101010104",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "32.90849669072165",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple"
+    },
+    {
+        "duration": "29.58776148484848",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "35.10943151515151",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "35.81978154639174",
+        "name": "smoothness.tough_animation_cases/css_value_type_path"
+    },
+    {
+        "duration": "48.61319656565658",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "59.56468045454547",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "47.304724793814444",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow"
+    },
+    {
+        "duration": "52.72945221212122",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "49.16878241414141",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "43.21723091752577",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex"
+    },
+    {
+        "duration": "37.82519202020202",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "37.87524318181819",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.63594970103093",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple"
+    },
+    {
+        "duration": "24.974134646464645",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "32.43923792929293",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "26.10142955670102",
+        "name": "smoothness.tough_animation_cases/keyframed_animations"
+    },
+    {
+        "duration": "32.16247579797978",
+        "name": "smoothness.tough_animation_cases/keyframed_animations.html"
+    },
+    {
+        "duration": "27.160069804123705",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "27.428625828282836",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference.html"
+    },
+    {
+        "duration": "25.888833907216508",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "33.35466895959597",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue.html"
+    },
+    {
+        "duration": "39.19745783505154",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "43.068918628865994",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "33.91571341414141",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen.html"
+    },
+    {
+        "duration": "42.90414372727273",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_propagating_isolation.html"
+    },
+    {
+        "duration": "45.89259696969698",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions.html"
+    },
+    {
+        "duration": "45.82752073195878",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "2.330371307142857E-4",
+        "name": "smoothness.tough_animation_cases/robohornetpro"
+    },
+    {
+        "duration": "34.07276875757575",
+        "name": "smoothness.tough_animation_cases/transform_transition_js_block.html"
+    },
+    {
+        "duration": "24.603578556701034",
+        "name": "smoothness.tough_animation_cases/transform_transitions"
+    },
+    {
+        "duration": "23.23158053535354",
+        "name": "smoothness.tough_animation_cases/transform_transitions.html"
+    },
+    {
+        "duration": "34.024007154639165",
+        "name": "smoothness.tough_animation_cases/transform_transitions_js_block"
+    },
+    {
+        "duration": "25.275852690721646",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_color"
+    },
+    {
+        "duration": "39.71267702061856",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "25.335391030927823",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "33.02175504123712",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "56.24173128865976",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_path"
+    },
+    {
+        "duration": "32.50892110309278",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "45.10431268041235",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "24.686691360824746",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "56.426907865979395",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes"
+    },
+    {
+        "duration": "39.187651909090896",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "28.73273326804123",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time"
+    },
+    {
+        "duration": "41.857097353535366",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time_in_raf.html?N=0316"
+    },
+    {
+        "duration": "29.793349546391752",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous"
+    },
+    {
+        "duration": "35.53471091919191",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous.html?N=0316"
+    },
+    {
+        "duration": "27.541186195876293",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "27.922564131313134",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining.html?N=0316"
+    },
+    {
+        "duration": "45.23216216494846",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "39.78900587878786",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "30.148423121212122",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering.html?N=0316"
+    },
+    {
+        "duration": "29.64519058762888",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "37.756994808080805",
+        "name": "smoothness.tough_canvas_cases/../../../chrome/test/data/perf/canvas_bench/many_images.html"
+    },
+    {
+        "duration": "30.208653747474738",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_15"
+    },
+    {
+        "duration": "29.869926959595965",
+        "name": "smoothness.tough_canvas_cases/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "33.695963202020195",
+        "name": "smoothness.tough_canvas_cases/bouncing_gradient_circles"
+    },
+    {
+        "duration": "58.047796969696975",
+        "name": "smoothness.tough_canvas_cases/bouncing_png_images"
+    },
+    {
+        "duration": "50.90003127272724",
+        "name": "smoothness.tough_canvas_cases/bouncing_svg_images"
+    },
+    {
+        "duration": "17.9913538989899",
+        "name": "smoothness.tough_canvas_cases/canvas_animation_no_clear"
+    },
+    {
+        "duration": "41.187857313131296",
+        "name": "smoothness.tough_canvas_cases/canvas_arcs"
+    },
+    {
+        "duration": "24.57000081818182",
+        "name": "smoothness.tough_canvas_cases/canvas_font_cycler"
+    },
+    {
+        "duration": "38.7510518080808",
+        "name": "smoothness.tough_canvas_cases/canvas_lines"
+    },
+    {
+        "duration": "20.991129424242427",
+        "name": "smoothness.tough_canvas_cases/canvas_to_blob"
+    },
+    {
+        "duration": "17.17360576767678",
+        "name": "smoothness.tough_canvas_cases/chip_tune"
+    },
+    {
+        "duration": "17.244349939393945",
+        "name": "smoothness.tough_canvas_cases/crafty_mind"
+    },
+    {
+        "duration": "26.333795676767675",
+        "name": "smoothness.tough_canvas_cases/fill_shapes"
+    },
+    {
+        "duration": "29.412497818181812",
+        "name": "smoothness.tough_canvas_cases/geo_apis"
+    },
+    {
+        "duration": "20.96625446464646",
+        "name": "smoothness.tough_canvas_cases/hakim"
+    },
+    {
+        "duration": "29.395704434343422",
+        "name": "smoothness.tough_canvas_cases/http://geoapis.appspot.com/agdnZW9hcGlzchMLEgtFeGFtcGxlQ29kZRjh1wIM"
+    },
+    {
+        "duration": "19.06598487878788",
+        "name": "smoothness.tough_canvas_cases/http://hakim.se/experiments/html5/magnetic/02/"
+    },
+    {
+        "duration": "61.49437081818181",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/TweetMap/Default.html"
+    },
+    {
+        "duration": "25.70115338383838",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/VideoCity/Default.html"
+    },
+    {
+        "duration": "22.940697666666676",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html"
+    },
+    {
+        "duration": "55.148585343434334",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/Default.html"
+    },
+    {
+        "duration": "17.504081000000003",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/FishIETank/Default.html"
+    },
+    {
+        "duration": "17.95134987878788",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/LetItSnow/"
+    },
+    {
+        "duration": "16.470730929292927",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html"
+    },
+    {
+        "duration": "19.22718823232323",
+        "name": "smoothness.tough_canvas_cases/http://jarrodoverson.com/static/demos/particleSystem/"
+    },
+    {
+        "duration": "16.903436414141424",
+        "name": "smoothness.tough_canvas_cases/http://mix10k.visitmix.com/Entry/Details/169"
+    },
+    {
+        "duration": "16.407308444444446",
+        "name": "smoothness.tough_canvas_cases/http://runway.countlessprojects.com/prototype/performance_test.html"
+    },
+    {
+        "duration": "24.032517525252526",
+        "name": "smoothness.tough_canvas_cases/http://spielzeugz.de/html5/liquid-particles.html"
+    },
+    {
+        "duration": "17.478860979797975",
+        "name": "smoothness.tough_canvas_cases/http://themaninblue.com/experiment/AnimationBenchmark/canvas/"
+    },
+    {
+        "duration": "17.128401707070708",
+        "name": "smoothness.tough_canvas_cases/http://www.chiptune.com/starfield/starfield.html"
+    },
+    {
+        "duration": "17.21518722222222",
+        "name": "smoothness.tough_canvas_cases/http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html"
+    },
+    {
+        "duration": "2.2492408800000002E-4",
+        "name": "smoothness.tough_canvas_cases/http://www.effectgames.com/demos/canvascycle/"
+    },
+    {
+        "duration": "2.45682398E-4",
+        "name": "smoothness.tough_canvas_cases/http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html"
+    },
+    {
+        "duration": "16.74103115151515",
+        "name": "smoothness.tough_canvas_cases/http://www.megidish.net/awjs/"
+    },
+    {
+        "duration": "2.2292137066666666E-4",
+        "name": "smoothness.tough_canvas_cases/http://www.smashcat.org/av/canvas_test/"
+    },
+    {
+        "duration": "19.08585865656565",
+        "name": "smoothness.tough_canvas_cases/jarro_doverson"
+    },
+    {
+        "duration": "18.113409121212122",
+        "name": "smoothness.tough_canvas_cases/man_in_blue"
+    },
+    {
+        "duration": "30.72776868686868",
+        "name": "smoothness.tough_canvas_cases/many_images"
+    },
+    {
+        "duration": "16.756803464646467",
+        "name": "smoothness.tough_canvas_cases/megi_dish"
+    },
+    {
+        "duration": "48.07313442424242",
+        "name": "smoothness.tough_canvas_cases/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "17.823551111111115",
+        "name": "smoothness.tough_canvas_cases/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "19.662436939393938",
+        "name": "smoothness.tough_canvas_cases/microsoft_snow"
+    },
+    {
+        "duration": "16.48717682828283",
+        "name": "smoothness.tough_canvas_cases/microsoft_speed_reading"
+    },
+    {
+        "duration": "61.68532580808078",
+        "name": "smoothness.tough_canvas_cases/microsoft_tweet_map"
+    },
+    {
+        "duration": "20.42997503030303",
+        "name": "smoothness.tough_canvas_cases/microsoft_video_city"
+    },
+    {
+        "duration": "28.228900767676762",
+        "name": "smoothness.tough_canvas_cases/microsoft_worker_fountains"
+    },
+    {
+        "duration": "16.904895929292927",
+        "name": "smoothness.tough_canvas_cases/mix_10k"
+    },
+    {
+        "duration": "29.744754707070715",
+        "name": "smoothness.tough_canvas_cases/put_get_image_data"
+    },
+    {
+        "duration": "16.37536789393939",
+        "name": "smoothness.tough_canvas_cases/runway"
+    },
+    {
+        "duration": "20.529444808080815",
+        "name": "smoothness.tough_canvas_cases/spielzeugz"
+    },
+    {
+        "duration": "25.716674424242406",
+        "name": "smoothness.tough_canvas_cases/stroke_shapes"
+    },
+    {
+        "duration": "17.870397989898994",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-animation-no-clear.html"
+    },
+    {
+        "duration": "20.84863612121212",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-font-cycler.html"
+    },
+    {
+        "duration": "1.3362566533333333E-4",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=image_with_shadow&back=image"
+    },
+    {
+        "duration": "31.953550828282825",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=text&back=white&ball_count=15"
+    },
+    {
+        "duration": "26.332379575757585",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas_toBlob.html"
+    },
+    {
+        "duration": "41.49904451515152",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_clipped_rectangles.html"
+    },
+    {
+        "duration": "33.60130035353535",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_gradient_circles.html"
+    },
+    {
+        "duration": "41.72820435353536",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_png_images.html"
+    },
+    {
+        "duration": "50.62472780808082",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_svg_images.html"
+    },
+    {
+        "duration": "33.87958452525253",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_arcs.html"
+    },
+    {
+        "duration": "49.643564454545455",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_lines.html"
+    },
+    {
+        "duration": "26.23793268686869",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/fill_shapes.html"
+    },
+    {
+        "duration": "24.234052030303044",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/put_get_image_data.html"
+    },
+    {
+        "duration": "34.74262668686871",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/stroke_shapes.html"
+    },
+    {
+        "duration": "24.368990686868695",
+        "name": "smoothness.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "24.476433020202016",
+        "name": "smoothness.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "27.927886444444443",
+        "name": "smoothness.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "41.10739021212121",
+        "name": "smoothness.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "27.89571975510204",
+        "name": "smoothness.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "26.20229207142857",
+        "name": "smoothness.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "27.828183581632665",
+        "name": "smoothness.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "41.359733081632655",
+        "name": "smoothness.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "23.73477439285714",
+        "name": "smoothness.tough_image_decode_cases/cats_unscaled"
+    },
+    {
+        "duration": "11.068001452380951",
+        "name": "smoothness.tough_image_decode_cases/cats_viewport_width"
+    },
+    {
+        "duration": "23.734112818181814",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-unscaled.html"
+    },
+    {
+        "duration": "11.157426429292927",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-viewport-width.html"
+    },
+    {
+        "duration": "35.27726077777778",
+        "name": "smoothness.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "36.32778654545453",
+        "name": "smoothness.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "21.910391202020204",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "22.26538288888889",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "35.21587873737372",
+        "name": "smoothness.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "32.67885276767677",
+        "name": "smoothness.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "21.851430060606052",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "22.2359201919192",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "21.476964363636366",
+        "name": "smoothness.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "23.681090303030302",
+        "name": "smoothness.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "19.193125434343436",
+        "name": "smoothness.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "17.450772141414152",
+        "name": "smoothness.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "19.921330212121227",
+        "name": "smoothness.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "24.774779313131305",
+        "name": "smoothness.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "17.134176454545454",
+        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "20.936147104651162",
+        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "22.961653878787867",
+        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "22.203685202020203",
+        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "20.37794412121212",
+        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "22.998090636363624",
+        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "18.809650565656572",
+        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "25.031618969696964",
+        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "20.082809030303025",
+        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "18.388080444444444",
+        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "30.73395774747475",
+        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "19.121608424242428",
+        "name": "smoothness.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "2.33983994E-4",
+        "name": "smoothness.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "22.01673489898991",
+        "name": "smoothness.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "23.714279919191913",
+        "name": "smoothness.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "17.220491838383843",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "22.631971979797978",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "20.543172535353534",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "20.667358272727274",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "24.829278868686856",
+        "name": "smoothness.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "30.866318454545453",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "20.223837595959598",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "18.381358868686867",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "17.220248080808084",
+        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "19.692936747474743",
+        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "22.33948703030303",
+        "name": "smoothness.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "22.386540363636364",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "24.698164777777777",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "20.49835184848485",
+        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "2.324899033333333E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "1.2925466E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "1.1866887373333333E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "1.1485417680000001E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "1.110712682E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "1.1154810506666667E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "1.1132558173333333E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "1.1425018226666664E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "1.0898908006666667E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "1.0881423946666666E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "30.84555391919191",
+        "name": "smoothness.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.255232282828285",
+        "name": "smoothness.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.23452013131313",
+        "name": "smoothness.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "15.697796888888895",
+        "name": "smoothness.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.365179843434346",
+        "name": "smoothness.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.564407212121207",
+        "name": "smoothness.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.109924989898989",
+        "name": "smoothness.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.757735565656564",
+        "name": "smoothness.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.539803606060609",
+        "name": "smoothness.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.38142044444445",
+        "name": "smoothness.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "19.634155747474757",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.651910404040414",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "37.880975848484866",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "42.1759435909091",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "40.86634385858586",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.85272593434342",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "32.05350328787878",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "19.20550169696969",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "22.687323454545453",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "24.392148510101002",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "18.295544959595958",
+        "name": "smoothness.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "18.41864922222222",
+        "name": "smoothness.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "16.20801073737373",
+        "name": "smoothness.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "15.055731767676761",
+        "name": "smoothness.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "13.709007010101011",
+        "name": "smoothness.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.15349633838384",
+        "name": "smoothness.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "12.729774555555558",
+        "name": "smoothness.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.566547747474745",
+        "name": "smoothness.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.287887848484843",
+        "name": "smoothness.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.118003131313133",
+        "name": "smoothness.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "38.74019130985915",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation"
+    },
+    {
+        "duration": "37.8532585151515",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation.html"
+    },
+    {
+        "duration": "26.804211394366202",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "29.87951229292929",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient.html"
+    },
+    {
+        "duration": "63.928153563380256",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads"
+    },
+    {
+        "duration": "65.5411794949495",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads.html"
+    },
+    {
+        "duration": "32.11121335211268",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads"
+    },
+    {
+        "duration": "37.1328640909091",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads.html"
+    },
+    {
+        "duration": "27.07348691549295",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads"
+    },
+    {
+        "duration": "33.716330090909096",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads.html"
+    },
+    {
+        "duration": "31.821330521126757",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads"
+    },
+    {
+        "duration": "42.54565035353536",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads.html"
+    },
+    {
+        "duration": "34.58764918181818",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.76942957575757",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.789361909090907",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.767715454545453",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.777170989899002",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.834712303030297",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.91957098989899",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.76633833333333",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.798351363636375",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.765718303030305",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.82824261616161",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swf.webglbeta.html"
+    },
+    {
+        "duration": "4.855097352525252",
+        "name": "smoothness.tough_webgl_cases/animometer_webgl"
+    },
+    {
+        "duration": "4.867814159595961",
+        "name": "smoothness.tough_webgl_cases/aquarium"
+    },
+    {
+        "duration": "4.865511153535354",
+        "name": "smoothness.tough_webgl_cases/aquarium_20k"
+    },
+    {
+        "duration": "4.863457750505051",
+        "name": "smoothness.tough_webgl_cases/blob"
+    },
+    {
+        "duration": "4.868278211111112",
+        "name": "smoothness.tough_webgl_cases/dynamic_cube_map"
+    },
+    {
+        "duration": "4.877543083838382",
+        "name": "smoothness.tough_webgl_cases/earth"
+    },
+    {
+        "duration": "4.992786207070707",
+        "name": "smoothness.tough_webgl_cases/http://kenrussell.github.io/webgl-animometer/Animometer/tests/3d/webgl.html"
+    },
+    {
+        "duration": "4.9928551292929315",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/aquarium/aquarium.html"
+    },
+    {
+        "duration": "5.00352082828283",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/blob/blob.html"
+    },
+    {
+        "duration": "4.998449782828284",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/dynamic-cubemap/dynamic-cubemap.html"
+    },
+    {
+        "duration": "17.144401489898996",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html"
+    },
+    {
+        "duration": "4.997805497979797",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/particles/index.html"
+    },
+    {
+        "duration": "4.998278672727272",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/san-angeles/index.html"
+    },
+    {
+        "duration": "4.996444042424244",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/Earth.html"
+    },
+    {
+        "duration": "4.998675015151516",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/ManyPlanetsDeep.html"
+    },
+    {
+        "duration": "4.891565857142857",
+        "name": "smoothness.tough_webgl_cases/ken_russell"
+    },
+    {
+        "duration": "4.873167481818181",
+        "name": "smoothness.tough_webgl_cases/many_planets_deep"
+    },
+    {
+        "duration": "17.166559757575758",
+        "name": "smoothness.tough_webgl_cases/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "4.8655683050505045",
+        "name": "smoothness.tough_webgl_cases/particles"
+    },
+    {
+        "duration": "4.875814477777777",
+        "name": "smoothness.tough_webgl_cases/san_angeles"
+    },
+    {
+        "duration": "4.9372752",
+        "name": "smoothness.tough_webgl_cases/sans_angeles"
+    },
+    {
+        "duration": "69.21453461616159",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "69.50820274747474",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "114.47730214141413",
+        "name": "speedometer2-future/Speedometer2"
+    },
+    {
+        "duration": "120.75483155555554",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "26.469380828282834",
+        "name": "system_health.common_mobile/background:media:imgur"
+    },
+    {
+        "duration": "2.4916330933333336E-4",
+        "name": "system_health.common_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "28.33209317171718",
+        "name": "system_health.common_mobile/background:search:google"
+    },
+    {
+        "duration": "35.84161181818181",
+        "name": "system_health.common_mobile/background:social:facebook"
+    },
+    {
+        "duration": "39.474799343434334",
+        "name": "system_health.common_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "2.5792121933333333E-4",
+        "name": "system_health.common_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "2.5533040200000003E-4",
+        "name": "system_health.common_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "97.24891560606068",
+        "name": "system_health.common_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "133.19704040404034",
+        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "92.36383332323233",
+        "name": "system_health.common_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "121.8597344141414",
+        "name": "system_health.common_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "118.95535771717174",
+        "name": "system_health.common_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "74.65785477777779",
+        "name": "system_health.common_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.50076548E-4",
+        "name": "system_health.common_mobile/browse:news:globo"
+    },
+    {
+        "duration": "64.4499080707071",
+        "name": "system_health.common_mobile/browse:news:qq"
+    },
+    {
+        "duration": "63.23611437373737",
+        "name": "system_health.common_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.5045077066666665E-4",
+        "name": "system_health.common_mobile/browse:news:toi"
+    },
+    {
+        "duration": "63.50411984848485",
+        "name": "system_health.common_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "82.1443829090909",
+        "name": "system_health.common_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "83.81999942424244",
+        "name": "system_health.common_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.5200843733333336E-4",
+        "name": "system_health.common_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "41.55040456565656",
+        "name": "system_health.common_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "81.02491587878788",
+        "name": "system_health.common_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "156.47066373737377",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "108.00813739393936",
+        "name": "system_health.common_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "97.26331486868685",
+        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "117.97390429292932",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "63.46409833333336",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "83.19648487878787",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "57.25562122222221",
+        "name": "system_health.common_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "23.118257414141425",
+        "name": "system_health.common_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "29.06256076767676",
+        "name": "system_health.common_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "26.92757637373737",
+        "name": "system_health.common_mobile/load:games:lazors"
+    },
+    {
+        "duration": "1.4427502933333334E-4",
+        "name": "system_health.common_mobile/load:games:spychase"
+    },
+    {
+        "duration": "29.508417494949487",
+        "name": "system_health.common_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "26.212485040404033",
+        "name": "system_health.common_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "26.266638787878772",
+        "name": "system_health.common_mobile/load:media:google_images"
+    },
+    {
+        "duration": "25.75005727272728",
+        "name": "system_health.common_mobile/load:media:imgur"
+    },
+    {
+        "duration": "2.4612744599999996E-4",
+        "name": "system_health.common_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "25.71263809090909",
+        "name": "system_health.common_mobile/load:media:youtube"
+    },
+    {
+        "duration": "40.26818448484848",
+        "name": "system_health.common_mobile/load:news:cnn"
+    },
+    {
+        "duration": "33.19329683838384",
+        "name": "system_health.common_mobile/load:news:irctc"
+    },
+    {
+        "duration": "30.19276936363636",
+        "name": "system_health.common_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "25.241976191919193",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "26.42459737373737",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "28.482167858585864",
+        "name": "system_health.common_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "26.08056406060605",
+        "name": "system_health.common_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "25.06326861616162",
+        "name": "system_health.common_mobile/load:search:baidu"
+    },
+    {
+        "duration": "26.490467323232323",
+        "name": "system_health.common_mobile/load:search:ebay"
+    },
+    {
+        "duration": "23.953456828282835",
+        "name": "system_health.common_mobile/load:search:google"
+    },
+    {
+        "duration": "25.75573505050504",
+        "name": "system_health.common_mobile/load:search:taobao"
+    },
+    {
+        "duration": "24.013014696969694",
+        "name": "system_health.common_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "25.13947384848485",
+        "name": "system_health.common_mobile/load:search:yandex"
+    },
+    {
+        "duration": "25.11889582828283",
+        "name": "system_health.common_mobile/load:social:twitter"
+    },
+    {
+        "duration": "24.664139010101003",
+        "name": "system_health.common_mobile/load:tools:docs"
+    },
+    {
+        "duration": "8.312702166666668E-4",
+        "name": "system_health.common_mobile/load:tools:drive"
+    },
+    {
+        "duration": "27.45279437373737",
+        "name": "system_health.common_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.57603328E-4",
+        "name": "system_health.common_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "25.778225262626265",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "34.27132583838384",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "2.5719006866666667E-4",
+        "name": "system_health.common_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "157.0115794949495",
+        "name": "system_health.common_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "24.950466919191925",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "41.39592107744107",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "26.553691841750844",
+        "name": "system_health.memory_mobile/background:search:google"
+    },
+    {
+        "duration": "28.965924878787874",
+        "name": "system_health.memory_mobile/background:social:facebook"
+    },
+    {
+        "duration": "34.15122650841751",
+        "name": "system_health.memory_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "1.4484193600000002E-4",
+        "name": "system_health.memory_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "2.624829613333334E-4",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "79.19903031986533",
+        "name": "system_health.memory_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "49.49670527609428",
+        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "70.87360436363635",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "86.01948089562293",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "82.10731703703703",
+        "name": "system_health.memory_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "54.198361979797994",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.59131156E-4",
+        "name": "system_health.memory_mobile/browse:news:globo"
+    },
+    {
+        "duration": "51.547836895622886",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "53.65276733670032",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.592563633333334E-4",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "49.132206959595955",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "57.09886138047138",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "63.04360175757575",
+        "name": "system_health.memory_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.634843177777778E-4",
+        "name": "system_health.memory_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "33.72824394612793",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "62.00137185185184",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "81.2921931010101",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "82.69070722558924",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "74.18233401346801",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "74.43590336026934",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "52.185266218855226",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "59.06239869360268",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "47.25716223569024",
+        "name": "system_health.memory_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "22.136639282828288",
+        "name": "system_health.memory_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "23.129659444444446",
+        "name": "system_health.memory_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "22.293670030303023",
+        "name": "system_health.memory_mobile/load:games:lazors"
+    },
+    {
+        "duration": "1.5494028688888892E-4",
+        "name": "system_health.memory_mobile/load:games:spychase"
+    },
+    {
+        "duration": "27.003550333333333",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "24.077546942760947",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "24.39637027609428",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "23.290523929292934",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "2.614021308888889E-4",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "24.019372164983167",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "33.70609407744108",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "26.06159771717171",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "26.967122861952856",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "23.415041151515137",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "24.724324457912456",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "25.044293202020203",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "24.377383303030303",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "23.546840417508413",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "23.08629826936028",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "22.927925437710435",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "23.611972622895617",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "22.891919622895625",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "23.39960816835017",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "23.493542801346806",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "23.230386919191904",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "8.211135897777778E-4",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "24.847156427609438",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.5316344355555555E-4",
+        "name": "system_health.memory_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "24.312896427609427",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "27.985219461279456",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "0.0010916603988888889",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "1.555866666666667E-4",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "25.636666328282818",
+        "name": "system_health.webview_startup/load:chrome:blank"
+    },
+    {
+        "duration": "36.5982118888889",
+        "name": "thread_times.key_idle_power_cases/animated-gif.html"
+    },
+    {
+        "duration": "43.90363557575758",
+        "name": "thread_times.key_idle_power_cases/blank.html"
+    },
+    {
+        "duration": "40.5384180909091",
+        "name": "thread_times.key_idle_power_cases/css-animation.html"
+    },
+    {
+        "duration": "37.68544871428571",
+        "name": "thread_times.key_idle_power_cases/idle_power_animated_gif"
+    },
+    {
+        "duration": "43.55763857142857",
+        "name": "thread_times.key_idle_power_cases/idle_power_blank"
+    },
+    {
+        "duration": "44.242799",
+        "name": "thread_times.key_idle_power_cases/idle_power_css_animation"
+    },
+    {
+        "duration": "50.20851814285715",
+        "name": "thread_times.key_idle_power_cases/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "139.8266977142857",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "49.575284",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timetout"
+    },
+    {
+        "duration": "43.077548929292924",
+        "name": "thread_times.key_idle_power_cases/request-animation-frame.html"
+    },
+    {
+        "duration": "42.88047085858584",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html"
+    },
+    {
+        "duration": "121.58675037373735",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html (Long Idle)"
+    },
+    {
+        "duration": "34.00549386868688",
+        "name": "thread_times.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "30.65997578787879",
+        "name": "thread_times.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "32.93866869696971",
+        "name": "thread_times.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "24.36883621212121",
+        "name": "thread_times.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "23.1374315050505",
+        "name": "thread_times.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "45.744822166666665",
+        "name": "thread_times.key_noop_cases/no_op_raf"
+    },
+    {
+        "duration": "35.318775464646485",
+        "name": "thread_times.key_noop_cases/no_op_raf.html"
+    },
+    {
+        "duration": "19.595389499999996",
+        "name": "thread_times.key_noop_cases/no_op_scroll"
+    },
+    {
+        "duration": "18.33584944444444",
+        "name": "thread_times.key_noop_cases/no_op_scroll.html"
+    },
+    {
+        "duration": "18.3430875",
+        "name": "thread_times.key_noop_cases/no_op_settimeout"
+    },
+    {
+        "duration": "16.88742875757576",
+        "name": "thread_times.key_noop_cases/no_op_settimeout.html"
+    },
+    {
+        "duration": "22.7364395",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler"
+    },
+    {
+        "duration": "19.994627959595967",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler.html"
+    },
+    {
+        "duration": "20.93835429166666",
+        "name": "thread_times.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "23.390282305555555",
+        "name": "thread_times.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "58.477838972222216",
+        "name": "thread_times.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "20.732643097222226",
+        "name": "thread_times.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "34.08534915277778",
+        "name": "thread_times.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "48.063985708333334",
+        "name": "thread_times.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "38.54580147474747",
+        "name": "thread_times.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "22.777486805555558",
+        "name": "thread_times.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "20.35134744444445",
+        "name": "thread_times.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "20.660155583333324",
+        "name": "thread_times.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "25.49652506944445",
+        "name": "thread_times.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "38.89712899999998",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "17.464597606060604",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "16.844076525252525",
+        "name": "thread_times.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "20.227256848484853",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "19.992789979797983",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "21.029195616161623",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "33.07858393939395",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "71.60312666666667",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "30.22550461616162",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "22.404953979797973",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "22.522808727272725",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "41.14556666666668",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "47.29947487878785",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "33.677943050505064",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "22.135680858585854",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "17.467098909090904",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "5.106925973333334E-4",
+        "name": "thread_times.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "4.671096793333334E-4",
+        "name": "thread_times.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "28.88669437373737",
+        "name": "thread_times.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "20.46479870707071",
+        "name": "thread_times.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "4.961808540000001E-4",
+        "name": "thread_times.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "20.00427605050504",
+        "name": "thread_times.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "4.89966078E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "32.18455290909091",
+        "name": "thread_times.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "4.352092720000001E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "24.623007262626274",
+        "name": "thread_times.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "27.053650694444446",
+        "name": "thread_times.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "25.63730691919192",
+        "name": "thread_times.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "19.17058593055556",
+        "name": "thread_times.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "17.950668323232325",
+        "name": "thread_times.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "40.65771652777777",
+        "name": "thread_times.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "32.61724236111111",
+        "name": "thread_times.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "2.7599334793333333E-4",
+        "name": "thread_times.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "20.138612333333334",
+        "name": "thread_times.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "29.860017958333344",
+        "name": "thread_times.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "17.246857958333337",
+        "name": "thread_times.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "22.191359999999992",
+        "name": "thread_times.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "32.945232874999995",
+        "name": "thread_times.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "31.18508505050505",
+        "name": "thread_times.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "18.011306888888882",
+        "name": "thread_times.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "35.024399944444454",
+        "name": "thread_times.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "29.63007061111112",
+        "name": "thread_times.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "21.444326402777776",
+        "name": "thread_times.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "23.317563416666662",
+        "name": "thread_times.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "23.09871281944444",
+        "name": "thread_times.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "29.16282105555555",
+        "name": "thread_times.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "22.093607527777774",
+        "name": "thread_times.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "46.20374585858587",
+        "name": "thread_times.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "41.4823663838384",
+        "name": "thread_times.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "27.703892636363644",
+        "name": "thread_times.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "44.78596618181819",
+        "name": "thread_times.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "28.875437131313117",
+        "name": "thread_times.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "20.839882717211744",
+        "name": "thread_times.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "46.31770837373737",
+        "name": "thread_times.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "28.704782666666677",
+        "name": "thread_times.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "36.02044085714285",
+        "name": "thread_times.tough_compositor_cases/cc_poster_circle"
+    },
+    {
+        "duration": "36.50290114285714",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "32.007288714285714",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_text_only"
+    },
+    {
+        "duration": "50.48470430303032",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/beqojupo/1/quiet?JS_FULL_SCREEN_INVALIDATION"
+    },
+    {
+        "duration": "132.99944518181815",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/covoqi/1/quiet?NEW_TILINGS"
+    },
+    {
+        "duration": "27.5409958080808",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/falefice/1/quiet?CC_POSTER_CIRCLE"
+    },
+    {
+        "duration": "30.97633696969698",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/giqafofe/1/quiet?JS_POSTER_CIRCLE"
+    },
+    {
+        "duration": "25.65074533333332",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/jevibahi/4/quiet?JS_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "29.9495028989899",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/pixavefe/1/quiet?CC_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "25.474100212121225",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/wixadinu/2/quiet?JS_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "25.283476484848496",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/yakagevo/1/quiet?CC_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "141.34706657142857",
+        "name": "thread_times.tough_compositor_cases/js_full_screen_invalidation"
+    },
+    {
+        "duration": "59.27861728571428",
+        "name": "thread_times.tough_compositor_cases/js_poster_circle"
+    },
+    {
+        "duration": "37.82645485714285",
+        "name": "thread_times.tough_compositor_cases/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "31.214967714285713",
+        "name": "thread_times.tough_compositor_cases/js_scroll_text_only"
+    },
+    {
+        "duration": "141.64380171428573",
+        "name": "thread_times.tough_compositor_cases/new_tilings"
+    },
+    {
+        "duration": "2.312342306666667E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "1.2842814119999997E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "1.2100537599999999E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "1.1835098239999999E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "1.1366208399999997E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "1.163959504E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "1.1283556553333334E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "1.1272430426666664E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "1.0903676293333333E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "1.0989507000000001E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "33.581225282828285",
+        "name": "thread_times.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.623547939393934",
+        "name": "thread_times.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "19.17534841414141",
+        "name": "thread_times.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "17.053752292929296",
+        "name": "thread_times.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.923743631313133",
+        "name": "thread_times.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.768868515151514",
+        "name": "thread_times.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "12.829701267676771",
+        "name": "thread_times.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.511615555555553",
+        "name": "thread_times.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "11.920062343434337",
+        "name": "thread_times.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "11.765507722222218",
+        "name": "thread_times.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "24.51823775757575",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "27.18356433333332",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "32.64378217171718",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "30.351844747474754",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "24.1743983939394",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "19.101184661616163",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.959840641414136",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "18.09726124747475",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.370968075757567",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "15.264811954545449",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "17.850535696969697",
+        "name": "thread_times.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "18.213654898989905",
+        "name": "thread_times.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "15.882567707070699",
+        "name": "thread_times.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "14.440536883838377",
+        "name": "thread_times.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "12.910251641414144",
+        "name": "thread_times.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "12.230784277777776",
+        "name": "thread_times.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "11.791114252525256",
+        "name": "thread_times.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "11.482864171717177",
+        "name": "thread_times.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "11.126070959595959",
+        "name": "thread_times.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "10.99019475252525",
+        "name": "thread_times.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "15.731479595959593",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "17.811616924242426",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "12.740592757575753",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "12.937504853535359",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "20.516132050505053",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "13.552476934343439",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "18.443251515151513",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "26.301600525252525",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "15.336385267676766",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "2.586046853333333E-4",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "2.51817704E-4",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "102.71952033333332",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "64.39940128282825",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "101.38447865656566",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "133.89249265656568",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "165.45306414141407",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "86.11437060606058",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.4087359000000002E-4",
+        "name": "v8.browsing_mobile-future/browse:news:globo"
+    },
+    {
+        "duration": "69.17748894949497",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "63.99540587878791",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "2.47033436E-4",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "67.62954745454543",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "118.3736177575758",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "99.37061205050504",
+        "name": "v8.browsing_mobile-future/browse:shopping:avito"
+    },
+    {
+        "duration": "2.3860931533333334E-4",
+        "name": "v8.browsing_mobile-future/browse:shopping:flipkart"
+    },
+    {
+        "duration": "46.22568054545455",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "9.739081046666667E-4",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "278.64017777777775",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "133.36594681818184",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "119.31061572727273",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "147.6694046464646",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "63.08013072727274",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "98.83888836363634",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "60.31170652525251",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "2.5599797666666664E-4",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "2.540429406666667E-4",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "101.09133180808082",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "71.59994016161617",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "98.6664205858586",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "129.85849317171713",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "153.18453616161617",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "83.95058894949496",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.53795878E-4",
+        "name": "v8.browsing_mobile/browse:news:globo"
+    },
+    {
+        "duration": "68.95563233333336",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "64.26813313131314",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.6486714799999996E-4",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "67.77554909090912",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "121.39897834343432",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "97.29015365656564",
+        "name": "v8.browsing_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.620697026666667E-4",
+        "name": "v8.browsing_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "45.598819020202015",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "87.68383798989896",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "297.9618412121212",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "132.9776987777778",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "117.70116571717172",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "152.78483515151515",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "63.14170592929293",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "99.36683693939393",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "58.650499585858604",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "9.699916771043771",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "27.79364279461279",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "9.774484471380472",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "10.519887565656571",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "19.362200698653197",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "17.827927021885525",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "21.94456090909091",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "27.879920464646478",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "37.42375642424243",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "37.423299020202016",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "37.40977239393938",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "24.49388172727273",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "46.682184020202044",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "71.75924163636361",
+        "name": "webrtc/pause_play_peerconnections"
+    }
+]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_story_timing.json b/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_story_timing.json
new file mode 100644
index 0000000..06935a4
--- /dev/null
+++ b/tools/perf/core/shard_maps/timing_data/android_nexus6_webview_story_timing.json
@@ -0,0 +1,7554 @@
+[
+    {
+        "duration": "43.942960303030304",
+        "name": "blink_perf.bindings/append-child.html"
+    },
+    {
+        "duration": "13.394947444444446",
+        "name": "blink_perf.bindings/create-element.html"
+    },
+    {
+        "duration": "12.30512832323233",
+        "name": "blink_perf.bindings/document-implementation.html"
+    },
+    {
+        "duration": "12.053904055555558",
+        "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
+    },
+    {
+        "duration": "12.564388398989887",
+        "name": "blink_perf.bindings/first-child.html"
+    },
+    {
+        "duration": "20.35160706060606",
+        "name": "blink_perf.bindings/gc-forest.html"
+    },
+    {
+        "duration": "39.51002441414141",
+        "name": "blink_perf.bindings/gc-mini-tree.html"
+    },
+    {
+        "duration": "80.48797853535355",
+        "name": "blink_perf.bindings/gc-tree.html"
+    },
+    {
+        "duration": "11.75855020707071",
+        "name": "blink_perf.bindings/get-attribute-rare.html"
+    },
+    {
+        "duration": "12.905033984848483",
+        "name": "blink_perf.bindings/get-attribute.html"
+    },
+    {
+        "duration": "12.232629489898986",
+        "name": "blink_perf.bindings/get-element-by-id.html"
+    },
+    {
+        "duration": "12.499352333333336",
+        "name": "blink_perf.bindings/get-elements-by-tag-name.html"
+    },
+    {
+        "duration": "12.40640324242424",
+        "name": "blink_perf.bindings/id-getter.html"
+    },
+    {
+        "duration": "11.947000873737386",
+        "name": "blink_perf.bindings/id-setter.html"
+    },
+    {
+        "duration": "14.18574906565656",
+        "name": "blink_perf.bindings/indexed-getter.html"
+    },
+    {
+        "duration": "12.092948272727272",
+        "name": "blink_perf.bindings/insert-before.html"
+    },
+    {
+        "duration": "12.447703681818183",
+        "name": "blink_perf.bindings/named-property-enumerator.html"
+    },
+    {
+        "duration": "180.96340888888884",
+        "name": "blink_perf.bindings/node-list-access.html"
+    },
+    {
+        "duration": "13.025918186868687",
+        "name": "blink_perf.bindings/node-type.html"
+    },
+    {
+        "duration": "6.8370067717171725",
+        "name": "blink_perf.bindings/post-message.html"
+    },
+    {
+        "duration": "12.010729732323233",
+        "name": "blink_perf.bindings/sequence-conversion-array.html"
+    },
+    {
+        "duration": "12.513540621212124",
+        "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
+    },
+    {
+        "duration": "6.479066064646464",
+        "name": "blink_perf.bindings/serialize-array.html"
+    },
+    {
+        "duration": "5.7927695919191935",
+        "name": "blink_perf.bindings/serialize-long-string.html"
+    },
+    {
+        "duration": "12.675356358585868",
+        "name": "blink_perf.bindings/serialize-map.html"
+    },
+    {
+        "duration": "5.798464120202022",
+        "name": "blink_perf.bindings/serialize-nested-array.html"
+    },
+    {
+        "duration": "11.832586075757579",
+        "name": "blink_perf.bindings/set-attribute-rare.html"
+    },
+    {
+        "duration": "11.982852479797979",
+        "name": "blink_perf.bindings/set-attribute.html"
+    },
+    {
+        "duration": "35.238582181818174",
+        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
+    },
+    {
+        "duration": "35.29666255555554",
+        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
+    },
+    {
+        "duration": "12.764137136363638",
+        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
+    },
+    {
+        "duration": "12.710473883838379",
+        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
+    },
+    {
+        "duration": "12.208681398989901",
+        "name": "blink_perf.bindings/typed-array-construct-from-array.html"
+    },
+    {
+        "duration": "13.544832015151504",
+        "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
+    },
+    {
+        "duration": "12.308594348484851",
+        "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
+    },
+    {
+        "duration": "12.314057499999999",
+        "name": "blink_perf.bindings/typed-array-set-from-typed.html"
+    },
+    {
+        "duration": "12.545830353535354",
+        "name": "blink_perf.bindings/undefined-first-child.html"
+    },
+    {
+        "duration": "12.40951270707071",
+        "name": "blink_perf.bindings/undefined-get-element-by-id.html"
+    },
+    {
+        "duration": "12.459622898989899",
+        "name": "blink_perf.bindings/undefined-id-getter.html"
+    },
+    {
+        "duration": "67.31250263636363",
+        "name": "blink_perf.canvas/createImageBitmapFromImageData.html"
+    },
+    {
+        "duration": "11.311998974747478",
+        "name": "blink_perf.canvas/draw-dynamic-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "19.35015356565657",
+        "name": "blink_perf.canvas/draw-dynamic-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "6.242777323232322",
+        "name": "blink_perf.canvas/draw-hw-accelerated-canvas-2d-to-sw-canvas-2d.html"
+    },
+    {
+        "duration": "0.0014077084499999996",
+        "name": "blink_perf.canvas/draw-static-canvas-2d-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "7.299512364646464",
+        "name": "blink_perf.canvas/draw-static-webgl-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "13.009443727272727",
+        "name": "blink_perf.canvas/draw-video-to-hw-accelerated-canvas-2d.html"
+    },
+    {
+        "duration": "16.571485979797988",
+        "name": "blink_perf.canvas/drawimage-not-pixelaligned.html"
+    },
+    {
+        "duration": "14.26683398989899",
+        "name": "blink_perf.canvas/drawimage.html"
+    },
+    {
+        "duration": "24.749593777777783",
+        "name": "blink_perf.canvas/getImageData.html"
+    },
+    {
+        "duration": "12.226293949494949",
+        "name": "blink_perf.canvas/getImageDataColorManaged.html"
+    },
+    {
+        "duration": "0.001095056535",
+        "name": "blink_perf.canvas/putImageData.html"
+    },
+    {
+        "duration": "12.831838989898985",
+        "name": "blink_perf.canvas/toBlob_duration.html"
+    },
+    {
+        "duration": "11.470634434343438",
+        "name": "blink_perf.canvas/toBlob_duration_jpeg.html"
+    },
+    {
+        "duration": "6.734448503030303",
+        "name": "blink_perf.canvas/transferFromImageBitmap.html"
+    },
+    {
+        "duration": "10.048406707070706",
+        "name": "blink_perf.canvas/upload-canvas-2d-to-texture.html"
+    },
+    {
+        "duration": "14.77631378787879",
+        "name": "blink_perf.canvas/upload-video-to-sub-texture.html"
+    },
+    {
+        "duration": "8.525986977777778",
+        "name": "blink_perf.canvas/upload-video-to-texture.html"
+    },
+    {
+        "duration": "12.555097005050504",
+        "name": "blink_perf.canvas/upload-webgl-to-texture.html"
+    },
+    {
+        "duration": "60.97553877777779",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "14.062643570707074",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "14.193100732323229",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "14.584005999999988",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "12.633462616161609",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "10.069663853535353",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "10.17571938888889",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "10.233774489898993",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "10.110131439393939",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "10.09694655050505",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "10.020715191919198",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "9.976965727272727",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "9.963276373737376",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "10.137617262626264",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "10.066228929292931",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "12.634268146464647",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "10.27364399494949",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "10.130862055555555",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "10.047387661616161",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "10.144339520202017",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "10.097831277777779",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "10.123408343434342",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "19.527703616161613",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "17.677569626262624",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "21.1179146969697",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "10.783239343434342",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "11.394047727272726",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "12.60903872727273",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "13.887141343434338",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "17.344779151515162",
+        "name": "blink_perf.css/SelectorCountScaling.html"
+    },
+    {
+        "duration": "68.36463427272727",
+        "name": "blink_perf.dom/addRange.html"
+    },
+    {
+        "duration": "7.051914405050508",
+        "name": "blink_perf.dom/delete-in-password-field.html"
+    },
+    {
+        "duration": "16.558046656565658",
+        "name": "blink_perf.dom/div-editable.html"
+    },
+    {
+        "duration": "5.935726286868686",
+        "name": "blink_perf.dom/inner_html_with_selection.html"
+    },
+    {
+        "duration": "20.032328636363637",
+        "name": "blink_perf.dom/long-sibling-list.html"
+    },
+    {
+        "duration": "13.190432191919188",
+        "name": "blink_perf.dom/modify-element-classname.html"
+    },
+    {
+        "duration": "9.802533494949495",
+        "name": "blink_perf.dom/modify-element-id.html"
+    },
+    {
+        "duration": "9.997932146464645",
+        "name": "blink_perf.dom/modify-element-title.html"
+    },
+    {
+        "duration": "6.569706197979795",
+        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
+    },
+    {
+        "duration": "6.566110369696969",
+        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
+    },
+    {
+        "duration": "5.984462865656567",
+        "name": "blink_perf.dom/remove_child_with_selection.html"
+    },
+    {
+        "duration": "12.479527510101017",
+        "name": "blink_perf.dom/select-multiple-add.html"
+    },
+    {
+        "duration": "13.871315616161615",
+        "name": "blink_perf.dom/select-single-add.html"
+    },
+    {
+        "duration": "15.864596282828284",
+        "name": "blink_perf.dom/select-single-remove.html"
+    },
+    {
+        "duration": "12.186932606060608",
+        "name": "blink_perf.dom/textarea-dom.html"
+    },
+    {
+        "duration": "19.388387090909085",
+        "name": "blink_perf.dom/textarea-edit.html"
+    },
+    {
+        "duration": "49.67805711111111",
+        "name": "blink_perf.events/EventsDispatching.html"
+    },
+    {
+        "duration": "14.91565401515152",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+    },
+    {
+        "duration": "41.78022346464646",
+        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+    },
+    {
+        "duration": "66.6129070808081",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "91.74919485858587",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "20.255929545454542",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "48.50136874747475",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "15.176608131313133",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "30.15592324242424",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "19.25125954545453",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "45.40118993939394",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "29.528642717171717",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "6.36619474141414",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+    },
+    {
+        "duration": "11.897075914141414",
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "11.697023969696971",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "13.494116020202016",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "12.447767909090905",
+        "name": "blink_perf.layout/attach-inlines.html"
+    },
+    {
+        "duration": "14.503967969696973",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "12.666228176767675",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "13.446246792929289",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "12.117898893939394",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "12.398038136363635",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "12.41827040909091",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "8.548072813131315",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "6.722387919191921",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "14.86086898989899",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "15.089163303030308",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "13.63774395959596",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "13.793825777777776",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "13.123155621212124",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "15.701268606060605",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "12.650526353535355",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "12.693292696969687",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "11.540872196969698",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "40.987465868686876",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "41.62805734343437",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "25.77578618181817",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "15.080706398989902",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "18.50641823232323",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "10.47948765151515",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "10.569178176767677",
+        "name": "blink_perf.layout/floats_2_100_nested.html"
+    },
+    {
+        "duration": "19.00562603030303",
+        "name": "blink_perf.layout/floats_50_100.html"
+    },
+    {
+        "duration": "20.222175444444446",
+        "name": "blink_perf.layout/floats_50_100_nested.html"
+    },
+    {
+        "duration": "11.32093232323232",
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "41.83611047474748",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "41.96400471717171",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "41.661802191919186",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "7.295796614141413",
+        "name": "blink_perf.layout/latin-complex-text.html"
+    },
+    {
+        "duration": "11.044774252525253",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "11.98731736363636",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "40.11999132323232",
+        "name": "blink_perf.layout/line-layout-line-height.html"
+    },
+    {
+        "duration": "11.510764681818179",
+        "name": "blink_perf.layout/line-layout-repeat-append.html"
+    },
+    {
+        "duration": "13.331790439393943",
+        "name": "blink_perf.layout/line-layout.html"
+    },
+    {
+        "duration": "6.767684261616163",
+        "name": "blink_perf.layout/long-line-nowrap-collapse.html"
+    },
+    {
+        "duration": "6.681315615151518",
+        "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
+    },
+    {
+        "duration": "17.2766671010101",
+        "name": "blink_perf.layout/long-line-nowrap.html"
+    },
+    {
+        "duration": "13.222069893939395",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "11.101086060606058",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
+    },
+    {
+        "duration": "12.087744414141413",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
+    },
+    {
+        "duration": "13.346981722222226",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
+    },
+    {
+        "duration": "12.634966646464646",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
+    },
+    {
+        "duration": "14.807020287878794",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
+    },
+    {
+        "duration": "14.853163343434344",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "13.979964696969704",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "13.291318328282834",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "12.456553737373735",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "338.38207919191916",
+        "name": "blink_perf.layout/subtree-detaching.html"
+    },
+    {
+        "duration": "11.428856010101015",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "15.877096166666663",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "15.858048883838386",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "15.830736661616159",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "30.98517927272727",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "19.142569666666663",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "14.702826590909094",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "19.189112111111108",
+        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
+    },
+    {
+        "duration": "20.122796616161615",
+        "name": "blink_perf.owp_storage/idb-load-docs.html"
+    },
+    {
+        "duration": "37.81520647474748",
+        "name": "blink_perf.paint/appending-text.html"
+    },
+    {
+        "duration": "57.21147685858585",
+        "name": "blink_perf.paint/color-changes.html"
+    },
+    {
+        "duration": "31.442267626262634",
+        "name": "blink_perf.paint/complex-content-slow-scroll.html"
+    },
+    {
+        "duration": "39.88573983838385",
+        "name": "blink_perf.paint/containment-resize.html"
+    },
+    {
+        "duration": "38.54842847474748",
+        "name": "blink_perf.paint/fixed-and-many-layers-scroll.html"
+    },
+    {
+        "duration": "52.132009070707085",
+        "name": "blink_perf.paint/large-table-background-change-with-invisible-collapsed-borders.html"
+    },
+    {
+        "duration": "34.528790969696956",
+        "name": "blink_perf.paint/large-table-background-change-with-visible-collapsed-borders.html"
+    },
+    {
+        "duration": "56.22889441414141",
+        "name": "blink_perf.paint/large-table-background-change-with-zero-width-collapsed-borders.html"
+    },
+    {
+        "duration": "36.750871565656574",
+        "name": "blink_perf.paint/large-table-collapsed-border-change-with-backgrounds.html"
+    },
+    {
+        "duration": "42.54231307070706",
+        "name": "blink_perf.paint/large-table-collapsed-border-change-with-text.html"
+    },
+    {
+        "duration": "28.931300424242433",
+        "name": "blink_perf.paint/large-table-collapsed-border-change.html"
+    },
+    {
+        "duration": "49.91038705050506",
+        "name": "blink_perf.paint/large-table-repaint.html"
+    },
+    {
+        "duration": "30.73076154545456",
+        "name": "blink_perf.paint/move-text-with-mask.html"
+    },
+    {
+        "duration": "80.43563920202024",
+        "name": "blink_perf.paint/paint-offset-changes.html"
+    },
+    {
+        "duration": "54.14312325252524",
+        "name": "blink_perf.paint/transform-changes.html"
+    },
+    {
+        "duration": "26.834895444444456",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "50.4662208787879",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "66.3347558888889",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "167.91697161616156",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "12.440528065656569",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "13.233964949494947",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "12.578373015151525",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "11.888233454545453",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "11.850040474747473",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "13.183284126262636",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "15.071373378787879",
+        "name": "blink_perf.parser/query-selector-all-class-first.html"
+    },
+    {
+        "duration": "12.871857570707066",
+        "name": "blink_perf.parser/query-selector-all-class-last.html"
+    },
+    {
+        "duration": "12.01040256060606",
+        "name": "blink_perf.parser/query-selector-all-class.html"
+    },
+    {
+        "duration": "12.765487580808085",
+        "name": "blink_perf.parser/query-selector-all-deep.html"
+    },
+    {
+        "duration": "13.387511469696975",
+        "name": "blink_perf.parser/query-selector-all-first.html"
+    },
+    {
+        "duration": "17.21958694949495",
+        "name": "blink_perf.parser/query-selector-all-id-deep.html"
+    },
+    {
+        "duration": "14.942811929292935",
+        "name": "blink_perf.parser/query-selector-all-id-first.html"
+    },
+    {
+        "duration": "16.81843454545454",
+        "name": "blink_perf.parser/query-selector-all-id-last.html"
+    },
+    {
+        "duration": "13.282956303030302",
+        "name": "blink_perf.parser/query-selector-all-last.html"
+    },
+    {
+        "duration": "13.525481878787874",
+        "name": "blink_perf.parser/query-selector-deep.html"
+    },
+    {
+        "duration": "14.282080939393941",
+        "name": "blink_perf.parser/query-selector-first.html"
+    },
+    {
+        "duration": "14.01598275252526",
+        "name": "blink_perf.parser/query-selector-id-deep.html"
+    },
+    {
+        "duration": "14.348038959595959",
+        "name": "blink_perf.parser/query-selector-id-last.html"
+    },
+    {
+        "duration": "13.126143520202024",
+        "name": "blink_perf.parser/query-selector-last.html"
+    },
+    {
+        "duration": "13.381878646464648",
+        "name": "blink_perf.parser/simple-url.html"
+    },
+    {
+        "duration": "14.67078641414141",
+        "name": "blink_perf.parser/textarea-parsing.html"
+    },
+    {
+        "duration": "27.56561085858587",
+        "name": "blink_perf.parser/tiny-innerHTML.html"
+    },
+    {
+        "duration": "14.359811030303035",
+        "name": "blink_perf.parser/url-parser.html"
+    },
+    {
+        "duration": "14.154228277777777",
+        "name": "blink_perf.parser/xml-parser.html"
+    },
+    {
+        "duration": "45.523435454545464",
+        "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
+    },
+    {
+        "duration": "8.761135772727272",
+        "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
+    },
+    {
+        "duration": "8.4066601969697",
+        "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
+    },
+    {
+        "duration": "6.252653780808083",
+        "name": "blink_perf.shadow_dom/shadow-style-share.html"
+    },
+    {
+        "duration": "7.013089444444446",
+        "name": "blink_perf.shadow_dom/style-sheet-insert.html"
+    },
+    {
+        "duration": "7.391947956565657",
+        "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
+    },
+    {
+        "duration": "12.031743732323235",
+        "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
+    },
+    {
+        "duration": "20.904124040404042",
+        "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
+    },
+    {
+        "duration": "24.127763929292918",
+        "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
+    },
+    {
+        "duration": "7.001351324242424",
+        "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
+    },
+    {
+        "duration": "6.112504616161617",
+        "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
+    },
+    {
+        "duration": "5.999494698989899",
+        "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
+    },
+    {
+        "duration": "7.017810473737373",
+        "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
+    },
+    {
+        "duration": "6.802522495959594",
+        "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
+    },
+    {
+        "duration": "51.59215701010105",
+        "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
+    },
+    {
+        "duration": "5.767147316161616",
+        "name": "blink_perf.shadow_dom/v1-distribution.html"
+    },
+    {
+        "duration": "6.004700643434344",
+        "name": "blink_perf.shadow_dom/v1-host-child-append.html"
+    },
+    {
+        "duration": "51.54460218181819",
+        "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
+    },
+    {
+        "duration": "157.8730021212121",
+        "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
+    },
+    {
+        "duration": "5.820060929292929",
+        "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
+    },
+    {
+        "duration": "6.028533025252525",
+        "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
+    },
+    {
+        "duration": "8.149322779797988",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
+    },
+    {
+        "duration": "5.908775114141413",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
+    },
+    {
+        "duration": "5.9869214575757566",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
+    },
+    {
+        "duration": "6.26953455959596",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
+    },
+    {
+        "duration": "5.890709088888888",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
+    },
+    {
+        "duration": "5.97170332929293",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
+    },
+    {
+        "duration": "5.683820557575755",
+        "name": "blink_perf.shadow_dom/v1-slot-append.html"
+    },
+    {
+        "duration": "11.266568595959598",
+        "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
+    },
+    {
+        "duration": "11.297103227272729",
+        "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
+    },
+    {
+        "duration": "5.772743094949495",
+        "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html"
+    },
+    {
+        "duration": "5.720488375757578",
+        "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
+    },
+    {
+        "duration": "28.38736429292929",
+        "name": "blink_perf.svg/AzLizardBenjiPark.html"
+    },
+    {
+        "duration": "15.177637818181822",
+        "name": "blink_perf.svg/Bamboo.html"
+    },
+    {
+        "duration": "7.914355383838384",
+        "name": "blink_perf.svg/Cactus.html"
+    },
+    {
+        "duration": "8.236605497979799",
+        "name": "blink_perf.svg/Cowboy.html"
+    },
+    {
+        "duration": "9.67553785858586",
+        "name": "blink_perf.svg/Cowboy_transform.html"
+    },
+    {
+        "duration": "6.428280253535353",
+        "name": "blink_perf.svg/CrawFishGanson.html"
+    },
+    {
+        "duration": "7.2174550676767675",
+        "name": "blink_perf.svg/Debian.html"
+    },
+    {
+        "duration": "6.30482268989899",
+        "name": "blink_perf.svg/DropsOnABlade.html"
+    },
+    {
+        "duration": "6.32245911919192",
+        "name": "blink_perf.svg/FlowerFromMyGarden.html"
+    },
+    {
+        "duration": "6.495066857575757",
+        "name": "blink_perf.svg/FoodLeifLodahl.html"
+    },
+    {
+        "duration": "7.006047797979798",
+        "name": "blink_perf.svg/France.html"
+    },
+    {
+        "duration": "6.23349497878788",
+        "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
+    },
+    {
+        "duration": "7.710656679797979",
+        "name": "blink_perf.svg/GearFlowers.html"
+    },
+    {
+        "duration": "6.568256540404043",
+        "name": "blink_perf.svg/HarveyRayner.html"
+    },
+    {
+        "duration": "6.476797113131311",
+        "name": "blink_perf.svg/HereGear.html"
+    },
+    {
+        "duration": "17.642900171717173",
+        "name": "blink_perf.svg/MtSaintHelens.html"
+    },
+    {
+        "duration": "6.115226913131313",
+        "name": "blink_perf.svg/Samurai.html"
+    },
+    {
+        "duration": "177.39198989898986",
+        "name": "blink_perf.svg/SierpinskiCarpet.html"
+    },
+    {
+        "duration": "8.742938888888885",
+        "name": "blink_perf.svg/SvgCubics.html"
+    },
+    {
+        "duration": "9.113628030303024",
+        "name": "blink_perf.svg/SvgHitTesting.html"
+    },
+    {
+        "duration": "11.744755848484845",
+        "name": "blink_perf.svg/SvgNestedUse.html"
+    },
+    {
+        "duration": "6.721505047474749",
+        "name": "blink_perf.svg/UnderTheSee.html"
+    },
+    {
+        "duration": "7.5089201060606054",
+        "name": "blink_perf.svg/WorldIso.html"
+    },
+    {
+        "duration": "15.64118093939394",
+        "name": "blink_perf.svg/Worldcup.html"
+    },
+    {
+        "duration": "51.59649465656564",
+        "name": "dromaeo/http://dromaeo.com?dom-attr"
+    },
+    {
+        "duration": "38.37021653535353",
+        "name": "dromaeo/http://dromaeo.com?dom-modify"
+    },
+    {
+        "duration": "52.89753664646463",
+        "name": "dromaeo/http://dromaeo.com?dom-query"
+    },
+    {
+        "duration": "32.06460897979798",
+        "name": "dromaeo/http://dromaeo.com?dom-traverse"
+    },
+    {
+        "duration": "24.4296511010101",
+        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "17.60724739393939",
+        "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "18.612199575757575",
+        "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "397.9101965656566",
+        "name": "jetstream/http://browserbench.org/JetStream/"
+    },
+    {
+        "duration": "105.56455761616164",
+        "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
+    },
+    {
+        "duration": "228.4356668686868",
+        "name": "memory.long_running_idle_gmail_tbmv2/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "21.021010595959602",
+        "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "20.282125103030303",
+        "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "20.74949812929293",
+        "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "20.67062227676768",
+        "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "20.91236427070706",
+        "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "20.527607561616165",
+        "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "20.71090084848485",
+        "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "20.19225553737374",
+        "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "20.553102240404037",
+        "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "21.068126553535343",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "22.799178264646464",
+        "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "20.575622076767672",
+        "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "21.81795984242425",
+        "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "20.730925955555563",
+        "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "21.304949347474746",
+        "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "21.71536871313132",
+        "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "21.77744033939394",
+        "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "20.513831701010105",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "21.437698084848485",
+        "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "24.654585476767686",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "94.78394946464643",
+        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+    },
+    {
+        "duration": "25.914049676767668",
+        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
+    },
+    {
+        "duration": "61.402811979797974",
+        "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
+    },
+    {
+        "duration": "64.24169825252527",
+        "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
+    },
+    {
+        "duration": "55.482571383838405",
+        "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
+    },
+    {
+        "duration": "74.22639848484847",
+        "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
+    },
+    {
+        "duration": "61.555240101010114",
+        "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
+    },
+    {
+        "duration": "61.459151515151525",
+        "name": "power.typical_10_mobile/http://m.ynet.co.il"
+    },
+    {
+        "duration": "62.27442060606059",
+        "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
+    },
+    {
+        "duration": "55.99488895959595",
+        "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
+    },
+    {
+        "duration": "57.68957205050507",
+        "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
+    },
+    {
+        "duration": "60.320536989899004",
+        "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
+    },
+    {
+        "duration": "61.41577819191922",
+        "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
+    },
+    {
+        "duration": "25.44372883838384",
+        "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
+    },
+    {
+        "duration": "32.90850219191919",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
+    },
+    {
+        "duration": "16.362141207070696",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
+    },
+    {
+        "duration": "26.068643404040408",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
+    },
+    {
+        "duration": "24.434985959595966",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
+    },
+    {
+        "duration": "17.000699525252525",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
+    },
+    {
+        "duration": "49.11966699999999",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
+    },
+    {
+        "duration": "18.54908594949495",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
+    },
+    {
+        "duration": "31.73223402020201",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
+    },
+    {
+        "duration": "25.12273524242423",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
+    },
+    {
+        "duration": "18.360255040404038",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
+    },
+    {
+        "duration": "23.47133719191919",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
+    },
+    {
+        "duration": "25.500172191919198",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
+    },
+    {
+        "duration": "42.364837555555546",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
+    },
+    {
+        "duration": "15.942781212121215",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
+    },
+    {
+        "duration": "11.074382969696972",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
+    },
+    {
+        "duration": "44.57940397979796",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
+    },
+    {
+        "duration": "44.13653723232322",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
+    },
+    {
+        "duration": "22.311499424242413",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
+    },
+    {
+        "duration": "2.1675427733333332E-4",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html"
+    },
+    {
+        "duration": "16.560486222222224",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
+    },
+    {
+        "duration": "16.43844078282828",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
+    },
+    {
+        "duration": "37.40607272727274",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
+    },
+    {
+        "duration": "120.29870155555552",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
+    },
+    {
+        "duration": "102.85375404040407",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
+    },
+    {
+        "duration": "42.32571805050505",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
+    },
+    {
+        "duration": "2.694129933333333E-4",
+        "name": "rendering.mobile/amazon"
+    },
+    {
+        "duration": "1.1992454566666666E-4",
+        "name": "rendering.mobile/amazon_desktop"
+    },
+    {
+        "duration": "1.2608369149999998E-4",
+        "name": "rendering.mobile/amazon_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.915515083333332",
+        "name": "rendering.mobile/amazon_pinch"
+    },
+    {
+        "duration": "20.607096583333334",
+        "name": "rendering.mobile/amazon_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "2.313057583333333E-4",
+        "name": "rendering.mobile/amazon_sync_scroll"
+    },
+    {
+        "duration": "26.933967474747472",
+        "name": "rendering.mobile/analog_clock_svg"
+    },
+    {
+        "duration": "21.593970424242418",
+        "name": "rendering.mobile/androidpolice"
+    },
+    {
+        "duration": "24.953365060606064",
+        "name": "rendering.mobile/androidpolice_mobile"
+    },
+    {
+        "duration": "23.809870595959595",
+        "name": "rendering.mobile/androidpolice_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.467896434343437",
+        "name": "rendering.mobile/androidpolice_sync_scroll"
+    },
+    {
+        "duration": "5.917269843434344",
+        "name": "rendering.mobile/animometer_webgl"
+    },
+    {
+        "duration": "5.908507820202022",
+        "name": "rendering.mobile/aquarium"
+    },
+    {
+        "duration": "46.15087790909089",
+        "name": "rendering.mobile/background_color_animation"
+    },
+    {
+        "duration": "27.89599362626262",
+        "name": "rendering.mobile/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "14.439427878787871",
+        "name": "rendering.mobile/baidu"
+    },
+    {
+        "duration": "18.277355676767677",
+        "name": "rendering.mobile/baidu_mobile"
+    },
+    {
+        "duration": "16.607553777777778",
+        "name": "rendering.mobile/baidu_mobile_sync_scroll"
+    },
+    {
+        "duration": "14.573473580808084",
+        "name": "rendering.mobile/baidu_sync_scroll"
+    },
+    {
+        "duration": "28.67763565656565",
+        "name": "rendering.mobile/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "28.192560333333336",
+        "name": "rendering.mobile/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "28.296481606060606",
+        "name": "rendering.mobile/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "28.184403020202026",
+        "name": "rendering.mobile/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "25.983313676767672",
+        "name": "rendering.mobile/balls_javascript_canvas"
+    },
+    {
+        "duration": "27.009791777777767",
+        "name": "rendering.mobile/balls_javascript_css"
+    },
+    {
+        "duration": "44.88517057575759",
+        "name": "rendering.mobile/balls_svg_animations"
+    },
+    {
+        "duration": "29.74713252083333",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "13.377146813131308",
+        "name": "rendering.mobile/bing"
+    },
+    {
+        "duration": "15.356986409090913",
+        "name": "rendering.mobile/bing_mobile"
+    },
+    {
+        "duration": "15.332323378787875",
+        "name": "rendering.mobile/bing_mobile_sync_scroll"
+    },
+    {
+        "duration": "13.338408207070712",
+        "name": "rendering.mobile/bing_sync_scroll"
+    },
+    {
+        "duration": "5.995526576767679",
+        "name": "rendering.mobile/blob"
+    },
+    {
+        "duration": "31.46429135353537",
+        "name": "rendering.mobile/blogspot"
+    },
+    {
+        "duration": "28.806860898989903",
+        "name": "rendering.mobile/blogspot_desktop"
+    },
+    {
+        "duration": "29.99818897979797",
+        "name": "rendering.mobile/blogspot_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.671750272727273",
+        "name": "rendering.mobile/blogspot_mobile"
+    },
+    {
+        "duration": "16.108337101010108",
+        "name": "rendering.mobile/blogspot_mobile_sync_scroll"
+    },
+    {
+        "duration": "15.71624418686869",
+        "name": "rendering.mobile/blogspot_sync_scroll"
+    },
+    {
+        "duration": "31.860303515151504",
+        "name": "rendering.mobile/boingboing"
+    },
+    {
+        "duration": "35.43485941414141",
+        "name": "rendering.mobile/boingboing_mobile"
+    },
+    {
+        "duration": "33.71539082828284",
+        "name": "rendering.mobile/boingboing_sync_scroll"
+    },
+    {
+        "duration": "22.188091353535345",
+        "name": "rendering.mobile/booking.com"
+    },
+    {
+        "duration": "18.182940919191925",
+        "name": "rendering.mobile/booking.com_desktop"
+    },
+    {
+        "duration": "20.373942323232324",
+        "name": "rendering.mobile/booking.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.212023919191918",
+        "name": "rendering.mobile/booking.com_mobile"
+    },
+    {
+        "duration": "23.4934636969697",
+        "name": "rendering.mobile/booking.com_mobile_sync_scroll"
+    },
+    {
+        "duration": "20.35859814141415",
+        "name": "rendering.mobile/booking.com_sync_scroll"
+    },
+    {
+        "duration": "25.943872083333332",
+        "name": "rendering.mobile/booking_pinch"
+    },
+    {
+        "duration": "25.135834083333332",
+        "name": "rendering.mobile/booking_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.424381101010102",
+        "name": "rendering.mobile/bouncing_balls_15"
+    },
+    {
+        "duration": "21.415844828282832",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "20.492224131313126",
+        "name": "rendering.mobile/bouncing_gradient_circles"
+    },
+    {
+        "duration": "17.560084939393935",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "27.050657282828286",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "26.103720139784954",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.334384645161286",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.329307258064517",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.785674677419347",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.604366344086014",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.26736006451613",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.713363623655905",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.345471865591392",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "15.928029962365589",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "15.497968682795696",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.492381222222225",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "20.93975618181818",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "19.508587414141413",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "19.61488431313131",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "22.117785626262616",
+        "name": "rendering.mobile/canvas_to_blob"
+    },
+    {
+        "duration": "22.48093823232323",
+        "name": "rendering.mobile/capitolvolkswagen"
+    },
+    {
+        "duration": "24.803644444444448",
+        "name": "rendering.mobile/capitolvolkswagen_mobile"
+    },
+    {
+        "duration": "23.92851688888889",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll"
+    },
+    {
+        "duration": "22.499370282828284",
+        "name": "rendering.mobile/capitolvolkswagen_sync_scroll"
+    },
+    {
+        "duration": "21.619946291666665",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "23.805765145833337",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "23.140760593749988",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "21.48547536458334",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "13.798457075268816",
+        "name": "rendering.mobile/cats_unscaled"
+    },
+    {
+        "duration": "12.673715645161296",
+        "name": "rendering.mobile/cats_viewport_width"
+    },
+    {
+        "duration": "31.623082625000002",
+        "name": "rendering.mobile/cc_poster_circle"
+    },
+    {
+        "duration": "28.651273875",
+        "name": "rendering.mobile/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "21.630223",
+        "name": "rendering.mobile/cc_scroll_text_only"
+    },
+    {
+        "duration": "25.42017104040404",
+        "name": "rendering.mobile/chip_tune"
+    },
+    {
+        "duration": "17.418018040404043",
+        "name": "rendering.mobile/cnn"
+    },
+    {
+        "duration": "34.22406842424243",
+        "name": "rendering.mobile/cnn_article"
+    },
+    {
+        "duration": "39.34096372727273",
+        "name": "rendering.mobile/cnn_article_mobile"
+    },
+    {
+        "duration": "38.640840434343424",
+        "name": "rendering.mobile/cnn_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "34.43422892929292",
+        "name": "rendering.mobile/cnn_article_sync_scroll"
+    },
+    {
+        "duration": "2.2383531E-4",
+        "name": "rendering.mobile/cnn_desktop"
+    },
+    {
+        "duration": "2.47160595E-4",
+        "name": "rendering.mobile/cnn_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.73224876767676",
+        "name": "rendering.mobile/cnn_mobile"
+    },
+    {
+        "duration": "19.758020777777784",
+        "name": "rendering.mobile/cnn_mobile_sync_scroll"
+    },
+    {
+        "duration": "34.73623260824743",
+        "name": "rendering.mobile/cnn_pathological"
+    },
+    {
+        "duration": "31.803520833333327",
+        "name": "rendering.mobile/cnn_pinch"
+    },
+    {
+        "duration": "30.983602166666667",
+        "name": "rendering.mobile/cnn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.285801434343437",
+        "name": "rendering.mobile/cnn_sync_scroll"
+    },
+    {
+        "duration": "30.309873787878793",
+        "name": "rendering.mobile/compositor_heavy_animation"
+    },
+    {
+        "duration": "22.029548343750005",
+        "name": "rendering.mobile/coordinated_animation"
+    },
+    {
+        "duration": "26.770244141414146",
+        "name": "rendering.mobile/crafty_mind"
+    },
+    {
+        "duration": "30.127635262626256",
+        "name": "rendering.mobile/css_animations_many_keyframes"
+    },
+    {
+        "duration": "28.38360176767676",
+        "name": "rendering.mobile/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "29.33641846464647",
+        "name": "rendering.mobile/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "28.361888797979784",
+        "name": "rendering.mobile/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "28.424310505050492",
+        "name": "rendering.mobile/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "26.378210545454547",
+        "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "30.61825073737373",
+        "name": "rendering.mobile/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "31.851868939393952",
+        "name": "rendering.mobile/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "31.748238232323242",
+        "name": "rendering.mobile/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "30.965506454545462",
+        "name": "rendering.mobile/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "30.565259171717173",
+        "name": "rendering.mobile/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "31.725063474747486",
+        "name": "rendering.mobile/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "29.298982777777763",
+        "name": "rendering.mobile/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "30.506001838383842",
+        "name": "rendering.mobile/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "28.223029484848492",
+        "name": "rendering.mobile/css_transitions_inline_style"
+    },
+    {
+        "duration": "29.00379131313132",
+        "name": "rendering.mobile/css_transitions_new_element"
+    },
+    {
+        "duration": "29.29261367676769",
+        "name": "rendering.mobile/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "29.27790803030301",
+        "name": "rendering.mobile/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "29.62614455555555",
+        "name": "rendering.mobile/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "29.099257070707058",
+        "name": "rendering.mobile/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "28.273145212121218",
+        "name": "rendering.mobile/css_transitions_style_element"
+    },
+    {
+        "duration": "29.771619606060614",
+        "name": "rendering.mobile/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "29.721872585858584",
+        "name": "rendering.mobile/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "29.467042979797974",
+        "name": "rendering.mobile/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "29.76566642424243",
+        "name": "rendering.mobile/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "28.184241080808064",
+        "name": "rendering.mobile/css_transitions_updating_class"
+    },
+    {
+        "duration": "28.06706154545454",
+        "name": "rendering.mobile/css_value_type_color"
+    },
+    {
+        "duration": "40.57415936363636",
+        "name": "rendering.mobile/css_value_type_filter"
+    },
+    {
+        "duration": "25.514139101010095",
+        "name": "rendering.mobile/css_value_type_length"
+    },
+    {
+        "duration": "27.69014251515151",
+        "name": "rendering.mobile/css_value_type_length_complex"
+    },
+    {
+        "duration": "27.74380822222222",
+        "name": "rendering.mobile/css_value_type_length_simple"
+    },
+    {
+        "duration": "28.372197181818173",
+        "name": "rendering.mobile/css_value_type_path"
+    },
+    {
+        "duration": "26.428599202020216",
+        "name": "rendering.mobile/css_value_type_shadow"
+    },
+    {
+        "duration": "25.29084548484849",
+        "name": "rendering.mobile/css_value_type_transform_complex"
+    },
+    {
+        "duration": "25.411537959595975",
+        "name": "rendering.mobile/css_value_type_transform_simple"
+    },
+    {
+        "duration": "29.890455949494946",
+        "name": "rendering.mobile/cuteoverload"
+    },
+    {
+        "duration": "32.2897334949495",
+        "name": "rendering.mobile/cuteoverload_mobile"
+    },
+    {
+        "duration": "30.146328353535345",
+        "name": "rendering.mobile/cuteoverload_sync_scroll"
+    },
+    {
+        "duration": "23.826209373737367",
+        "name": "rendering.mobile/deviantart"
+    },
+    {
+        "duration": "27.169314313131316",
+        "name": "rendering.mobile/deviantart_mobile"
+    },
+    {
+        "duration": "28.08843422222222",
+        "name": "rendering.mobile/deviantart_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.073842868686885",
+        "name": "rendering.mobile/deviantart_sync_scroll"
+    },
+    {
+        "duration": "2.2435188333333334E-4",
+        "name": "rendering.mobile/digg"
+    },
+    {
+        "duration": "2.2943814666666665E-4",
+        "name": "rendering.mobile/digg_sync_scroll"
+    },
+    {
+        "duration": "5.926793286868687",
+        "name": "rendering.mobile/dynamic_cube_map"
+    },
+    {
+        "duration": "5.914508295959598",
+        "name": "rendering.mobile/earth"
+    },
+    {
+        "duration": "17.758468191919192",
+        "name": "rendering.mobile/ebay"
+    },
+    {
+        "duration": "14.706662575757568",
+        "name": "rendering.mobile/ebay_desktop"
+    },
+    {
+        "duration": "16.129376303030295",
+        "name": "rendering.mobile/ebay_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.29121365656566",
+        "name": "rendering.mobile/ebay_mobile"
+    },
+    {
+        "duration": "20.21432551515151",
+        "name": "rendering.mobile/ebay_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.122200916666667",
+        "name": "rendering.mobile/ebay_pinch"
+    },
+    {
+        "duration": "26.470914666666673",
+        "name": "rendering.mobile/ebay_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.952910262626254",
+        "name": "rendering.mobile/ebay_scroll"
+    },
+    {
+        "duration": "18.200967525252523",
+        "name": "rendering.mobile/ebay_sync_scroll"
+    },
+    {
+        "duration": "15.467287727272737",
+        "name": "rendering.mobile/espn"
+    },
+    {
+        "duration": "14.3166137020202",
+        "name": "rendering.mobile/espn_desktop"
+    },
+    {
+        "duration": "13.905744757575754",
+        "name": "rendering.mobile/espn_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.889609556701025",
+        "name": "rendering.mobile/espn_pathological"
+    },
+    {
+        "duration": "33.40570625",
+        "name": "rendering.mobile/espn_pinch"
+    },
+    {
+        "duration": "33.101478166666666",
+        "name": "rendering.mobile/espn_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "2.27888425E-4",
+        "name": "rendering.mobile/espn_sync_scroll"
+    },
+    {
+        "duration": "26.13456405050505",
+        "name": "rendering.mobile/extra_large_texture_uploads"
+    },
+    {
+        "duration": "27.18617286868686",
+        "name": "rendering.mobile/facebook"
+    },
+    {
+        "duration": "25.313692535353542",
+        "name": "rendering.mobile/facebook_desktop"
+    },
+    {
+        "duration": "27.441204242424234",
+        "name": "rendering.mobile/facebook_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.075806323232328",
+        "name": "rendering.mobile/facebook_mobile"
+    },
+    {
+        "duration": "20.351176343434346",
+        "name": "rendering.mobile/facebook_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.016462833333332",
+        "name": "rendering.mobile/facebook_pinch"
+    },
+    {
+        "duration": "23.599507416666665",
+        "name": "rendering.mobile/facebook_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.861983292929285",
+        "name": "rendering.mobile/facebook_sync_scroll"
+    },
+    {
+        "duration": "19.68464036363637",
+        "name": "rendering.mobile/fill_shapes"
+    },
+    {
+        "duration": "26.1178836060606",
+        "name": "rendering.mobile/filter_terrain_svg"
+    },
+    {
+        "duration": "21.063684031250006",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "1.291434E-4",
+        "name": "rendering.mobile/forecast.io"
+    },
+    {
+        "duration": "1.2405713333333334E-4",
+        "name": "rendering.mobile/forecast.io_sync_scroll"
+    },
+    {
+        "duration": "19.502761676767676",
+        "name": "rendering.mobile/geo_apis"
+    },
+    {
+        "duration": "38.486882747474766",
+        "name": "rendering.mobile/gmail"
+    },
+    {
+        "duration": "48.69736244444446",
+        "name": "rendering.mobile/gmail_desktop"
+    },
+    {
+        "duration": "37.81987456565657",
+        "name": "rendering.mobile/gmail_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.922138583333336",
+        "name": "rendering.mobile/gmail_pinch"
+    },
+    {
+        "duration": "33.307522416666664",
+        "name": "rendering.mobile/gmail_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.093645707070714",
+        "name": "rendering.mobile/google_calendar"
+    },
+    {
+        "duration": "25.191034898989894",
+        "name": "rendering.mobile/google_calendar_desktop"
+    },
+    {
+        "duration": "26.59336213131312",
+        "name": "rendering.mobile/google_calendar_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.0501472",
+        "name": "rendering.mobile/google_calendar_pinch"
+    },
+    {
+        "duration": "23.068653400000002",
+        "name": "rendering.mobile/google_calendar_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "44.121597202020205",
+        "name": "rendering.mobile/google_docs"
+    },
+    {
+        "duration": "40.09812691919192",
+        "name": "rendering.mobile/google_docs_desktop"
+    },
+    {
+        "duration": "44.00797605050505",
+        "name": "rendering.mobile/google_docs_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.085602",
+        "name": "rendering.mobile/google_image_pinch"
+    },
+    {
+        "duration": "23.5996776",
+        "name": "rendering.mobile/google_image_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.96039919191919",
+        "name": "rendering.mobile/google_image_search"
+    },
+    {
+        "duration": "28.168004020202027",
+        "name": "rendering.mobile/google_image_search_desktop"
+    },
+    {
+        "duration": "30.919375777777784",
+        "name": "rendering.mobile/google_image_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.447200747474742",
+        "name": "rendering.mobile/google_news"
+    },
+    {
+        "duration": "23.104230062499994",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "26.18250581818181",
+        "name": "rendering.mobile/google_news_mobile"
+    },
+    {
+        "duration": "26.204951121212115",
+        "name": "rendering.mobile/google_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.82021765656567",
+        "name": "rendering.mobile/google_news_sync_scroll"
+    },
+    {
+        "duration": "36.07029603030301",
+        "name": "rendering.mobile/google_plus"
+    },
+    {
+        "duration": "34.94603838383839",
+        "name": "rendering.mobile/google_plus_desktop"
+    },
+    {
+        "duration": "36.370521818181835",
+        "name": "rendering.mobile/google_plus_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.842815888888893",
+        "name": "rendering.mobile/google_plus_mobile"
+    },
+    {
+        "duration": "21.778440848484834",
+        "name": "rendering.mobile/google_plus_mobile_sync_scroll"
+    },
+    {
+        "duration": "19.866325686868688",
+        "name": "rendering.mobile/google_plus_sync_scroll"
+    },
+    {
+        "duration": "22.687430899999995",
+        "name": "rendering.mobile/google_search_pinch"
+    },
+    {
+        "duration": "21.205731399999998",
+        "name": "rendering.mobile/google_search_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.78768540404041",
+        "name": "rendering.mobile/google_web_search"
+    },
+    {
+        "duration": "13.994417303030302",
+        "name": "rendering.mobile/google_web_search_desktop"
+    },
+    {
+        "duration": "15.249138363636364",
+        "name": "rendering.mobile/google_web_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.21230936363636",
+        "name": "rendering.mobile/google_web_search_mobile"
+    },
+    {
+        "duration": "16.885117747474744",
+        "name": "rendering.mobile/google_web_search_mobile_sync_scroll"
+    },
+    {
+        "duration": "15.273722222222226",
+        "name": "rendering.mobile/google_web_search_sync_scroll"
+    },
+    {
+        "duration": "16.290074666666662",
+        "name": "rendering.mobile/gsp.ro"
+    },
+    {
+        "duration": "19.102557696969697",
+        "name": "rendering.mobile/gsp.ro_mobile"
+    },
+    {
+        "duration": "17.963536474747475",
+        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll"
+    },
+    {
+        "duration": "16.386606636363634",
+        "name": "rendering.mobile/gsp.ro_sync_scroll"
+    },
+    {
+        "duration": "20.509660136842104",
+        "name": "rendering.mobile/guardian_pathological"
+    },
+    {
+        "duration": "34.13294113131313",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "20.973762624999996",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "21.081787520833334",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "23.431238909090897",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "22.897202708333328",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "40.10470766666667",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "35.25156416666666",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "43.36936433333333",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "38.17907317171718",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "36.664903949494956",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "26.720504416666657",
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "23.502646828282824",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "53.620205",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "35.014657125",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "28.125780624999997",
+        "name": "rendering.mobile/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "27.92729325",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "25.979798303030304",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "27.385784262626263",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "29.03380701052633",
+        "name": "rendering.mobile/latimes_pathological"
+    },
+    {
+        "duration": "18.78412618181818",
+        "name": "rendering.mobile/linkedin"
+    },
+    {
+        "duration": "17.488797949494952",
+        "name": "rendering.mobile/linkedin_desktop"
+    },
+    {
+        "duration": "17.297033303030304",
+        "name": "rendering.mobile/linkedin_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.627109444444457",
+        "name": "rendering.mobile/linkedin_mobile"
+    },
+    {
+        "duration": "20.710449737373736",
+        "name": "rendering.mobile/linkedin_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.994177178947375",
+        "name": "rendering.mobile/linkedin_pathological"
+    },
+    {
+        "duration": "21.906724499999996",
+        "name": "rendering.mobile/linkedin_pinch"
+    },
+    {
+        "duration": "20.546428100000004",
+        "name": "rendering.mobile/linkedin_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.173235898989894",
+        "name": "rendering.mobile/linkedin_sync_scroll"
+    },
+    {
+        "duration": "18.824906218749998",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "27.698625208333336",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "22.955932000000004",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "28.180893191919196",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "5.993786979797976",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "23.232589208333334",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "24.59379314583333",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "30.094458535353525",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "22.66895733333333",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "24.382704828282826",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "25.72090662626262",
+        "name": "rendering.mobile/microsoft_fireflies"
+    },
+    {
+        "duration": "23.43360427272727",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "23.04876308080807",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "19.880834101010105",
+        "name": "rendering.mobile/microsoft_speed_reading"
+    },
+    {
+        "duration": "22.832905606060603",
+        "name": "rendering.mobile/microsoft_tweet_map"
+    },
+    {
+        "duration": "25.1288106060606",
+        "name": "rendering.mobile/microsoft_video_city"
+    },
+    {
+        "duration": "20.913492232323232",
+        "name": "rendering.mobile/microsoft_worker_fountains"
+    },
+    {
+        "duration": "21.25663751515151",
+        "name": "rendering.mobile/mix_10k"
+    },
+    {
+        "duration": "34.607542242424245",
+        "name": "rendering.mobile/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "34.64548809090909",
+        "name": "rendering.mobile/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "32.62969151515152",
+        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "32.956009272727265",
+        "name": "rendering.mobile/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "13.910224651515154",
+        "name": "rendering.mobile/mlb"
+    },
+    {
+        "duration": "15.230280131313126",
+        "name": "rendering.mobile/mlb_mobile"
+    },
+    {
+        "duration": "15.229083767676773",
+        "name": "rendering.mobile/mlb_mobile_sync_scroll"
+    },
+    {
+        "duration": "13.942269368686869",
+        "name": "rendering.mobile/mlb_sync_scroll"
+    },
+    {
+        "duration": "18.50512211458334",
+        "name": "rendering.mobile/mobile_news_sandbox"
+    },
+    {
+        "duration": "25.68877059595958",
+        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "26.13678232323231",
+        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "32.7488005959596",
+        "name": "rendering.mobile/motion_mark_focus"
+    },
+    {
+        "duration": "35.696275875",
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "28.304097125000002",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "20.849769625",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "19.83698475",
+        "name": "rendering.mobile/no_op_settimeout"
+    },
+    {
+        "duration": "22.177050749999996",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "5.929941575757575",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "31.294751",
+        "name": "rendering.mobile/nyc_gov_scroll"
+    },
+    {
+        "duration": "19.20282177777778",
+        "name": "rendering.mobile/nytimes"
+    },
+    {
+        "duration": "21.72985169696969",
+        "name": "rendering.mobile/nytimes_mobile"
+    },
+    {
+        "duration": "29.78803530303029",
+        "name": "rendering.mobile/nytimes_scroll"
+    },
+    {
+        "duration": "18.847201464646453",
+        "name": "rendering.mobile/nytimes_sync_scroll"
+    },
+    {
+        "duration": "39.09701549494949",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "24.264049770833328",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "5.936163706451612",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "30.682196356321846",
+        "name": "rendering.mobile/pbs_pathological"
+    },
+    {
+        "duration": "17.91469152083334",
+        "name": "rendering.mobile/physical_simulation"
+    },
+    {
+        "duration": "26.024794696969707",
+        "name": "rendering.mobile/pinterest"
+    },
+    {
+        "duration": "22.60351335353535",
+        "name": "rendering.mobile/pinterest_desktop"
+    },
+    {
+        "duration": "2.36034395E-4",
+        "name": "rendering.mobile/pinterest_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.235934171717165",
+        "name": "rendering.mobile/pinterest_mobile"
+    },
+    {
+        "duration": "25.08047650505051",
+        "name": "rendering.mobile/pinterest_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.001633727272726",
+        "name": "rendering.mobile/pinterest_sync_scroll"
+    },
+    {
+        "duration": "19.83329274747475",
+        "name": "rendering.mobile/put_get_image_data"
+    },
+    {
+        "duration": "26.093238655913993",
+        "name": "rendering.mobile/raf"
+    },
+    {
+        "duration": "26.260694892473115",
+        "name": "rendering.mobile/raf_animation"
+    },
+    {
+        "duration": "25.85882675268817",
+        "name": "rendering.mobile/raf_canvas"
+    },
+    {
+        "duration": "26.369647408602148",
+        "name": "rendering.mobile/raf_touch_animation"
+    },
+    {
+        "duration": "31.149308057471263",
+        "name": "rendering.mobile/recode_pathological"
+    },
+    {
+        "duration": "24.28947090909091",
+        "name": "rendering.mobile/reddit"
+    },
+    {
+        "duration": "25.78264000000001",
+        "name": "rendering.mobile/reddit_mobile"
+    },
+    {
+        "duration": "24.398404070707066",
+        "name": "rendering.mobile/reddit_sync_scroll"
+    },
+    {
+        "duration": "22.371324545454538",
+        "name": "rendering.mobile/runway"
+    },
+    {
+        "duration": "5.949829969892474",
+        "name": "rendering.mobile/san_angeles"
+    },
+    {
+        "duration": "16.644484956989253",
+        "name": "rendering.mobile/second_batch_js_heavy"
+    },
+    {
+        "duration": "15.784378709677412",
+        "name": "rendering.mobile/second_batch_js_light"
+    },
+    {
+        "duration": "15.883132553763438",
+        "name": "rendering.mobile/second_batch_js_medium"
+    },
+    {
+        "duration": "20.001406121212128",
+        "name": "rendering.mobile/sfgate"
+    },
+    {
+        "duration": "21.675483363636353",
+        "name": "rendering.mobile/sfgate_mobile"
+    },
+    {
+        "duration": "20.781760323232326",
+        "name": "rendering.mobile/sfgate_mobile_sync_scroll"
+    },
+    {
+        "duration": "20.290759929292932",
+        "name": "rendering.mobile/sfgate_sync_scroll"
+    },
+    {
+        "duration": "32.63404971590911",
+        "name": "rendering.mobile/silk_finance"
+    },
+    {
+        "duration": "22.589822064516124",
+        "name": "rendering.mobile/simple_text_page"
+    },
+    {
+        "duration": "17.483430935483867",
+        "name": "rendering.mobile/simple_touch_drag"
+    },
+    {
+        "duration": "23.676279202020197",
+        "name": "rendering.mobile/slashdot"
+    },
+    {
+        "duration": "26.35325425252526",
+        "name": "rendering.mobile/slashdot_mobile"
+    },
+    {
+        "duration": "23.745678050505045",
+        "name": "rendering.mobile/slashdot_sync_scroll"
+    },
+    {
+        "duration": "18.793330041666664",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "29.724990956989252",
+        "name": "rendering.mobile/small_texture_uploads"
+    },
+    {
+        "duration": "22.62985349494949",
+        "name": "rendering.mobile/spielzeugz"
+    },
+    {
+        "duration": "18.92271996875",
+        "name": "rendering.mobile/sticky_using_webkit"
+    },
+    {
+        "duration": "29.346088979166666",
+        "name": "rendering.mobile/stress_hidey_bars"
+    },
+    {
+        "duration": "20.744895222222222",
+        "name": "rendering.mobile/stroke_shapes"
+    },
+    {
+        "duration": "30.039698375",
+        "name": "rendering.mobile/svg_icon_raster"
+    },
+    {
+        "duration": "15.474201791666657",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "21.416786666666678",
+        "name": "rendering.mobile/swipe_to_dismiss"
+    },
+    {
+        "duration": "21.235454516129032",
+        "name": "rendering.mobile/sync_scroll_offset"
+    },
+    {
+        "duration": "38.91984793939393",
+        "name": "rendering.mobile/techcrunch"
+    },
+    {
+        "duration": "39.55307721212122",
+        "name": "rendering.mobile/techcrunch_desktop"
+    },
+    {
+        "duration": "40.89291244444445",
+        "name": "rendering.mobile/techcrunch_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.92691297979798",
+        "name": "rendering.mobile/techcrunch_mobile"
+    },
+    {
+        "duration": "17.620445520202022",
+        "name": "rendering.mobile/techcrunch_mobile_sync_scroll"
+    },
+    {
+        "duration": "15.972613101010106",
+        "name": "rendering.mobile/techcrunch_sync_scroll"
+    },
+    {
+        "duration": "23.041720989247306",
+        "name": "rendering.mobile/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.991061978494624",
+        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "23.50747261290322",
+        "name": "rendering.mobile/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "23.259110849462367",
+        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.13268686021505",
+        "name": "rendering.mobile/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "20.739922215053767",
+        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.16134643010752",
+        "name": "rendering.mobile/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "18.904241118279568",
+        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.286850333333334",
+        "name": "rendering.mobile/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "17.095497870967744",
+        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.466957000000004",
+        "name": "rendering.mobile/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "16.113519107526887",
+        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "15.79349821505376",
+        "name": "rendering.mobile/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "15.573820795698929",
+        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "15.489408064516127",
+        "name": "rendering.mobile/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "15.09027862365591",
+        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "14.95819666129033",
+        "name": "rendering.mobile/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "14.571599177419357",
+        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "14.62696871505376",
+        "name": "rendering.mobile/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "14.381795483870969",
+        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.969361204301073",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.555350569892475",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.120270892473116",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "24.85576173118279",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.997693344086024",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.00784011827957",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.805287784946238",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "20.120599559139787",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.602938784946232",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "18.230799569892476",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.539780784946235",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "17.329789236559147",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.96677626881721",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "16.718931903225812",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.638944537634416",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "16.33608615591397",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.1756991344086",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "15.986487247311823",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.03150882258064",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "15.73963495161291",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.47554621505376",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.466344860215052",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "19.4835709032258",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "19.499581870967738",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.880156279569892",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "17.84957279569893",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.63352875268817",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "16.63065195698925",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "15.490358946236556",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "15.408623274193543",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "14.766004833333337",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "14.651514752688165",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "14.329732231182794",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "14.422694478494615",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "14.009814048387097",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "14.08297615053763",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "13.91851080107527",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "13.907258505376339",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "13.724518892473121",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "13.694118263440862",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "17.766969858585856",
+        "name": "rendering.mobile/theverge"
+    },
+    {
+        "duration": "29.53485162626262",
+        "name": "rendering.mobile/theverge_article"
+    },
+    {
+        "duration": "33.42469223232323",
+        "name": "rendering.mobile/theverge_article_mobile"
+    },
+    {
+        "duration": "32.72774828282829",
+        "name": "rendering.mobile/theverge_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.998691141414145",
+        "name": "rendering.mobile/theverge_article_sync_scroll"
+    },
+    {
+        "duration": "19.682258949494948",
+        "name": "rendering.mobile/theverge_mobile"
+    },
+    {
+        "duration": "19.666677414141418",
+        "name": "rendering.mobile/theverge_mobile_sync_scroll"
+    },
+    {
+        "duration": "17.771721191919188",
+        "name": "rendering.mobile/theverge_sync_scroll"
+    },
+    {
+        "duration": "23.767859916666676",
+        "name": "rendering.mobile/toggle_drawer"
+    },
+    {
+        "duration": "22.903415086021507",
+        "name": "rendering.mobile/touch_handler_scrolling"
+    },
+    {
+        "duration": "28.52796202020202",
+        "name": "rendering.mobile/transform_transitions"
+    },
+    {
+        "duration": "25.74895122222222",
+        "name": "rendering.mobile/transform_transitions_js_block"
+    },
+    {
+        "duration": "20.480215959595963",
+        "name": "rendering.mobile/twitter"
+    },
+    {
+        "duration": "19.301111303030307",
+        "name": "rendering.mobile/twitter_desktop"
+    },
+    {
+        "duration": "19.423442393939393",
+        "name": "rendering.mobile/twitter_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.3957165",
+        "name": "rendering.mobile/twitter_pinch"
+    },
+    {
+        "duration": "24.2365378",
+        "name": "rendering.mobile/twitter_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "2.31663385E-4",
+        "name": "rendering.mobile/twitter_sync_scroll"
+    },
+    {
+        "duration": "24.209628420454553",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "30.07913242424242",
+        "name": "rendering.mobile/usatoday"
+    },
+    {
+        "duration": "32.81188657575757",
+        "name": "rendering.mobile/usatoday_mobile"
+    },
+    {
+        "duration": "33.99549812121211",
+        "name": "rendering.mobile/usatoday_mobile_sync_scroll"
+    },
+    {
+        "duration": "29.149966595959604",
+        "name": "rendering.mobile/usatoday_sync_scroll"
+    },
+    {
+        "duration": "24.129551656250005",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "26.159326626262636",
+        "name": "rendering.mobile/weather.com"
+    },
+    {
+        "duration": "22.343989353535353",
+        "name": "rendering.mobile/weather.com_desktop"
+    },
+    {
+        "duration": "24.93975606060606",
+        "name": "rendering.mobile/weather.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.3763748",
+        "name": "rendering.mobile/weather_pinch"
+    },
+    {
+        "duration": "31.849551900000005",
+        "name": "rendering.mobile/weather_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.95098808080808",
+        "name": "rendering.mobile/web_animation_value_type_color"
+    },
+    {
+        "duration": "25.489270151515136",
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "27.51304157575758",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "27.746102050505044",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "28.19100391919191",
+        "name": "rendering.mobile/web_animation_value_type_path"
+    },
+    {
+        "duration": "26.358416464646464",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "25.34672169696969",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "25.445263505050516",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "36.92157865656567",
+        "name": "rendering.mobile/web_animations_many_keyframes"
+    },
+    {
+        "duration": "25.693645939393942",
+        "name": "rendering.mobile/web_animations_set_current_time"
+    },
+    {
+        "duration": "27.222989898989898",
+        "name": "rendering.mobile/web_animations_simultaneous"
+    },
+    {
+        "duration": "29.666196060606058",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "26.04828990909091",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "29.931503515151515",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "29.824109848484852",
+        "name": "rendering.mobile/wikipedia"
+    },
+    {
+        "duration": "22.78065422222223",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "22.898155797979804",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll"
+    },
+    {
+        "duration": "28.14857441414141",
+        "name": "rendering.mobile/wikipedia_desktop"
+    },
+    {
+        "duration": "29.617745303030304",
+        "name": "rendering.mobile/wikipedia_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.647713353535362",
+        "name": "rendering.mobile/wikipedia_mobile"
+    },
+    {
+        "duration": "22.870925494949493",
+        "name": "rendering.mobile/wikipedia_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.131933646464642",
+        "name": "rendering.mobile/wikipedia_sync_scroll"
+    },
+    {
+        "duration": "31.12559104040404",
+        "name": "rendering.mobile/wordpress"
+    },
+    {
+        "duration": "27.81548141414141",
+        "name": "rendering.mobile/wordpress_desktop"
+    },
+    {
+        "duration": "29.17404838383839",
+        "name": "rendering.mobile/wordpress_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.811022171717173",
+        "name": "rendering.mobile/wordpress_mobile"
+    },
+    {
+        "duration": "28.743544595959595",
+        "name": "rendering.mobile/wordpress_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.88118837373737",
+        "name": "rendering.mobile/wordpress_sync_scroll"
+    },
+    {
+        "duration": "33.955745939393935",
+        "name": "rendering.mobile/worldjournal"
+    },
+    {
+        "duration": "39.22473944444447",
+        "name": "rendering.mobile/worldjournal_mobile"
+    },
+    {
+        "duration": "37.98298815151513",
+        "name": "rendering.mobile/worldjournal_mobile_sync_scroll"
+    },
+    {
+        "duration": "34.51377352525254",
+        "name": "rendering.mobile/worldjournal_sync_scroll"
+    },
+    {
+        "duration": "33.29247850574712",
+        "name": "rendering.mobile/wow_wiki_pathological"
+    },
+    {
+        "duration": "31.55015422222221",
+        "name": "rendering.mobile/wowwiki"
+    },
+    {
+        "duration": "33.69705632323231",
+        "name": "rendering.mobile/wowwiki_mobile"
+    },
+    {
+        "duration": "32.653528363636354",
+        "name": "rendering.mobile/wowwiki_mobile_sync_scroll"
+    },
+    {
+        "duration": "30.878312282828293",
+        "name": "rendering.mobile/wowwiki_sync_scroll"
+    },
+    {
+        "duration": "16.380798237373742",
+        "name": "rendering.mobile/wsj"
+    },
+    {
+        "duration": "19.286013727272724",
+        "name": "rendering.mobile/wsj_mobile"
+    },
+    {
+        "duration": "17.942204030303024",
+        "name": "rendering.mobile/wsj_mobile_sync_scroll"
+    },
+    {
+        "duration": "16.583232404040405",
+        "name": "rendering.mobile/wsj_sync_scroll"
+    },
+    {
+        "duration": "19.427137383838385",
+        "name": "rendering.mobile/yahoo_answers"
+    },
+    {
+        "duration": "16.429644040404046",
+        "name": "rendering.mobile/yahoo_answers_desktop"
+    },
+    {
+        "duration": "17.541254631313127",
+        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster"
+    },
+    {
+        "duration": "20.73965964646465",
+        "name": "rendering.mobile/yahoo_answers_mobile"
+    },
+    {
+        "duration": "21.365654040404042",
+        "name": "rendering.mobile/yahoo_answers_mobile_sync_scroll"
+    },
+    {
+        "duration": "19.208772616161617",
+        "name": "rendering.mobile/yahoo_answers_sync_scroll"
+    },
+    {
+        "duration": "30.9877907070707",
+        "name": "rendering.mobile/yahoo_games"
+    },
+    {
+        "duration": "29.999265808080818",
+        "name": "rendering.mobile/yahoo_games_desktop"
+    },
+    {
+        "duration": "31.22352727272728",
+        "name": "rendering.mobile/yahoo_games_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.7419075",
+        "name": "rendering.mobile/yahoo_games_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "22.813437939393932",
+        "name": "rendering.mobile/yahoo_news"
+    },
+    {
+        "duration": "20.034465303030302",
+        "name": "rendering.mobile/yahoo_news_desktop"
+    },
+    {
+        "duration": "21.07141695959596",
+        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster"
+    },
+    {
+        "duration": "21.613730393939395",
+        "name": "rendering.mobile/yahoo_news_mobile"
+    },
+    {
+        "duration": "20.529216080808077",
+        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.5794431",
+        "name": "rendering.mobile/yahoo_news_pinch"
+    },
+    {
+        "duration": "28.2463758",
+        "name": "rendering.mobile/yahoo_news_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "18.483437888888886",
+        "name": "rendering.mobile/yahoo_news_sync_scroll"
+    },
+    {
+        "duration": "23.37445242424243",
+        "name": "rendering.mobile/yahoo_sports"
+    },
+    {
+        "duration": "21.84188068686868",
+        "name": "rendering.mobile/yahoo_sports_desktop"
+    },
+    {
+        "duration": "24.72597219191917",
+        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.461107300000002",
+        "name": "rendering.mobile/yahoo_sports_pinch"
+    },
+    {
+        "duration": "29.822788600000003",
+        "name": "rendering.mobile/yahoo_sports_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.110891515151508",
+        "name": "rendering.mobile/youtube"
+    },
+    {
+        "duration": "29.651505343434334",
+        "name": "rendering.mobile/youtube_desktop"
+    },
+    {
+        "duration": "31.17938742424244",
+        "name": "rendering.mobile/youtube_desktop_gpu_raster"
+    },
+    {
+        "duration": "16.048794954545453",
+        "name": "rendering.mobile/youtube_mobile"
+    },
+    {
+        "duration": "14.616738404040401",
+        "name": "rendering.mobile/youtube_mobile_sync_scroll"
+    },
+    {
+        "duration": "27.9799333",
+        "name": "rendering.mobile/youtube_pinch"
+    },
+    {
+        "duration": "26.193282400000005",
+        "name": "rendering.mobile/youtube_pinch_desktop_gpu_raster"
+    },
+    {
+        "duration": "14.733569121212124",
+        "name": "rendering.mobile/youtube_sync_scroll"
+    },
+    {
+        "duration": "32.86918547311829",
+        "name": "rendering.mobile/yuv_decoding"
+    },
+    {
+        "duration": "33.83872353763441",
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+    },
+    {
+        "duration": "26.870285080459777",
+        "name": "rendering.mobile/zdnet_pathological"
+    },
+    {
+        "duration": "21.985561468750003",
+        "name": "rendering.mobile/zoom_in_animation"
+    },
+    {
+        "duration": "20.195418474747473",
+        "name": "scheduler.tough_scheduling_cases/raf"
+    },
+    {
+        "duration": "20.141563494949484",
+        "name": "scheduler.tough_scheduling_cases/raf.html"
+    },
+    {
+        "duration": "20.107412070707074",
+        "name": "scheduler.tough_scheduling_cases/raf_animation"
+    },
+    {
+        "duration": "20.157904171717163",
+        "name": "scheduler.tough_scheduling_cases/raf_animation.html"
+    },
+    {
+        "duration": "20.010980686868685",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas"
+    },
+    {
+        "duration": "20.05047147474748",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas.html"
+    },
+    {
+        "duration": "20.11396829292929",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation"
+    },
+    {
+        "duration": "20.22658525252525",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation.html"
+    },
+    {
+        "duration": "14.074481883838383",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?heavy"
+    },
+    {
+        "duration": "13.606816444444448",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?light"
+    },
+    {
+        "duration": "13.410438166666665",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?medium"
+    },
+    {
+        "duration": "14.01574049494949",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_heavy"
+    },
+    {
+        "duration": "13.478894974747474",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_light"
+    },
+    {
+        "duration": "13.34655148989899",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_medium"
+    },
+    {
+        "duration": "31.443727040404035",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page"
+    },
+    {
+        "duration": "33.99763790909091",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page.html"
+    },
+    {
+        "duration": "14.552750707070707",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag"
+    },
+    {
+        "duration": "14.503943681818184",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag.html"
+    },
+    {
+        "duration": "17.712275898989905",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset"
+    },
+    {
+        "duration": "17.752049999999997",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset.html"
+    },
+    {
+        "duration": "18.74080136363636",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling"
+    },
+    {
+        "duration": "18.70878074747474",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling.html"
+    },
+    {
+        "duration": "1.23055776E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/amazon"
+    },
+    {
+        "duration": "24.524895737373743",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "16.34045954545455",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "1.2949307726666667E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/cnn"
+    },
+    {
+        "duration": "14.119966070707061",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/ebay"
+    },
+    {
+        "duration": "16.81267631313131",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/espn"
+    },
+    {
+        "duration": "22.07066272727273",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/facebook"
+    },
+    {
+        "duration": "49.09935537373737",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/gmail"
+    },
+    {
+        "duration": "22.73149481818183",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "34.142831060606056",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "24.221067797979796",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "29.330933858585862",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "13.346610499999999",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "16.791351262626268",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "2.2594133999999995E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "23.714489868686865",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "18.618525454545452",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/twitter"
+    },
+    {
+        "duration": "18.523074676767674",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "25.505408686868684",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "22.3742205959596",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "14.560198767676772",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "2.535025273333333E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "1.414140069333333E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "2.3182233133333335E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "24.846830494949497",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/youtube"
+    },
+    {
+        "duration": "25.76052984848485",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "26.590147606060608",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "26.111091636363653",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "39.84589948484848",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "26.052483151515144",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "26.406123696969704",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "26.218206909090917",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "39.08291685858586",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "36.01673023232323",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "34.45238589898989",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "22.044139565656565",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "22.292631696969696",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "36.53208588888888",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "34.732113868686874",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "22.05602647474748",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "22.204961313131307",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "21.11696207070707",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "24.451554070707076",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "19.641368242424242",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "17.27090371717172",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "20.280167818181816",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "22.768159626262626",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "16.72504940404041",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "21.163439020202013",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "19.064402181818178",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "22.82730244444444",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "20.34629407070707",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "24.628307626262618",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "19.67435775757576",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "27.122662646464647",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "19.755888656565652",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "18.81439401010101",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "32.09168573737373",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "19.001933101010103",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "2.446015673333333E-4",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "21.006173292929297",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "21.628647646464643",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "16.773015262626263",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "21.975497161616158",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "20.280265929292934",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "20.595406393939403",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "26.826931919191903",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "32.33893592929292",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "19.60962401010101",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "18.74491759595959",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "17.25721363636364",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "20.1888967979798",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "24.547024535353525",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "23.091215323232326",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "25.23126534343434",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "20.505353696969703",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "20.022192959595966",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.031489474747467",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.965538878787882",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "16.511926181818186",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.969218459595956",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "14.14616627272727",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.858714888888892",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "13.494269121212122",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "13.234378520202016",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.924135878787881",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "31.249575313131317",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.14562782828283",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.2661304949495",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "15.734683833333333",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.316242217171709",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.574040939393942",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.186430883838383",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.888183712121213",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.638582166666666",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.563997560606069",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.329729666666665",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.338286646464645",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "18.191561858585864",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "16.852025585858588",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "15.545855287878783",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "14.898572181818178",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "14.396316434343431",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "14.206407575757574",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "13.86773815656565",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "13.729018974747472",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "17.86150639393939",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "17.80676154545455",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "16.247779015151508",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "14.937972696969696",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "13.804608954545456",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.213207348484847",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "12.954740459595959",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.529473606060604",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.368715691919194",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.152666469696968",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "41.09864444444443",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "41.630782525252535",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "44.692067222222214",
+        "name": "smoothness.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "43.94742257575757",
+        "name": "smoothness.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "2.2479693066666668E-4",
+        "name": "smoothness.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "17.55709720202021",
+        "name": "smoothness.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "13.545399015151519",
+        "name": "smoothness.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "12.59723508080808",
+        "name": "smoothness.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "14.857383000000002",
+        "name": "smoothness.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "25.199412777777773",
+        "name": "smoothness.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "18.190514333333333",
+        "name": "smoothness.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "32.48247941414142",
+        "name": "smoothness.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "15.624060626262617",
+        "name": "smoothness.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "29.339846161616162",
+        "name": "smoothness.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "23.432964797979803",
+        "name": "smoothness.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "21.06378575757576",
+        "name": "smoothness.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "2.2813478866666665E-4",
+        "name": "smoothness.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "16.306302525252523",
+        "name": "smoothness.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "2.299149846666667E-4",
+        "name": "smoothness.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "16.776310595959597",
+        "name": "smoothness.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "1.2898445133333332E-4",
+        "name": "smoothness.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "20.71210949494949",
+        "name": "smoothness.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "17.504410676767673",
+        "name": "smoothness.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "14.18008754040404",
+        "name": "smoothness.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "14.625015439393941",
+        "name": "smoothness.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "17.431592555555554",
+        "name": "smoothness.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "13.040935404040402",
+        "name": "smoothness.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "16.767009070707072",
+        "name": "smoothness.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "21.0455445050505",
+        "name": "smoothness.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "21.234087626262625",
+        "name": "smoothness.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "18.222692767676772",
+        "name": "smoothness.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "20.264884020202015",
+        "name": "smoothness.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "14.412724646464651",
+        "name": "smoothness.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "16.054176671717173",
+        "name": "smoothness.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "25.98683172727273",
+        "name": "smoothness.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "2.2220611533333337E-4",
+        "name": "smoothness.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "24.37951702020203",
+        "name": "smoothness.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "19.072780535353537",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "19.060282272727274",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "21.140706484848483",
+        "name": "smoothness.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "24.62262038383838",
+        "name": "smoothness.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "27.12159468686868",
+        "name": "smoothness.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "14.767169535353531",
+        "name": "smoothness.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "17.01198397979798",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "16.447660434343433",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "14.078518020202015",
+        "name": "smoothness.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "26.90499862626263",
+        "name": "smoothness.key_silk_cases/basic_stream"
+    },
+    {
+        "duration": "19.292681252525263",
+        "name": "smoothness.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "20.71129448484849",
+        "name": "smoothness.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "20.33258107070707",
+        "name": "smoothness.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "18.96836579797979",
+        "name": "smoothness.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "20.511476747474752",
+        "name": "smoothness.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "19.91104524242424",
+        "name": "smoothness.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "19.92197250505051",
+        "name": "smoothness.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "21.351727535353533",
+        "name": "smoothness.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "20.439925707070703",
+        "name": "smoothness.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "20.698489414141427",
+        "name": "smoothness.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "20.009638363636373",
+        "name": "smoothness.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "50.13250353535353",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "18.18021719191919",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "16.841739131313133",
+        "name": "smoothness.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "19.27645633333333",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "19.013591969696968",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "19.307170565656566",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "19.93931068686868",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "20.445834161616155",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "19.919276757575762",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "20.631283737373742",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "19.080664737373734",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "20.520841171717173",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "20.30407412121212",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "19.871802949494942",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "21.40710482828283",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "17.756799828282833",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "26.86092432323232",
+        "name": "smoothness.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "3.138065333333333E-4",
+        "name": "smoothness.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "27.426077424242425",
+        "name": "smoothness.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "20.802156272727267",
+        "name": "smoothness.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "3.429094980000001E-4",
+        "name": "smoothness.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "20.436689393939393",
+        "name": "smoothness.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "3.690560673333333E-4",
+        "name": "smoothness.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "26.107500484848483",
+        "name": "smoothness.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "15.460563848484853",
+        "name": "smoothness.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "22.50313867676767",
+        "name": "smoothness.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "23.632714858585864",
+        "name": "smoothness.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "23.616908555555554",
+        "name": "smoothness.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "17.797932191919188",
+        "name": "smoothness.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "18.065830252525245",
+        "name": "smoothness.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "41.34727020202021",
+        "name": "smoothness.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "19.907776383838392",
+        "name": "smoothness.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "22.779913222222223",
+        "name": "smoothness.key_silk_cases/masonry"
+    },
+    {
+        "duration": "22.82207624242425",
+        "name": "smoothness.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "17.67548547474748",
+        "name": "smoothness.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "20.3147751010101",
+        "name": "smoothness.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "16.856391808080804",
+        "name": "smoothness.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "21.38141050505051",
+        "name": "smoothness.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "27.20109378787877",
+        "name": "smoothness.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "27.074494545454538",
+        "name": "smoothness.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "17.71267705050505",
+        "name": "smoothness.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "26.08195802020202",
+        "name": "smoothness.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "27.265291767676757",
+        "name": "smoothness.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "15.381321106060605",
+        "name": "smoothness.key_silk_cases/swipe_action"
+    },
+    {
+        "duration": "19.077374898989905",
+        "name": "smoothness.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "22.51940215151515",
+        "name": "smoothness.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "21.347011474747482",
+        "name": "smoothness.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "19.8323550909091",
+        "name": "smoothness.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "19.167269222222224",
+        "name": "smoothness.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "5.44722876E-4",
+        "name": "smoothness.maps/maps_perf_test"
+    },
+    {
+        "duration": "41.36701723232323",
+        "name": "smoothness.pathological_mobile_sites/cnn_pathological"
+    },
+    {
+        "duration": "21.179246363636356",
+        "name": "smoothness.pathological_mobile_sites/espn_pathological"
+    },
+    {
+        "duration": "17.081710666666666",
+        "name": "smoothness.pathological_mobile_sites/guardian_pathological"
+    },
+    {
+        "duration": "38.759550323232304",
+        "name": "smoothness.pathological_mobile_sites/http://edition.cnn.com"
+    },
+    {
+        "duration": "20.93713734343434",
+        "name": "smoothness.pathological_mobile_sites/http://m.espn.go.com/nhl/rankings"
+    },
+    {
+        "duration": "24.601795171717168",
+        "name": "smoothness.pathological_mobile_sites/http://recode.net"
+    },
+    {
+        "duration": "2.188841493333333E-4",
+        "name": "smoothness.pathological_mobile_sites/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "23.303244484848488",
+        "name": "smoothness.pathological_mobile_sites/http://www.latimes.com"
+    },
+    {
+        "duration": "23.285375171717167",
+        "name": "smoothness.pathological_mobile_sites/http://www.pbs.org/newshour/bb/much-really-cost-live-city-like-seattle/#the-rundown"
+    },
+    {
+        "duration": "17.130875262626265",
+        "name": "smoothness.pathological_mobile_sites/http://www.theguardian.com/politics/2015/mar/09/ed-balls-tory-spending-plans-nhs-charging"
+    },
+    {
+        "duration": "25.625169747474754",
+        "name": "smoothness.pathological_mobile_sites/http://www.wowwiki.com/World_of_Warcraft:_Mists_of_Pandaria"
+    },
+    {
+        "duration": "21.121087151515155",
+        "name": "smoothness.pathological_mobile_sites/http://www.zdnet.com"
+    },
+    {
+        "duration": "20.425417787878782",
+        "name": "smoothness.pathological_mobile_sites/https://www.linkedin.com/in/linustorvalds"
+    },
+    {
+        "duration": "22.90540736363637",
+        "name": "smoothness.pathological_mobile_sites/latimes_pathological"
+    },
+    {
+        "duration": "20.31524918181818",
+        "name": "smoothness.pathological_mobile_sites/linkedin_pathological"
+    },
+    {
+        "duration": "23.226971090909096",
+        "name": "smoothness.pathological_mobile_sites/pbs_pathological"
+    },
+    {
+        "duration": "24.579345242424253",
+        "name": "smoothness.pathological_mobile_sites/recode_pathological"
+    },
+    {
+        "duration": "25.576624838383832",
+        "name": "smoothness.pathological_mobile_sites/wow_wiki_pathological"
+    },
+    {
+        "duration": "21.463127636363634",
+        "name": "smoothness.pathological_mobile_sites/zdnet_pathological"
+    },
+    {
+        "duration": "45.25056666666666",
+        "name": "smoothness.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "27.654386111111123",
+        "name": "smoothness.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "45.793466929292926",
+        "name": "smoothness.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "28.55916111111111",
+        "name": "smoothness.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "4.8128763866666675E-4",
+        "name": "smoothness.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "28.273414525252516",
+        "name": "smoothness.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "27.584972717171713",
+        "name": "smoothness.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "18.86527856565656",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "18.127382434343428",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "13.920860585858582",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "12.888968424242423",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "14.957914570707068",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "26.349917616161616",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "18.276269646464645",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "34.770403919191914",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "15.827431277777782",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "31.904483363636373",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "23.970836444444437",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "21.480627686868687",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "2.2540092533333337E-4",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "16.567789939393933",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "23.109192262626262",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "17.23109674747475",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "16.82884157575758",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "21.047385232323233",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "19.67134111111111",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "14.484995035353535",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "15.239010510101009",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "17.62561329292929",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "13.194122045454549",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "17.470524262626274",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "22.003579232323236",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "21.445705898989896",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "18.602194494949497",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "20.734590707070698",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "14.648728181818186",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "16.41915406060606",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "26.603748050505047",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "17.979503090909102",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "24.463691262626256",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "19.178330212121217",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "19.28193493939395",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "21.71304154545454",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "25.12179285858584",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "27.779833858585857",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "14.874400646464649",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "17.73456583838384",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "16.896913474747464",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "14.32109402020202",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "1.1660257953333334E-4",
+        "name": "smoothness.top_25_smooth/amazon"
+    },
+    {
+        "duration": "24.374840444444445",
+        "name": "smoothness.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "16.222705853535352",
+        "name": "smoothness.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "1.2224515266666665E-4",
+        "name": "smoothness.top_25_smooth/cnn"
+    },
+    {
+        "duration": "13.574984555555549",
+        "name": "smoothness.top_25_smooth/ebay"
+    },
+    {
+        "duration": "17.12089692929293",
+        "name": "smoothness.top_25_smooth/espn"
+    },
+    {
+        "duration": "21.71256403030304",
+        "name": "smoothness.top_25_smooth/facebook"
+    },
+    {
+        "duration": "43.07902963636363",
+        "name": "smoothness.top_25_smooth/gmail"
+    },
+    {
+        "duration": "22.474657424242427",
+        "name": "smoothness.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "34.23717278787878",
+        "name": "smoothness.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "24.152497636363634",
+        "name": "smoothness.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "29.36571842424243",
+        "name": "smoothness.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "13.430596782828289",
+        "name": "smoothness.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "16.184149015151522",
+        "name": "smoothness.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "20.21820613131314",
+        "name": "smoothness.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "23.828966646464654",
+        "name": "smoothness.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "17.88957007070707",
+        "name": "smoothness.top_25_smooth/twitter"
+    },
+    {
+        "duration": "18.180300989898992",
+        "name": "smoothness.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "25.20919715151517",
+        "name": "smoothness.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "22.20626945454546",
+        "name": "smoothness.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "14.782351494949502",
+        "name": "smoothness.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "2.445379893333333E-4",
+        "name": "smoothness.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "1.3376871826666664E-4",
+        "name": "smoothness.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "2.3191769933333337E-4",
+        "name": "smoothness.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "25.139062595959597",
+        "name": "smoothness.top_25_smooth/youtube"
+    },
+    {
+        "duration": "37.566104747474746",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swiffy72.html"
+    },
+    {
+        "duration": "22.75481449494949",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swiffy72.html"
+    },
+    {
+        "duration": "22.791927464646456",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swiffy72.html"
+    },
+    {
+        "duration": "22.749342979797973",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swiffy72.html"
+    },
+    {
+        "duration": "22.840229818181808",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swiffy72.html"
+    },
+    {
+        "duration": "22.694986757575762",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swiffy72.html"
+    },
+    {
+        "duration": "22.744466181818186",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swiffy72.html"
+    },
+    {
+        "duration": "22.88674738383839",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swiffy72.html"
+    },
+    {
+        "duration": "22.799753050505053",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swiffy72.html"
+    },
+    {
+        "duration": "22.76845976767676",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swiffy72.html"
+    },
+    {
+        "duration": "22.76824221212121",
+        "name": "smoothness.tough_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swiffy72.html"
+    },
+    {
+        "duration": "27.611263383838367",
+        "name": "smoothness.tough_animation_cases/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "29.471022575757573",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations.html"
+    },
+    {
+        "duration": "3.66858075E-4",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations_composited_transform.html"
+    },
+    {
+        "duration": "25.713329050505052",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "25.703923414141407",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties.html"
+    },
+    {
+        "duration": "25.740308191919194",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "25.740635818181822",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties.html"
+    },
+    {
+        "duration": "25.604342515151515",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "25.478231515151506",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties.html"
+    },
+    {
+        "duration": "23.987898898989894",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas"
+    },
+    {
+        "duration": "24.386034979797984",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas.html"
+    },
+    {
+        "duration": "25.645952757575756",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css"
+    },
+    {
+        "duration": "27.306265535353536",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css.html"
+    },
+    {
+        "duration": "52.511100676767676",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations"
+    },
+    {
+        "duration": "48.34083607070706",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations.html"
+    },
+    {
+        "duration": "24.647488714285714",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation"
+    },
+    {
+        "duration": "24.57129423232323",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation.html?N=0200"
+    },
+    {
+        "duration": "27.134263969696963",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes"
+    },
+    {
+        "duration": "27.075773424242424",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "26.42534038383838",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.5469462929293",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "25.499252020202036",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "25.48371678787878",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "25.624463868686874",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "26.52908454545455",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "25.659820494949493",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "25.632677777777783",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "28.400214404040398",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "27.634469010101007",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.26025283838383",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.33140557575758",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "24.32929054545455",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "24.139989414141414",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "27.468771313131306",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "28.673804797979805",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "27.700139303030298",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "28.227563656565653",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.055785838383848",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "27.065391575757566",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "27.081503595959603",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "27.487269606060604",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "27.47081338383839",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "28.543375404040408",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "26.414527666666658",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "27.32599766666668",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "26.156694797979792",
+        "name": "smoothness.tough_animation_cases/css_transitions_inline_style"
+    },
+    {
+        "duration": "26.900520949494936",
+        "name": "smoothness.tough_animation_cases/css_transitions_new_element"
+    },
+    {
+        "duration": "26.599889747474744",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.939225919191912",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "25.90693724242424",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.071173363636355",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.093805252525243",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "26.285322010101005",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.340945515151528",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.2491228080808",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.348774",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "26.16033152525253",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "26.417600949494943",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "26.438255282828287",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "25.970924383838394",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "26.46327785858587",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "26.565640525252526",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "26.5010747070707",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "26.044905282828292",
+        "name": "smoothness.tough_animation_cases/css_transitions_style_element"
+    },
+    {
+        "duration": "26.54759498989898",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "26.829730919191917",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "26.20531594949495",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "26.648174404040397",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "26.015481090909095",
+        "name": "smoothness.tough_animation_cases/css_transitions_updating_class"
+    },
+    {
+        "duration": "24.390295606060608",
+        "name": "smoothness.tough_animation_cases/css_value_type_color"
+    },
+    {
+        "duration": "24.403420656565654",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.453304696969706",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "34.302680525252526",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter"
+    },
+    {
+        "duration": "33.467742898989904",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.064273626262622",
+        "name": "smoothness.tough_animation_cases/css_value_type_length"
+    },
+    {
+        "duration": "24.049770262626268",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.869115353535356",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.41447358585859",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex"
+    },
+    {
+        "duration": "24.452365161616168",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.377041383838378",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.58159649494949",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple"
+    },
+    {
+        "duration": "24.505770202020198",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.338468626262618",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.938714353535346",
+        "name": "smoothness.tough_animation_cases/css_value_type_path"
+    },
+    {
+        "duration": "24.939099414141406",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "25.03333175757576",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.684557636363635",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow"
+    },
+    {
+        "duration": "24.7732092929293",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "24.697569808080814",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.83477600000001",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex"
+    },
+    {
+        "duration": "23.92827231313132",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.848155878787896",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "24.00085215151515",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple"
+    },
+    {
+        "duration": "23.94281463636363",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "23.985719555555555",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "23.674892242424242",
+        "name": "smoothness.tough_animation_cases/keyframed_animations"
+    },
+    {
+        "duration": "23.534769474747478",
+        "name": "smoothness.tough_animation_cases/keyframed_animations.html"
+    },
+    {
+        "duration": "26.402558858585852",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "26.30406709090909",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference.html"
+    },
+    {
+        "duration": "26.467324010101017",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "26.252877464646446",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue.html"
+    },
+    {
+        "duration": "25.117269737373764",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "25.83119855555556",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "25.635079494949483",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen.html"
+    },
+    {
+        "duration": "25.0534036969697",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_propagating_isolation.html"
+    },
+    {
+        "duration": "32.26684751515151",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions.html"
+    },
+    {
+        "duration": "32.438798808080804",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "4.381963135714285E-4",
+        "name": "smoothness.tough_animation_cases/robohornetpro"
+    },
+    {
+        "duration": "23.713245676767674",
+        "name": "smoothness.tough_animation_cases/transform_transition_js_block.html"
+    },
+    {
+        "duration": "23.90067547474748",
+        "name": "smoothness.tough_animation_cases/transform_transitions"
+    },
+    {
+        "duration": "23.645098383838384",
+        "name": "smoothness.tough_animation_cases/transform_transitions.html"
+    },
+    {
+        "duration": "23.89191277777778",
+        "name": "smoothness.tough_animation_cases/transform_transitions_js_block"
+    },
+    {
+        "duration": "24.53542193939393",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_color"
+    },
+    {
+        "duration": "24.036553313131314",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "24.376123585858583",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "24.317938868686866",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "25.324441555555556",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_path"
+    },
+    {
+        "duration": "24.762161343434357",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "24.015104080808076",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "24.108362696969692",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "34.35254650505052",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes"
+    },
+    {
+        "duration": "34.469269969696974",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "24.395535565656573",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time"
+    },
+    {
+        "duration": "24.166144565656563",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time_in_raf.html?N=0316"
+    },
+    {
+        "duration": "25.70610251515152",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous"
+    },
+    {
+        "duration": "25.638222767676766",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous.html?N=0316"
+    },
+    {
+        "duration": "26.944774898989902",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "26.86470763636365",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining.html?N=0316"
+    },
+    {
+        "duration": "24.28081611111112",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "24.216241474747477",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "27.00406319191918",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering.html?N=0316"
+    },
+    {
+        "duration": "27.14112351515152",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "21.164070717171715",
+        "name": "smoothness.tough_canvas_cases/../../../chrome/test/data/perf/canvas_bench/many_images.html"
+    },
+    {
+        "duration": "17.160102595959604",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_15"
+    },
+    {
+        "duration": "18.50605545454546",
+        "name": "smoothness.tough_canvas_cases/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "17.37002537373737",
+        "name": "smoothness.tough_canvas_cases/bouncing_gradient_circles"
+    },
+    {
+        "duration": "16.00244564141414",
+        "name": "smoothness.tough_canvas_cases/bouncing_png_images"
+    },
+    {
+        "duration": "22.67956595959597",
+        "name": "smoothness.tough_canvas_cases/bouncing_svg_images"
+    },
+    {
+        "duration": "16.840713242424236",
+        "name": "smoothness.tough_canvas_cases/canvas_animation_no_clear"
+    },
+    {
+        "duration": "17.326364717171714",
+        "name": "smoothness.tough_canvas_cases/canvas_arcs"
+    },
+    {
+        "duration": "17.20699978787879",
+        "name": "smoothness.tough_canvas_cases/canvas_font_cycler"
+    },
+    {
+        "duration": "17.211863212121212",
+        "name": "smoothness.tough_canvas_cases/canvas_lines"
+    },
+    {
+        "duration": "17.991204131313125",
+        "name": "smoothness.tough_canvas_cases/canvas_to_blob"
+    },
+    {
+        "duration": "17.68496590909091",
+        "name": "smoothness.tough_canvas_cases/chip_tune"
+    },
+    {
+        "duration": "17.455182252525255",
+        "name": "smoothness.tough_canvas_cases/crafty_mind"
+    },
+    {
+        "duration": "17.223577323232316",
+        "name": "smoothness.tough_canvas_cases/fill_shapes"
+    },
+    {
+        "duration": "31.210099252525275",
+        "name": "smoothness.tough_canvas_cases/geo_apis"
+    },
+    {
+        "duration": "17.50000004040404",
+        "name": "smoothness.tough_canvas_cases/hakim"
+    },
+    {
+        "duration": "31.01560211111111",
+        "name": "smoothness.tough_canvas_cases/http://geoapis.appspot.com/agdnZW9hcGlzchMLEgtFeGFtcGxlQ29kZRjh1wIM"
+    },
+    {
+        "duration": "17.351575949494947",
+        "name": "smoothness.tough_canvas_cases/http://hakim.se/experiments/html5/magnetic/02/"
+    },
+    {
+        "duration": "17.73586754545455",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/TweetMap/Default.html"
+    },
+    {
+        "duration": "18.715708797979794",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/VideoCity/Default.html"
+    },
+    {
+        "duration": "17.341955242424238",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html"
+    },
+    {
+        "duration": "18.30979634343434",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/Default.html"
+    },
+    {
+        "duration": "17.65509137373738",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/FishIETank/Default.html"
+    },
+    {
+        "duration": "17.820704666666664",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/LetItSnow/"
+    },
+    {
+        "duration": "16.74729324242424",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html"
+    },
+    {
+        "duration": "19.12507734343435",
+        "name": "smoothness.tough_canvas_cases/http://jarrodoverson.com/static/demos/particleSystem/"
+    },
+    {
+        "duration": "17.066269606060605",
+        "name": "smoothness.tough_canvas_cases/http://mix10k.visitmix.com/Entry/Details/169"
+    },
+    {
+        "duration": "16.738373777777785",
+        "name": "smoothness.tough_canvas_cases/http://runway.countlessprojects.com/prototype/performance_test.html"
+    },
+    {
+        "duration": "16.9426443939394",
+        "name": "smoothness.tough_canvas_cases/http://spielzeugz.de/html5/liquid-particles.html"
+    },
+    {
+        "duration": "17.44796070707071",
+        "name": "smoothness.tough_canvas_cases/http://themaninblue.com/experiment/AnimationBenchmark/canvas/"
+    },
+    {
+        "duration": "17.668750818181813",
+        "name": "smoothness.tough_canvas_cases/http://www.chiptune.com/starfield/starfield.html"
+    },
+    {
+        "duration": "17.503547242424247",
+        "name": "smoothness.tough_canvas_cases/http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html"
+    },
+    {
+        "duration": "2.2964477466666666E-4",
+        "name": "smoothness.tough_canvas_cases/http://www.effectgames.com/demos/canvascycle/"
+    },
+    {
+        "duration": "2.3706753933333332E-4",
+        "name": "smoothness.tough_canvas_cases/http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html"
+    },
+    {
+        "duration": "17.312429555555553",
+        "name": "smoothness.tough_canvas_cases/http://www.megidish.net/awjs/"
+    },
+    {
+        "duration": "2.2864341933333336E-4",
+        "name": "smoothness.tough_canvas_cases/http://www.smashcat.org/av/canvas_test/"
+    },
+    {
+        "duration": "18.807965969696966",
+        "name": "smoothness.tough_canvas_cases/jarro_doverson"
+    },
+    {
+        "duration": "17.022661343434347",
+        "name": "smoothness.tough_canvas_cases/man_in_blue"
+    },
+    {
+        "duration": "21.373356171717163",
+        "name": "smoothness.tough_canvas_cases/many_images"
+    },
+    {
+        "duration": "17.32865202020202",
+        "name": "smoothness.tough_canvas_cases/megi_dish"
+    },
+    {
+        "duration": "18.394403121212115",
+        "name": "smoothness.tough_canvas_cases/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "17.585983111111105",
+        "name": "smoothness.tough_canvas_cases/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "17.75841659595959",
+        "name": "smoothness.tough_canvas_cases/microsoft_snow"
+    },
+    {
+        "duration": "16.70491349494949",
+        "name": "smoothness.tough_canvas_cases/microsoft_speed_reading"
+    },
+    {
+        "duration": "17.83357518181818",
+        "name": "smoothness.tough_canvas_cases/microsoft_tweet_map"
+    },
+    {
+        "duration": "18.790021888888887",
+        "name": "smoothness.tough_canvas_cases/microsoft_video_city"
+    },
+    {
+        "duration": "17.416748606060597",
+        "name": "smoothness.tough_canvas_cases/microsoft_worker_fountains"
+    },
+    {
+        "duration": "17.0913771010101",
+        "name": "smoothness.tough_canvas_cases/mix_10k"
+    },
+    {
+        "duration": "17.434438404040407",
+        "name": "smoothness.tough_canvas_cases/put_get_image_data"
+    },
+    {
+        "duration": "16.681331171717176",
+        "name": "smoothness.tough_canvas_cases/runway"
+    },
+    {
+        "duration": "16.92199405050504",
+        "name": "smoothness.tough_canvas_cases/spielzeugz"
+    },
+    {
+        "duration": "17.827119565656567",
+        "name": "smoothness.tough_canvas_cases/stroke_shapes"
+    },
+    {
+        "duration": "16.93411761616161",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-animation-no-clear.html"
+    },
+    {
+        "duration": "17.10714191919193",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-font-cycler.html"
+    },
+    {
+        "duration": "1.3955434133333333E-4",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=image_with_shadow&back=image"
+    },
+    {
+        "duration": "17.215964222222222",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=text&back=white&ball_count=15"
+    },
+    {
+        "duration": "17.262594787878786",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas_toBlob.html"
+    },
+    {
+        "duration": "17.988396686868686",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_clipped_rectangles.html"
+    },
+    {
+        "duration": "17.368214040404037",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_gradient_circles.html"
+    },
+    {
+        "duration": "16.066091075757576",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_png_images.html"
+    },
+    {
+        "duration": "22.65136867676768",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_svg_images.html"
+    },
+    {
+        "duration": "17.35151567676768",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_arcs.html"
+    },
+    {
+        "duration": "17.20516133333334",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_lines.html"
+    },
+    {
+        "duration": "17.271458454545456",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/fill_shapes.html"
+    },
+    {
+        "duration": "17.411112595959594",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/put_get_image_data.html"
+    },
+    {
+        "duration": "18.202866494949497",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/stroke_shapes.html"
+    },
+    {
+        "duration": "23.689836101010112",
+        "name": "smoothness.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "23.717296808080803",
+        "name": "smoothness.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "25.759465737373738",
+        "name": "smoothness.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "39.168105393939385",
+        "name": "smoothness.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "23.674297747474743",
+        "name": "smoothness.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "23.182021919191918",
+        "name": "smoothness.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "25.82449286868687",
+        "name": "smoothness.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "39.45965226262626",
+        "name": "smoothness.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "24.258031686868687",
+        "name": "smoothness.tough_image_decode_cases/cats_unscaled"
+    },
+    {
+        "duration": "10.993369676767678",
+        "name": "smoothness.tough_image_decode_cases/cats_viewport_width"
+    },
+    {
+        "duration": "24.424720444444453",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-unscaled.html"
+    },
+    {
+        "duration": "10.965492106060607",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-viewport-width.html"
+    },
+    {
+        "duration": "36.4929071010101",
+        "name": "smoothness.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "32.60111614141414",
+        "name": "smoothness.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "22.255570161616163",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "22.436066626262622",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "35.906910080808075",
+        "name": "smoothness.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "32.55030384848485",
+        "name": "smoothness.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "22.21335412121213",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "22.356613303030304",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "21.050206626262632",
+        "name": "smoothness.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "24.343057383838396",
+        "name": "smoothness.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "18.835041484848485",
+        "name": "smoothness.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "16.545368914141413",
+        "name": "smoothness.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "19.366915121212116",
+        "name": "smoothness.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "23.652497626262633",
+        "name": "smoothness.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "16.431954818181822",
+        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "20.603565020202016",
+        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "18.609122454545453",
+        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "22.58041447474747",
+        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "19.92990645454545",
+        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "24.229917707070722",
+        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "19.094380505050506",
+        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "26.02176236363635",
+        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "19.20905709090909",
+        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "18.169862181818186",
+        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "31.06445707070707",
+        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "18.600393686868696",
+        "name": "smoothness.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "2.2757848066666666E-4",
+        "name": "smoothness.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "21.207514353535352",
+        "name": "smoothness.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "22.07375893939394",
+        "name": "smoothness.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "16.569297010101007",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "22.299007949494953",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "20.065229242424248",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "20.117249141414145",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "25.92876433333333",
+        "name": "smoothness.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "31.173466151515157",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "19.35092365656565",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "18.16147209090909",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "16.38209351515152",
+        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "19.34558974747475",
+        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "24.20555731313132",
+        "name": "smoothness.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "22.651178292929295",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "25.365455666666673",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "19.96740282828283",
+        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "2.3783048E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "1.30049388E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "1.2202262893333334E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "1.18017196E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "1.1638005540000001E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "1.1720657366666665E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "1.1469523133333332E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "1.1487007206666667E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "1.2070337913333333E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "1.2029012006666667E-4",
+        "name": "smoothness.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "31.409220939393947",
+        "name": "smoothness.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "19.05484031313132",
+        "name": "smoothness.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "17.06366608080808",
+        "name": "smoothness.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "15.53777792424243",
+        "name": "smoothness.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.194152126262617",
+        "name": "smoothness.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.496029535353538",
+        "name": "smoothness.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.10134365656566",
+        "name": "smoothness.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.854155232323233",
+        "name": "smoothness.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.598487772727275",
+        "name": "smoothness.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.412952333333333",
+        "name": "smoothness.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "20.292686797979805",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.333250262626265",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "18.279057111111108",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "16.95528735353535",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "15.565462398989908",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "14.906913702020205",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "14.482659277777774",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "14.342203939393947",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "13.876440843434334",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "13.728503555555555",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "17.777928727272727",
+        "name": "smoothness.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "17.723023131313127",
+        "name": "smoothness.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "16.12905627777778",
+        "name": "smoothness.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "14.917301151515153",
+        "name": "smoothness.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "13.73684788888889",
+        "name": "smoothness.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.16780646969697",
+        "name": "smoothness.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "12.837184055555554",
+        "name": "smoothness.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.512531515151517",
+        "name": "smoothness.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.28193651010101",
+        "name": "smoothness.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "12.136767267676769",
+        "name": "smoothness.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "37.75510512121213",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation"
+    },
+    {
+        "duration": "38.27912555555555",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation.html"
+    },
+    {
+        "duration": "23.356984292929294",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "23.385752636363623",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient.html"
+    },
+    {
+        "duration": "23.60153844444445",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads"
+    },
+    {
+        "duration": "23.60779408080807",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads.html"
+    },
+    {
+        "duration": "22.769195484848485",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads"
+    },
+    {
+        "duration": "22.74274404040404",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads.html"
+    },
+    {
+        "duration": "22.96492362626263",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads"
+    },
+    {
+        "duration": "22.790288626262615",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads.html"
+    },
+    {
+        "duration": "22.8161899090909",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads"
+    },
+    {
+        "duration": "22.850236797979804",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads.html"
+    },
+    {
+        "duration": "35.09122114141414",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgICQ15a9NxDIARjIASgBMghBC1XuTk8ezw.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.874268464646473",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgIDQ2Pb-MxCsAhj6ASgBMgi5DLoSO0gPbQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.83259515151515",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCN39CopQEQoAEY2AQoATIID59gK5hjjIg.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.824578080808084",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgKCNj4HgyAEQeBjYBCgBMgjQpPkOjyWNdw.1.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.790422515151512",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CICAgMDOrcnRGRB4GNgEKAEyCP_ZBSfwUFsj.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.731339515151515",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/CNP2xe_LmqPEKBCsAhj6ASgBMggnyMqth81h8Q.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.85169609090909",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CICAgMDO7Ye9-gEQ2AUYWigBMgjZxDii6aoK9w.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.828592939393946",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/clip-paths-CILZhLqO_-27bxB4GNgEKAEyCC46kMLBXnMT.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.910764717171713",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/filters-CNLa0t2T47qJ_wEQoAEY2AQoATIIFaIdc7VMBr4.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.844826838383845",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CICAgMDO7cfIzwEQ1AMYPCgBMghqY8tqyRCArQ.swf.webglbeta.html"
+    },
+    {
+        "duration": "22.714801242424247",
+        "name": "smoothness.tough_webgl_ad_cases/http://localhost:8000/shapes-CK7ptO3F8bi2KxDQAhiYAigBMgij6QBQtD2gyA.swf.webglbeta.html"
+    },
+    {
+        "duration": "4.940926921212123",
+        "name": "smoothness.tough_webgl_cases/animometer_webgl"
+    },
+    {
+        "duration": "4.943411357575757",
+        "name": "smoothness.tough_webgl_cases/aquarium"
+    },
+    {
+        "duration": "4.934436577777777",
+        "name": "smoothness.tough_webgl_cases/aquarium_20k"
+    },
+    {
+        "duration": "4.952364348484849",
+        "name": "smoothness.tough_webgl_cases/blob"
+    },
+    {
+        "duration": "4.960122934343434",
+        "name": "smoothness.tough_webgl_cases/dynamic_cube_map"
+    },
+    {
+        "duration": "4.965190709090908",
+        "name": "smoothness.tough_webgl_cases/earth"
+    },
+    {
+        "duration": "5.03587205050505",
+        "name": "smoothness.tough_webgl_cases/http://kenrussell.github.io/webgl-animometer/Animometer/tests/3d/webgl.html"
+    },
+    {
+        "duration": "5.0392020888888895",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/aquarium/aquarium.html"
+    },
+    {
+        "duration": "5.026765267676766",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/blob/blob.html"
+    },
+    {
+        "duration": "5.010128805050507",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/dynamic-cubemap/dynamic-cubemap.html"
+    },
+    {
+        "duration": "18.22283732323233",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html"
+    },
+    {
+        "duration": "5.594082657575759",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/particles/index.html"
+    },
+    {
+        "duration": "5.029102102020202",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/san-angeles/index.html"
+    },
+    {
+        "duration": "5.596578876767674",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/Earth.html"
+    },
+    {
+        "duration": "5.026748935353535",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/ManyPlanetsDeep.html"
+    },
+    {
+        "duration": "4.957884744444445",
+        "name": "smoothness.tough_webgl_cases/ken_russell"
+    },
+    {
+        "duration": "4.9347522404040385",
+        "name": "smoothness.tough_webgl_cases/many_planets_deep"
+    },
+    {
+        "duration": "18.14067462121212",
+        "name": "smoothness.tough_webgl_cases/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "4.945401291919192",
+        "name": "smoothness.tough_webgl_cases/particles"
+    },
+    {
+        "duration": "4.943038843434343",
+        "name": "smoothness.tough_webgl_cases/san_angeles"
+    },
+    {
+        "duration": "5.0509314",
+        "name": "smoothness.tough_webgl_cases/sans_angeles"
+    },
+    {
+        "duration": "101.1894783535353",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "99.99052321212122",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "161.35737090909095",
+        "name": "speedometer2-future/Speedometer2"
+    },
+    {
+        "duration": "159.3186854545454",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "24.18108987878787",
+        "name": "system_health.common_mobile/background:media:imgur"
+    },
+    {
+        "duration": "2.4245580133333336E-4",
+        "name": "system_health.common_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "26.392555737373737",
+        "name": "system_health.common_mobile/background:search:google"
+    },
+    {
+        "duration": "35.15583113131312",
+        "name": "system_health.common_mobile/background:social:facebook"
+    },
+    {
+        "duration": "37.17713101010103",
+        "name": "system_health.common_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "2.612749733333334E-4",
+        "name": "system_health.common_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "2.714474986666667E-4",
+        "name": "system_health.common_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "90.94597317171713",
+        "name": "system_health.common_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "51.98594369696969",
+        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "83.28382002020203",
+        "name": "system_health.common_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "117.68803058585853",
+        "name": "system_health.common_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "128.25075941414144",
+        "name": "system_health.common_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "67.16392953535356",
+        "name": "system_health.common_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "1.8924077266666665E-4",
+        "name": "system_health.common_mobile/browse:news:globo"
+    },
+    {
+        "duration": "60.54536827272727",
+        "name": "system_health.common_mobile/browse:news:qq"
+    },
+    {
+        "duration": "63.31576633333332",
+        "name": "system_health.common_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.597967786666667E-4",
+        "name": "system_health.common_mobile/browse:news:toi"
+    },
+    {
+        "duration": "58.53521563636363",
+        "name": "system_health.common_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "81.81318051515152",
+        "name": "system_health.common_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "8.956114553333334E-4",
+        "name": "system_health.common_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "2.9471715400000004E-4",
+        "name": "system_health.common_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "40.6787699090909",
+        "name": "system_health.common_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "73.64035073737371",
+        "name": "system_health.common_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "147.19671939393936",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "98.93098746464645",
+        "name": "system_health.common_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "92.7961898080808",
+        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "111.40587513131311",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "59.420169868686834",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "81.69079011111111",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "48.576715595959605",
+        "name": "system_health.common_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "21.147984191919193",
+        "name": "system_health.common_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "27.184930424242427",
+        "name": "system_health.common_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "21.375375696969698",
+        "name": "system_health.common_mobile/load:games:lazors"
+    },
+    {
+        "duration": "1.47072474E-4",
+        "name": "system_health.common_mobile/load:games:spychase"
+    },
+    {
+        "duration": "26.344697484848485",
+        "name": "system_health.common_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "24.268572292929296",
+        "name": "system_health.common_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "24.467236626262626",
+        "name": "system_health.common_mobile/load:media:google_images"
+    },
+    {
+        "duration": "23.602189404040395",
+        "name": "system_health.common_mobile/load:media:imgur"
+    },
+    {
+        "duration": "2.529939013333333E-4",
+        "name": "system_health.common_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "23.98299596969697",
+        "name": "system_health.common_mobile/load:media:youtube"
+    },
+    {
+        "duration": "42.61073880808081",
+        "name": "system_health.common_mobile/load:news:cnn"
+    },
+    {
+        "duration": "31.64321411111111",
+        "name": "system_health.common_mobile/load:news:irctc"
+    },
+    {
+        "duration": "28.900214272727272",
+        "name": "system_health.common_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "23.333706979797974",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "24.943932505050505",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "26.48335293939394",
+        "name": "system_health.common_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "24.781586777777775",
+        "name": "system_health.common_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "23.45532779797978",
+        "name": "system_health.common_mobile/load:search:baidu"
+    },
+    {
+        "duration": "24.553983151515162",
+        "name": "system_health.common_mobile/load:search:ebay"
+    },
+    {
+        "duration": "22.10576062626263",
+        "name": "system_health.common_mobile/load:search:google"
+    },
+    {
+        "duration": "23.93082384848485",
+        "name": "system_health.common_mobile/load:search:taobao"
+    },
+    {
+        "duration": "22.375469868686867",
+        "name": "system_health.common_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "23.22817067676767",
+        "name": "system_health.common_mobile/load:search:yandex"
+    },
+    {
+        "duration": "23.328755343434345",
+        "name": "system_health.common_mobile/load:social:twitter"
+    },
+    {
+        "duration": "22.666380676767673",
+        "name": "system_health.common_mobile/load:tools:docs"
+    },
+    {
+        "duration": "8.911291713333333E-4",
+        "name": "system_health.common_mobile/load:tools:drive"
+    },
+    {
+        "duration": "25.617729484848486",
+        "name": "system_health.common_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "2.4518966666666674E-4",
+        "name": "system_health.common_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "24.2470076969697",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "30.512536787878783",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "2.47033436E-4",
+        "name": "system_health.common_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "148.35629434343434",
+        "name": "system_health.common_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "26.689088239057234",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "43.605099259259255",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "27.629449383838388",
+        "name": "system_health.memory_mobile/background:search:google"
+    },
+    {
+        "duration": "31.32640464646465",
+        "name": "system_health.memory_mobile/background:social:facebook"
+    },
+    {
+        "duration": "36.24015601010102",
+        "name": "system_health.memory_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "3.3820470133333325E-4",
+        "name": "system_health.memory_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "5.445639295555557E-4",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "82.61819185185183",
+        "name": "system_health.memory_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "47.38979053872055",
+        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "73.16914987205386",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "88.89822050841751",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "97.6717171952861",
+        "name": "system_health.memory_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "56.41835273737374",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "3.1030443000000003E-4",
+        "name": "system_health.memory_mobile/browse:news:globo"
+    },
+    {
+        "duration": "53.106400488215506",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "58.371944700336726",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "4.5022964533333334E-4",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "51.49007767676768",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "62.45320258249154",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "66.68908844444447",
+        "name": "system_health.memory_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "4.562430895555556E-4",
+        "name": "system_health.memory_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "37.14807175757575",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "65.18929886195284",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "85.33032024915828",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "83.04938974747472",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "77.86746492592592",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "80.75024849831648",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "53.976796592592585",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "66.86198771380472",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "47.010716424242425",
+        "name": "system_health.memory_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "23.778743478114475",
+        "name": "system_health.memory_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "24.768241400673386",
+        "name": "system_health.memory_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "23.985615882154885",
+        "name": "system_health.memory_mobile/load:games:lazors"
+    },
+    {
+        "duration": "3.4979184399999995E-4",
+        "name": "system_health.memory_mobile/load:games:spychase"
+    },
+    {
+        "duration": "28.436342528619534",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "26.05365278787879",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "26.233383013468014",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "25.27644202020203",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "5.12303246E-4",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "26.201776666666674",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "39.71385504377105",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "27.830685538720545",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "29.35694665319865",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "25.24424249158249",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "26.782541225589206",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "26.87544528282828",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "26.63186438720539",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "25.553615986531987",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "24.953128262626265",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "24.679604420875418",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "25.38720274410775",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "24.632993592592587",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "25.09154947811449",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "25.340743589225582",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "25.124355572390584",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "0.0014359897973333332",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "26.72873752188552",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "4.7581460399999994E-4",
+        "name": "system_health.memory_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "26.276817791245787",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "30.29064299663301",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "0.001864364406666667",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "3.5593774711111117E-4",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "26.161253188383842",
+        "name": "system_health.webview_startup/load:chrome:blank"
+    },
+    {
+        "duration": "36.944721909090916",
+        "name": "thread_times.key_idle_power_cases/animated-gif.html"
+    },
+    {
+        "duration": "44.83473018181817",
+        "name": "thread_times.key_idle_power_cases/blank.html"
+    },
+    {
+        "duration": "40.63559192929293",
+        "name": "thread_times.key_idle_power_cases/css-animation.html"
+    },
+    {
+        "duration": "37.93365192307692",
+        "name": "thread_times.key_idle_power_cases/idle_power_animated_gif"
+    },
+    {
+        "duration": "44.008263769230766",
+        "name": "thread_times.key_idle_power_cases/idle_power_blank"
+    },
+    {
+        "duration": "43.33547130769231",
+        "name": "thread_times.key_idle_power_cases/idle_power_css_animation"
+    },
+    {
+        "duration": "48.97539676923077",
+        "name": "thread_times.key_idle_power_cases/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "138.33428992307694",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "49.77373861538462",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timetout"
+    },
+    {
+        "duration": "43.278544474747484",
+        "name": "thread_times.key_idle_power_cases/request-animation-frame.html"
+    },
+    {
+        "duration": "43.63306935353535",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html"
+    },
+    {
+        "duration": "120.48887361616164",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html (Long Idle)"
+    },
+    {
+        "duration": "39.42497866666668",
+        "name": "thread_times.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "35.20563182828283",
+        "name": "thread_times.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "36.77913139393939",
+        "name": "thread_times.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "27.84804611111112",
+        "name": "thread_times.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "27.375217454545467",
+        "name": "thread_times.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "47.335567",
+        "name": "thread_times.key_noop_cases/no_op_raf"
+    },
+    {
+        "duration": "38.41814983838383",
+        "name": "thread_times.key_noop_cases/no_op_raf.html"
+    },
+    {
+        "duration": "18.91499141666667",
+        "name": "thread_times.key_noop_cases/no_op_scroll"
+    },
+    {
+        "duration": "18.001440949494945",
+        "name": "thread_times.key_noop_cases/no_op_scroll.html"
+    },
+    {
+        "duration": "18.164605833333333",
+        "name": "thread_times.key_noop_cases/no_op_settimeout"
+    },
+    {
+        "duration": "16.832522171717173",
+        "name": "thread_times.key_noop_cases/no_op_settimeout.html"
+    },
+    {
+        "duration": "22.58517541666667",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler"
+    },
+    {
+        "duration": "19.601679484848486",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler.html"
+    },
+    {
+        "duration": "19.828505494949496",
+        "name": "thread_times.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "22.351141242424234",
+        "name": "thread_times.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "21.653947414141413",
+        "name": "thread_times.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "19.224401040404047",
+        "name": "thread_times.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "20.202483141414145",
+        "name": "thread_times.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "18.709379171717174",
+        "name": "thread_times.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "18.474257515151503",
+        "name": "thread_times.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "21.23441940404039",
+        "name": "thread_times.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "19.029452747474746",
+        "name": "thread_times.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "19.089048939393944",
+        "name": "thread_times.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "21.394447020202026",
+        "name": "thread_times.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "38.62041625252526",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "15.903232424242429",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "15.250707282828289",
+        "name": "thread_times.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "18.844037565656574",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "18.40671934343435",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "19.521147070707062",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "20.46293390909091",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "20.559360323232312",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "20.946341686868685",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "21.215804343434343",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "18.89324792929293",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "19.811309616161612",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "21.468451020202025",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "20.218381787878794",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "20.602669757575757",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "15.842068828282834",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "2.2912025466666666E-4",
+        "name": "thread_times.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "2.3624102199999996E-4",
+        "name": "thread_times.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "26.837331666666664",
+        "name": "thread_times.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "18.812284545454553",
+        "name": "thread_times.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "2.3042361000000003E-4",
+        "name": "thread_times.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "18.764339979797974",
+        "name": "thread_times.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "2.4601618399999997E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "26.38274854545454",
+        "name": "thread_times.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "2.330144226666667E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "21.12955637373738",
+        "name": "thread_times.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "25.562330141414147",
+        "name": "thread_times.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "23.9600619090909",
+        "name": "thread_times.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "18.36831162626262",
+        "name": "thread_times.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "16.57654583838384",
+        "name": "thread_times.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "39.81835521212121",
+        "name": "thread_times.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "22.098947949494942",
+        "name": "thread_times.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "1.2723604766666667E-4",
+        "name": "thread_times.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "16.026690924242423",
+        "name": "thread_times.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "22.90036192929293",
+        "name": "thread_times.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "15.608438929292928",
+        "name": "thread_times.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "21.69355456565656",
+        "name": "thread_times.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "32.437968909090905",
+        "name": "thread_times.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "30.470906696969685",
+        "name": "thread_times.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "16.41692569191919",
+        "name": "thread_times.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "27.8799012929293",
+        "name": "thread_times.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "27.621873686868685",
+        "name": "thread_times.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "19.934170676767668",
+        "name": "thread_times.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "21.697954000000006",
+        "name": "thread_times.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "22.755808414141416",
+        "name": "thread_times.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "22.383675292929293",
+        "name": "thread_times.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "20.661253373737377",
+        "name": "thread_times.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "47.61502236363636",
+        "name": "thread_times.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "42.07739947474749",
+        "name": "thread_times.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "27.52502106060606",
+        "name": "thread_times.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "45.788579616161634",
+        "name": "thread_times.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "28.971828616161606",
+        "name": "thread_times.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "24.27415368876232",
+        "name": "thread_times.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "30.729099989899",
+        "name": "thread_times.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "28.37376694949494",
+        "name": "thread_times.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "35.400275692307694",
+        "name": "thread_times.tough_compositor_cases/cc_poster_circle"
+    },
+    {
+        "duration": "35.77934023076923",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "32.427253692307694",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_text_only"
+    },
+    {
+        "duration": "47.851176929292926",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/beqojupo/1/quiet?JS_FULL_SCREEN_INVALIDATION"
+    },
+    {
+        "duration": "33.360305808080824",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/covoqi/1/quiet?NEW_TILINGS"
+    },
+    {
+        "duration": "27.81321118181818",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/falefice/1/quiet?CC_POSTER_CIRCLE"
+    },
+    {
+        "duration": "31.095330030303025",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/giqafofe/1/quiet?JS_POSTER_CIRCLE"
+    },
+    {
+        "duration": "25.11648266666667",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/jevibahi/4/quiet?JS_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "30.88584111111112",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/pixavefe/1/quiet?CC_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "24.992810434343426",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/wixadinu/2/quiet?JS_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "25.08742275757574",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/yakagevo/1/quiet?CC_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "95.22193076923077",
+        "name": "thread_times.tough_compositor_cases/js_full_screen_invalidation"
+    },
+    {
+        "duration": "57.880795",
+        "name": "thread_times.tough_compositor_cases/js_poster_circle"
+    },
+    {
+        "duration": "36.19894784615384",
+        "name": "thread_times.tough_compositor_cases/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "31.182563923076923",
+        "name": "thread_times.tough_compositor_cases/js_scroll_text_only"
+    },
+    {
+        "duration": "58.040972538461546",
+        "name": "thread_times.tough_compositor_cases/new_tilings"
+    },
+    {
+        "duration": "2.2811889666666664E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "1.23580297E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "1.1572837926666668E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "1.1181831333333332E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "1.0960896793333332E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "1.08750661E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "1.0768572359999998E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "1.0565121913333333E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "1.0474522906666668E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "1.0331471759999998E-4",
+        "name": "thread_times.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "33.793581202020206",
+        "name": "thread_times.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "20.975316848484844",
+        "name": "thread_times.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "18.673088717171716",
+        "name": "thread_times.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "16.778838444444446",
+        "name": "thread_times.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "14.80684041919192",
+        "name": "thread_times.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "13.743519570707075",
+        "name": "thread_times.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "13.14083146969697",
+        "name": "thread_times.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "12.633471393939393",
+        "name": "thread_times.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "12.183395333333337",
+        "name": "thread_times.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "11.815895095959595",
+        "name": "thread_times.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "24.138147373737375",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.800083848484835",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.135017484848483",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "18.647249323232327",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "16.39191469696969",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "15.078225767676763",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "14.37203901515152",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "14.038045207070708",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "13.639582262626263",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "13.459516292929294",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "16.582071676767676",
+        "name": "thread_times.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "16.547001282828283",
+        "name": "thread_times.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "14.909928984848484",
+        "name": "thread_times.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "13.612550712121203",
+        "name": "thread_times.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "12.432466323232324",
+        "name": "thread_times.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "11.774848530303032",
+        "name": "thread_times.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "11.486429040404039",
+        "name": "thread_times.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "11.20937166666667",
+        "name": "thread_times.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "10.990656797979797",
+        "name": "thread_times.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "10.756262757575758",
+        "name": "thread_times.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "14.076877146464641",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "15.377648848484844",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "11.032359121212119",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "11.513995702020198",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "11.309471045454544",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "12.026278712121211",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "13.586864823232318",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "24.917630212121193",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "14.000527833333338",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "5.070050553333333E-4",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "5.317529013333332E-4",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "110.86509666666667",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "67.84422860606061",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "104.02796093939398",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "150.78285020202023",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "207.39394494949488",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "88.64297632323229",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "3.13838324E-4",
+        "name": "v8.browsing_mobile-future/browse:news:globo"
+    },
+    {
+        "duration": "74.22053616161615",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "74.0317082222222",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "4.3144226533333336E-4",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "78.10860754545455",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "129.0169937676768",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "112.54545306060609",
+        "name": "v8.browsing_mobile-future/browse:shopping:avito"
+    },
+    {
+        "duration": "4.75676852E-4",
+        "name": "v8.browsing_mobile-future/browse:shopping:flipkart"
+    },
+    {
+        "duration": "51.26100297979798",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "98.42498385858586",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "244.48941313131309",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "140.7506285252525",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "130.5766676161616",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "155.05865393939396",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "69.98950170707073",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "100.82638309090912",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "63.077395858585824",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "4.1778882400000006E-4",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "4.398028106666667E-4",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "115.03577138383844",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "69.92074444444444",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "107.20426640404041",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "150.07833929292923",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "216.11203555555554",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "91.8632984242424",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "2.67823536E-4",
+        "name": "v8.browsing_mobile/browse:news:globo"
+    },
+    {
+        "duration": "75.27625389898989",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "74.78187950505048",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "4.038333933333333E-4",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "78.94778481818179",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "137.90679531313137",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "117.41095635353531",
+        "name": "v8.browsing_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "4.3781598533333335E-4",
+        "name": "v8.browsing_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "53.36752542424244",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "102.1968413636364",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "262.72103050505046",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "143.44414161616163",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "131.67538293939393",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "157.09323393939388",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "70.52721334343435",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "103.79539572727273",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "64.65925727272732",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "10.778378242424242",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "30.759425912457907",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "10.786629675084175",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "10.781365383838382",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "23.643612597643106",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "10.828633808080811",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "23.503213040404052",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "30.7860918989899",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "40.684163191919176",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "41.06670453535355",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "41.065257141414136",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "26.948128707070705",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "50.85231806060607",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "75.63908993939394",
+        "name": "webrtc/pause_play_peerconnections"
+    }
+]
\ No newline at end of file
diff --git a/tools/perf/core/shard_maps/timing_data/android_one_story_timing.json b/tools/perf/core/shard_maps/timing_data/android_one_story_timing.json
new file mode 100644
index 0000000..867ec34
--- /dev/null
+++ b/tools/perf/core/shard_maps/timing_data/android_one_story_timing.json
@@ -0,0 +1,7766 @@
+[
+    {
+        "duration": "46.11588017676768",
+        "name": "blink_perf.bindings/append-child.html"
+    },
+    {
+        "duration": "16.958273373737367",
+        "name": "blink_perf.bindings/create-element.html"
+    },
+    {
+        "duration": "14.5496565",
+        "name": "blink_perf.bindings/document-implementation.html"
+    },
+    {
+        "duration": "16.948656121212125",
+        "name": "blink_perf.bindings/dom-attribute-on-prototoype.html"
+    },
+    {
+        "duration": "14.822673656565655",
+        "name": "blink_perf.bindings/first-child.html"
+    },
+    {
+        "duration": "33.83953399999999",
+        "name": "blink_perf.bindings/gc-forest.html"
+    },
+    {
+        "duration": "43.957746161616164",
+        "name": "blink_perf.bindings/gc-mini-tree.html"
+    },
+    {
+        "duration": "141.21343432323235",
+        "name": "blink_perf.bindings/gc-tree.html"
+    },
+    {
+        "duration": "15.903650722222219",
+        "name": "blink_perf.bindings/get-attribute-rare.html"
+    },
+    {
+        "duration": "14.907034525252529",
+        "name": "blink_perf.bindings/get-attribute.html"
+    },
+    {
+        "duration": "14.581188954545443",
+        "name": "blink_perf.bindings/get-element-by-id.html"
+    },
+    {
+        "duration": "17.277657515151517",
+        "name": "blink_perf.bindings/get-elements-by-tag-name.html"
+    },
+    {
+        "duration": "14.380509030303024",
+        "name": "blink_perf.bindings/id-getter.html"
+    },
+    {
+        "duration": "15.543626989898987",
+        "name": "blink_perf.bindings/id-setter.html"
+    },
+    {
+        "duration": "22.60305574747475",
+        "name": "blink_perf.bindings/indexed-getter.html"
+    },
+    {
+        "duration": "14.349146757575758",
+        "name": "blink_perf.bindings/insert-before.html"
+    },
+    {
+        "duration": "14.458588505050503",
+        "name": "blink_perf.bindings/named-property-enumerator.html"
+    },
+    {
+        "duration": "137.87292016161615",
+        "name": "blink_perf.bindings/node-list-access.html"
+    },
+    {
+        "duration": "14.885836641414139",
+        "name": "blink_perf.bindings/node-type.html"
+    },
+    {
+        "duration": "8.835963313131312",
+        "name": "blink_perf.bindings/post-message.html"
+    },
+    {
+        "duration": "15.741981792929295",
+        "name": "blink_perf.bindings/sequence-conversion-array.html"
+    },
+    {
+        "duration": "14.268819131313137",
+        "name": "blink_perf.bindings/sequence-conversion-custom-iterator.html"
+    },
+    {
+        "duration": "9.770539151515154",
+        "name": "blink_perf.bindings/serialize-array.html"
+    },
+    {
+        "duration": "7.976985844444439",
+        "name": "blink_perf.bindings/serialize-long-string.html"
+    },
+    {
+        "duration": "19.88010763636364",
+        "name": "blink_perf.bindings/serialize-map.html"
+    },
+    {
+        "duration": "7.711226951515152",
+        "name": "blink_perf.bindings/serialize-nested-array.html"
+    },
+    {
+        "duration": "14.113388747474751",
+        "name": "blink_perf.bindings/set-attribute-rare.html"
+    },
+    {
+        "duration": "14.538455333333333",
+        "name": "blink_perf.bindings/set-attribute.html"
+    },
+    {
+        "duration": "2.4408102000000002E-4",
+        "name": "blink_perf.bindings/structured-clone-json-deserialize.html"
+    },
+    {
+        "duration": "6.849169650000001E-4",
+        "name": "blink_perf.bindings/structured-clone-json-serialize.html"
+    },
+    {
+        "duration": "4.0650367625E-4",
+        "name": "blink_perf.bindings/structured-clone-long-string-deserialize.html"
+    },
+    {
+        "duration": "4.3269991875E-4",
+        "name": "blink_perf.bindings/structured-clone-long-string-serialize.html"
+    },
+    {
+        "duration": "15.192348070707075",
+        "name": "blink_perf.bindings/typed-array-construct-from-array.html"
+    },
+    {
+        "duration": "17.304833262626268",
+        "name": "blink_perf.bindings/typed-array-construct-from-same-type.html"
+    },
+    {
+        "duration": "14.785067257575758",
+        "name": "blink_perf.bindings/typed-array-construct-from-typed.html"
+    },
+    {
+        "duration": "14.01034472727272",
+        "name": "blink_perf.bindings/typed-array-set-from-typed.html"
+    },
+    {
+        "duration": "14.761959520202018",
+        "name": "blink_perf.bindings/undefined-first-child.html"
+    },
+    {
+        "duration": "14.571300479797983",
+        "name": "blink_perf.bindings/undefined-get-element-by-id.html"
+    },
+    {
+        "duration": "14.570636954545458",
+        "name": "blink_perf.bindings/undefined-id-getter.html"
+    },
+    {
+        "duration": "61.69041369696972",
+        "name": "blink_perf.css/AttributeDescendantSelector.html"
+    },
+    {
+        "duration": "19.13635702020202",
+        "name": "blink_perf.css/CSSPropertySetterGetter.html"
+    },
+    {
+        "duration": "19.339181656565653",
+        "name": "blink_perf.css/CSSPropertySetterGetterMethods.html"
+    },
+    {
+        "duration": "19.191257545454537",
+        "name": "blink_perf.css/CSSPropertyUpdateValue.html"
+    },
+    {
+        "duration": "16.541487671717167",
+        "name": "blink_perf.css/ChangeStyleChildClassSelector.html"
+    },
+    {
+        "duration": "13.316393287878789",
+        "name": "blink_perf.css/ChangeStyleChildElementSelectors.html"
+    },
+    {
+        "duration": "13.463064919191917",
+        "name": "blink_perf.css/ChangeStyleElementSelector.html"
+    },
+    {
+        "duration": "13.185796838383839",
+        "name": "blink_perf.css/ChangeStyleGrandChildElementSelector.html"
+    },
+    {
+        "duration": "13.107075353535354",
+        "name": "blink_perf.css/ChangeStyleMultipleClassSelector.html"
+    },
+    {
+        "duration": "13.22913037878788",
+        "name": "blink_perf.css/ChangeStyleMultipleQualifiedDataAttributesWithValuesSelector.html"
+    },
+    {
+        "duration": "12.920253080808086",
+        "name": "blink_perf.css/ChangeStyleNestedPseudoSelector.html"
+    },
+    {
+        "duration": "13.074909363636365",
+        "name": "blink_perf.css/ChangeStylePairOfNthChildSelector.html"
+    },
+    {
+        "duration": "17.373338101010102",
+        "name": "blink_perf.css/ChangeStylePartialAttributeMatchingSelector.html"
+    },
+    {
+        "duration": "13.185479878787879",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "13.190450914141406",
+        "name": "blink_perf.css/ChangeStyleQualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "15.71650965151515",
+        "name": "blink_perf.css/ChangeStyleShallowTree.html"
+    },
+    {
+        "duration": "13.085204212121216",
+        "name": "blink_perf.css/ChangeStyleSingleClassSelector.html"
+    },
+    {
+        "duration": "13.269187762626261",
+        "name": "blink_perf.css/ChangeStyleSingleNthChildSelector.html"
+    },
+    {
+        "duration": "12.953174176767671",
+        "name": "blink_perf.css/ChangeStyleSinglePseudoSelector.html"
+    },
+    {
+        "duration": "13.111936696969694",
+        "name": "blink_perf.css/ChangeStyleUniversalSelector.html"
+    },
+    {
+        "duration": "13.34662251515152",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeSelector.html"
+    },
+    {
+        "duration": "13.085113540404045",
+        "name": "blink_perf.css/ChangeStyleUnqualifiedDataAttributeWithValueSelector.html"
+    },
+    {
+        "duration": "27.715978272727277",
+        "name": "blink_perf.css/ClassDescendantSelector.html"
+    },
+    {
+        "duration": "24.381304606060596",
+        "name": "blink_perf.css/ClassInvalidation.html"
+    },
+    {
+        "duration": "17.685935535353536",
+        "name": "blink_perf.css/FocusUpdate.html"
+    },
+    {
+        "duration": "14.598226055555557",
+        "name": "blink_perf.css/LoadBootstrapBlog.html"
+    },
+    {
+        "duration": "15.423096469696976",
+        "name": "blink_perf.css/LoadMaterializeStarterPage.html"
+    },
+    {
+        "duration": "17.16691754545455",
+        "name": "blink_perf.css/LoadSemanticPageExample.html"
+    },
+    {
+        "duration": "18.817650404040403",
+        "name": "blink_perf.css/PseudoClassSelectors.html"
+    },
+    {
+        "duration": "16.922282974747475",
+        "name": "blink_perf.css/SelectorCountScaling.html"
+    },
+    {
+        "duration": "65.69019256565656",
+        "name": "blink_perf.dom/addRange.html"
+    },
+    {
+        "duration": "10.54878385858586",
+        "name": "blink_perf.dom/delete-in-password-field.html"
+    },
+    {
+        "duration": "28.800839848484852",
+        "name": "blink_perf.dom/div-editable.html"
+    },
+    {
+        "duration": "7.753005648484851",
+        "name": "blink_perf.dom/inner_html_with_selection.html"
+    },
+    {
+        "duration": "29.6456075959596",
+        "name": "blink_perf.dom/long-sibling-list.html"
+    },
+    {
+        "duration": "20.321591131313127",
+        "name": "blink_perf.dom/modify-element-classname.html"
+    },
+    {
+        "duration": "15.275251292929296",
+        "name": "blink_perf.dom/modify-element-id.html"
+    },
+    {
+        "duration": "15.726046449494952",
+        "name": "blink_perf.dom/modify-element-title.html"
+    },
+    {
+        "duration": "9.845529904040406",
+        "name": "blink_perf.dom/move-down-with-hidden-elements.html"
+    },
+    {
+        "duration": "9.873290505050502",
+        "name": "blink_perf.dom/move-up-with-hidden-elements.html"
+    },
+    {
+        "duration": "8.13497367474747",
+        "name": "blink_perf.dom/remove_child_with_selection.html"
+    },
+    {
+        "duration": "19.941283414141413",
+        "name": "blink_perf.dom/select-multiple-add.html"
+    },
+    {
+        "duration": "19.91597686868687",
+        "name": "blink_perf.dom/select-single-add.html"
+    },
+    {
+        "duration": "23.339194989898992",
+        "name": "blink_perf.dom/select-single-remove.html"
+    },
+    {
+        "duration": "13.849071040404043",
+        "name": "blink_perf.dom/textarea-dom.html"
+    },
+    {
+        "duration": "37.093740464646466",
+        "name": "blink_perf.dom/textarea-edit.html"
+    },
+    {
+        "duration": "29.98875238888889",
+        "name": "blink_perf.events/EventsDispatching.html"
+    },
+    {
+        "duration": "21.052653161616163",
+        "name": "blink_perf.events/EventsDispatchingInDeeplyNestedShadowTrees.html"
+    },
+    {
+        "duration": "5.635564945454546E-4",
+        "name": "blink_perf.events/EventsDispatchingInShadowTrees.html"
+    },
+    {
+        "duration": "136.06589464646467",
+        "name": "blink_perf.events/hit-test-lots-of-layers.html"
+    },
+    {
+        "duration": "99.12477192929296",
+        "name": "blink_perf.image_decoder/decode-gif.html"
+    },
+    {
+        "duration": "43.500876888888904",
+        "name": "blink_perf.image_decoder/decode-jpeg.html"
+    },
+    {
+        "duration": "74.2216951313131",
+        "name": "blink_perf.image_decoder/decode-lossless-webp.html"
+    },
+    {
+        "duration": "30.68299281818182",
+        "name": "blink_perf.image_decoder/decode-lossy-webp.html"
+    },
+    {
+        "duration": "47.08008320202019",
+        "name": "blink_perf.image_decoder/decode-png-palette-opaque.html"
+    },
+    {
+        "duration": "30.539590020202017",
+        "name": "blink_perf.image_decoder/decode-png-palette.html"
+    },
+    {
+        "duration": "66.46277998989896",
+        "name": "blink_perf.image_decoder/decode-png.html"
+    },
+    {
+        "duration": "17.4390527979798",
+        "name": "blink_perf.layout/ArabicLineLayout.html"
+    },
+    {
+        "duration": "9.042170202020204",
+        "name": "blink_perf.layout/Shapes/MultipleShapes.html"
+    },
+    {
+        "duration": "20.984609454545442",
+        "name": "blink_perf.layout/SimpleTextPathLineLayout.html"
+    },
+    {
+        "duration": "14.823463853535348",
+        "name": "blink_perf.layout/add-remove-inline-floats.html"
+    },
+    {
+        "duration": "19.89757577777777",
+        "name": "blink_perf.layout/attach-inlines-2.html"
+    },
+    {
+        "duration": "16.10371115656566",
+        "name": "blink_perf.layout/attach-inlines.html"
+    },
+    {
+        "duration": "17.035539474747473",
+        "name": "blink_perf.layout/auto-grid-lots-of-data.html"
+    },
+    {
+        "duration": "15.775934348484842",
+        "name": "blink_perf.layout/chapter-reflow-once-random.html"
+    },
+    {
+        "duration": "16.817956484848487",
+        "name": "blink_perf.layout/chapter-reflow-once.html"
+    },
+    {
+        "duration": "14.153643818181816",
+        "name": "blink_perf.layout/chapter-reflow-thrice.html"
+    },
+    {
+        "duration": "14.37794466161616",
+        "name": "blink_perf.layout/chapter-reflow-twice.html"
+    },
+    {
+        "duration": "14.87248212121212",
+        "name": "blink_perf.layout/chapter-reflow.html"
+    },
+    {
+        "duration": "12.27108771717172",
+        "name": "blink_perf.layout/character_fallback.html"
+    },
+    {
+        "duration": "9.37203184343434",
+        "name": "blink_perf.layout/character_fallback_aat.html"
+    },
+    {
+        "duration": "19.517009080808077",
+        "name": "blink_perf.layout/fixed-grid-lots-of-data.html"
+    },
+    {
+        "duration": "19.008170404040403",
+        "name": "blink_perf.layout/fixed-grid-lots-of-stretched-data.html"
+    },
+    {
+        "duration": "45.59447960606062",
+        "name": "blink_perf.layout/flexbox-column-nowrap.html"
+    },
+    {
+        "duration": "17.46395046464647",
+        "name": "blink_perf.layout/flexbox-column-wrap.html"
+    },
+    {
+        "duration": "19.185982868686867",
+        "name": "blink_perf.layout/flexbox-deeply-nested-column-flow.html"
+    },
+    {
+        "duration": "18.651157666666663",
+        "name": "blink_perf.layout/flexbox-lots-of-data.html"
+    },
+    {
+        "duration": "17.18123377272727",
+        "name": "blink_perf.layout/flexbox-row-nowrap.html"
+    },
+    {
+        "duration": "17.274999040404044",
+        "name": "blink_perf.layout/flexbox-row-wrap.html"
+    },
+    {
+        "duration": "15.15245080808081",
+        "name": "blink_perf.layout/flexbox-with-stretch-layout.html"
+    },
+    {
+        "duration": "143.9531676262626",
+        "name": "blink_perf.layout/floats_100_100.html"
+    },
+    {
+        "duration": "145.81074535353537",
+        "name": "blink_perf.layout/floats_100_100_nested.html"
+    },
+    {
+        "duration": "64.99751345454547",
+        "name": "blink_perf.layout/floats_10_1000.html"
+    },
+    {
+        "duration": "26.00215734343435",
+        "name": "blink_perf.layout/floats_20_100.html"
+    },
+    {
+        "duration": "30.909975858585863",
+        "name": "blink_perf.layout/floats_20_100_nested.html"
+    },
+    {
+        "duration": "16.5200756010101",
+        "name": "blink_perf.layout/floats_2_100.html"
+    },
+    {
+        "duration": "18.324629828282834",
+        "name": "blink_perf.layout/floats_2_100_nested.html"
+    },
+    {
+        "duration": "43.982632141414136",
+        "name": "blink_perf.layout/floats_50_100.html"
+    },
+    {
+        "duration": "45.676144383838405",
+        "name": "blink_perf.layout/floats_50_100_nested.html"
+    },
+    {
+        "duration": "19.07882637373738",
+        "name": "blink_perf.layout/hindi-line-layout.html"
+    },
+    {
+        "duration": "56.14791616161616",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans-wider-than-table.html"
+    },
+    {
+        "duration": "55.33814324242425",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-colspans.html"
+    },
+    {
+        "duration": "55.16999016161618",
+        "name": "blink_perf.layout/large-table-with-collapsed-borders-and-no-colspans.html"
+    },
+    {
+        "duration": "8.355988558585862",
+        "name": "blink_perf.layout/latin-complex-text.html"
+    },
+    {
+        "duration": "13.816607297979804",
+        "name": "blink_perf.layout/layers_overlap_2d.html"
+    },
+    {
+        "duration": "14.691070934343427",
+        "name": "blink_perf.layout/layers_overlap_3d.html"
+    },
+    {
+        "duration": "61.910897626262624",
+        "name": "blink_perf.layout/line-layout-line-height.html"
+    },
+    {
+        "duration": "17.49636109090909",
+        "name": "blink_perf.layout/line-layout-repeat-append.html"
+    },
+    {
+        "duration": "16.218182060606054",
+        "name": "blink_perf.layout/line-layout.html"
+    },
+    {
+        "duration": "9.823211005050505",
+        "name": "blink_perf.layout/long-line-nowrap-collapse.html"
+    },
+    {
+        "duration": "11.646156136363638",
+        "name": "blink_perf.layout/long-line-nowrap-spans-collapse.html"
+    },
+    {
+        "duration": "26.90012944444445",
+        "name": "blink_perf.layout/long-line-nowrap.html"
+    },
+    {
+        "duration": "18.99501368686869",
+        "name": "blink_perf.layout/multicol/deeply-nested-tables.html"
+    },
+    {
+        "duration": "14.022372070707068",
+        "name": "blink_perf.layout/multicol/fixed-height-with-spanner-and-nested-tables.html"
+    },
+    {
+        "duration": "16.71774947474747",
+        "name": "blink_perf.layout/multicol/lots-of-text-autofill.html"
+    },
+    {
+        "duration": "16.89946072727272",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced-orphans-widows.html"
+    },
+    {
+        "duration": "16.88104084848485",
+        "name": "blink_perf.layout/multicol/lots-of-text-balanced.html"
+    },
+    {
+        "duration": "17.365956883838386",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns-realistic.html"
+    },
+    {
+        "duration": "19.290936484848476",
+        "name": "blink_perf.layout/multicol/tall-content-short-columns.html"
+    },
+    {
+        "duration": "17.691987414141416",
+        "name": "blink_perf.layout/nested-blocks-with-percent-height-and-max-height.html"
+    },
+    {
+        "duration": "15.683902126262621",
+        "name": "blink_perf.layout/nested-grid.html"
+    },
+    {
+        "duration": "16.033607530303033",
+        "name": "blink_perf.layout/nested-percent-height-tables.html"
+    },
+    {
+        "duration": "215.13033382828283",
+        "name": "blink_perf.layout/subtree-detaching.html"
+    },
+    {
+        "duration": "17.123495368686868",
+        "name": "blink_perf.layout/vertical-japanese-kokoro-insert.html"
+    },
+    {
+        "duration": "25.958471121212106",
+        "name": "blink_perf.layout/word-break-break-all.html"
+    },
+    {
+        "duration": "24.225948595959597",
+        "name": "blink_perf.layout/word-break-break-word.html"
+    },
+    {
+        "duration": "24.232047171717173",
+        "name": "blink_perf.layout/word-wrap-break-word.html"
+    },
+    {
+        "duration": "46.61487470707067",
+        "name": "blink_perf.owp_storage/blob-perf-files.html"
+    },
+    {
+        "duration": "30.82406958585858",
+        "name": "blink_perf.owp_storage/blob-perf-ipc.html"
+    },
+    {
+        "duration": "28.947062080808085",
+        "name": "blink_perf.owp_storage/blob-perf-shm.html"
+    },
+    {
+        "duration": "29.7789653131313",
+        "name": "blink_perf.owp_storage/blob-perf-tiny.html"
+    },
+    {
+        "duration": "32.96900536363636",
+        "name": "blink_perf.owp_storage/idb-load-docs.html"
+    },
+    {
+        "duration": "33.72758421717172",
+        "name": "blink_perf.parser/css-parser-yui.html"
+    },
+    {
+        "duration": "66.4045916767677",
+        "name": "blink_perf.parser/html-parser-threaded.html"
+    },
+    {
+        "duration": "81.41358826262626",
+        "name": "blink_perf.parser/html-parser.html"
+    },
+    {
+        "duration": "4.0349364125E-4",
+        "name": "blink_perf.parser/html5-full-render.html"
+    },
+    {
+        "duration": "14.808145494949493",
+        "name": "blink_perf.parser/iframe-append-remove.html"
+    },
+    {
+        "duration": "17.203239313131316",
+        "name": "blink_perf.parser/innerHTML-setter-siblings.html"
+    },
+    {
+        "duration": "15.875073202020195",
+        "name": "blink_perf.parser/innerHTML-setter.html"
+    },
+    {
+        "duration": "15.367305939393942",
+        "name": "blink_perf.parser/query-selector-all-attribute-complex.html"
+    },
+    {
+        "duration": "15.32187304040404",
+        "name": "blink_perf.parser/query-selector-all-attribute.html"
+    },
+    {
+        "duration": "17.601194106060603",
+        "name": "blink_perf.parser/query-selector-all-class-deep.html"
+    },
+    {
+        "duration": "18.13945328282828",
+        "name": "blink_perf.parser/query-selector-all-class-first.html"
+    },
+    {
+        "duration": "15.904186277777777",
+        "name": "blink_perf.parser/query-selector-all-class-last.html"
+    },
+    {
+        "duration": "14.115226121212123",
+        "name": "blink_perf.parser/query-selector-all-class.html"
+    },
+    {
+        "duration": "16.18732083838383",
+        "name": "blink_perf.parser/query-selector-all-deep.html"
+    },
+    {
+        "duration": "19.091935914141416",
+        "name": "blink_perf.parser/query-selector-all-first.html"
+    },
+    {
+        "duration": "24.55646744444445",
+        "name": "blink_perf.parser/query-selector-all-id-deep.html"
+    },
+    {
+        "duration": "18.086754898989895",
+        "name": "blink_perf.parser/query-selector-all-id-first.html"
+    },
+    {
+        "duration": "26.15980541414142",
+        "name": "blink_perf.parser/query-selector-all-id-last.html"
+    },
+    {
+        "duration": "15.550700924242415",
+        "name": "blink_perf.parser/query-selector-all-last.html"
+    },
+    {
+        "duration": "17.006558944444443",
+        "name": "blink_perf.parser/query-selector-deep.html"
+    },
+    {
+        "duration": "18.03450713131312",
+        "name": "blink_perf.parser/query-selector-first.html"
+    },
+    {
+        "duration": "19.657671040404026",
+        "name": "blink_perf.parser/query-selector-id-deep.html"
+    },
+    {
+        "duration": "22.588081151515148",
+        "name": "blink_perf.parser/query-selector-id-last.html"
+    },
+    {
+        "duration": "15.788842535353535",
+        "name": "blink_perf.parser/query-selector-last.html"
+    },
+    {
+        "duration": "21.046585707070708",
+        "name": "blink_perf.parser/simple-url.html"
+    },
+    {
+        "duration": "18.62458833333334",
+        "name": "blink_perf.parser/textarea-parsing.html"
+    },
+    {
+        "duration": "32.91694304040405",
+        "name": "blink_perf.parser/tiny-innerHTML.html"
+    },
+    {
+        "duration": "16.920294631313137",
+        "name": "blink_perf.parser/url-parser.html"
+    },
+    {
+        "duration": "15.02444823737374",
+        "name": "blink_perf.parser/xml-parser.html"
+    },
+    {
+        "duration": "23.420363333333345",
+        "name": "blink_perf.shadow_dom/shadow-style-share-attr-selectors.html"
+    },
+    {
+        "duration": "12.240019111111105",
+        "name": "blink_perf.shadow_dom/shadow-style-share-media-query.html"
+    },
+    {
+        "duration": "12.256521939393938",
+        "name": "blink_perf.shadow_dom/shadow-style-share-with-distribution.html"
+    },
+    {
+        "duration": "8.530290705050506",
+        "name": "blink_perf.shadow_dom/shadow-style-share.html"
+    },
+    {
+        "duration": "9.645421439393939",
+        "name": "blink_perf.shadow_dom/style-sheet-insert.html"
+    },
+    {
+        "duration": "10.80601707070707",
+        "name": "blink_perf.shadow_dom/v0-changing-classname-with-shadow-dom.html"
+    },
+    {
+        "duration": "18.38711732323233",
+        "name": "blink_perf.shadow_dom/v0-changing-classname-without-shadow-dom.html"
+    },
+    {
+        "duration": "35.23128183838385",
+        "name": "blink_perf.shadow_dom/v0-changing-select-with-shadow-dom.html"
+    },
+    {
+        "duration": "39.11045890909092",
+        "name": "blink_perf.shadow_dom/v0-changing-select-without-shadow-dom.html"
+    },
+    {
+        "duration": "10.056312080808079",
+        "name": "blink_perf.shadow_dom/v0-content-reprojection.html"
+    },
+    {
+        "duration": "8.673109136363633",
+        "name": "blink_perf.shadow_dom/v0-large-distribution-without-layout.html"
+    },
+    {
+        "duration": "8.43266895151515",
+        "name": "blink_perf.shadow_dom/v0-multiple-insertion-points.html"
+    },
+    {
+        "duration": "10.449778055555555",
+        "name": "blink_perf.shadow_dom/v0-shadow-reprojection.html"
+    },
+    {
+        "duration": "9.106470732323235",
+        "name": "blink_perf.shadow_dom/v0-small-distribution-with-layout.html"
+    },
+    {
+        "duration": "94.71011717171722",
+        "name": "blink_perf.shadow_dom/v1-distribution-disconnected-and-reconnected.html"
+    },
+    {
+        "duration": "8.098405365656566",
+        "name": "blink_perf.shadow_dom/v1-distribution.html"
+    },
+    {
+        "duration": "8.329176944444445",
+        "name": "blink_perf.shadow_dom/v1-host-child-append.html"
+    },
+    {
+        "duration": "87.73995875757576",
+        "name": "blink_perf.shadow_dom/v1-large-deep-distribution.html"
+    },
+    {
+        "duration": "253.66173848484874",
+        "name": "blink_perf.shadow_dom/v1-large-deep-layout.html"
+    },
+    {
+        "duration": "8.146064798989894",
+        "name": "blink_perf.shadow_dom/v1-large-shallow-distribution.html"
+    },
+    {
+        "duration": "8.090373575757576",
+        "name": "blink_perf.shadow_dom/v1-large-shallow-layout.html"
+    },
+    {
+        "duration": "12.385857883838383",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-re-layout.html"
+    },
+    {
+        "duration": "8.122181270707065",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-assigned-nodes.html"
+    },
+    {
+        "duration": "8.20882502323232",
+        "name": "blink_perf.shadow_dom/v1-mutate-deep-tree-then-slot-flatten.html"
+    },
+    {
+        "duration": "10.111110398989897",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-re-layout.html"
+    },
+    {
+        "duration": "8.15515672828283",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-assigned-nodes.html"
+    },
+    {
+        "duration": "14.128646833333342",
+        "name": "blink_perf.shadow_dom/v1-mutate-shallow-tree-then-slot-flatten.html"
+    },
+    {
+        "duration": "7.719611421212118",
+        "name": "blink_perf.shadow_dom/v1-slot-append.html"
+    },
+    {
+        "duration": "24.600128242424226",
+        "name": "blink_perf.shadow_dom/v1-small-deep-distribution.html"
+    },
+    {
+        "duration": "24.598114505050493",
+        "name": "blink_perf.shadow_dom/v1-small-deep-layout.html"
+    },
+    {
+        "duration": "7.645644859595962",
+        "name": "blink_perf.shadow_dom/v1-small-shallow-distribution.html"
+    },
+    {
+        "duration": "7.745897417171716",
+        "name": "blink_perf.shadow_dom/v1-small-shallow-layout.html"
+    },
+    {
+        "duration": "15.907482181818184",
+        "name": "blink_perf.svg/AzLizardBenjiPark.html"
+    },
+    {
+        "duration": "21.331298101010095",
+        "name": "blink_perf.svg/Bamboo.html"
+    },
+    {
+        "duration": "10.371573535353537",
+        "name": "blink_perf.svg/Cactus.html"
+    },
+    {
+        "duration": "10.643708439393938",
+        "name": "blink_perf.svg/Cowboy.html"
+    },
+    {
+        "duration": "12.554780833333332",
+        "name": "blink_perf.svg/Cowboy_transform.html"
+    },
+    {
+        "duration": "8.705071404040405",
+        "name": "blink_perf.svg/CrawFishGanson.html"
+    },
+    {
+        "duration": "9.582054782828283",
+        "name": "blink_perf.svg/Debian.html"
+    },
+    {
+        "duration": "8.41623482222222",
+        "name": "blink_perf.svg/DropsOnABlade.html"
+    },
+    {
+        "duration": "8.636321712121216",
+        "name": "blink_perf.svg/FlowerFromMyGarden.html"
+    },
+    {
+        "duration": "8.948276621212123",
+        "name": "blink_perf.svg/FoodLeifLodahl.html"
+    },
+    {
+        "duration": "9.347815186868687",
+        "name": "blink_perf.svg/France.html"
+    },
+    {
+        "duration": "8.136593308080808",
+        "name": "blink_perf.svg/FrancoBolloGnomeEzechi.html"
+    },
+    {
+        "duration": "10.356708782828285",
+        "name": "blink_perf.svg/GearFlowers.html"
+    },
+    {
+        "duration": "8.858241535353537",
+        "name": "blink_perf.svg/HarveyRayner.html"
+    },
+    {
+        "duration": "16.043189540404043",
+        "name": "blink_perf.svg/HereGear.html"
+    },
+    {
+        "duration": "22.754950444444447",
+        "name": "blink_perf.svg/MtSaintHelens.html"
+    },
+    {
+        "duration": "7.991205082828283",
+        "name": "blink_perf.svg/Samurai.html"
+    },
+    {
+        "duration": "32.0023292",
+        "name": "blink_perf.svg/SierpinskiCarpet.html"
+    },
+    {
+        "duration": "12.137011707070709",
+        "name": "blink_perf.svg/SvgCubics.html"
+    },
+    {
+        "duration": "12.484785217171718",
+        "name": "blink_perf.svg/SvgHitTesting.html"
+    },
+    {
+        "duration": "15.615543646464646",
+        "name": "blink_perf.svg/SvgNestedUse.html"
+    },
+    {
+        "duration": "9.620697813131315",
+        "name": "blink_perf.svg/UnderTheSee.html"
+    },
+    {
+        "duration": "11.160207944444442",
+        "name": "blink_perf.svg/WorldIso.html"
+    },
+    {
+        "duration": "20.824468656565653",
+        "name": "blink_perf.svg/Worldcup.html"
+    },
+    {
+        "duration": "53.155898777777765",
+        "name": "dromaeo/http://dromaeo.com?dom-attr"
+    },
+    {
+        "duration": "47.9726883939394",
+        "name": "dromaeo/http://dromaeo.com?dom-modify"
+    },
+    {
+        "duration": "56.1269846262626",
+        "name": "dromaeo/http://dromaeo.com?dom-query"
+    },
+    {
+        "duration": "34.765811171717175",
+        "name": "dromaeo/http://dromaeo.com?dom-traverse"
+    },
+    {
+        "duration": "33.62477897979797",
+        "name": "dummy_benchmark.histogram_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "18.792705909090913",
+        "name": "dummy_benchmark.noisy_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "19.725633959595964",
+        "name": "dummy_benchmark.stable_benchmark_1/dummy_page.html"
+    },
+    {
+        "duration": "917.7858718181816",
+        "name": "jetstream/http://browserbench.org/JetStream/"
+    },
+    {
+        "duration": "289.5452808080808",
+        "name": "kraken/http://krakenbenchmark.mozilla.org/kraken-1.1/driver.html"
+    },
+    {
+        "duration": "31.956614871212114",
+        "name": "loading.mobile/58Pic"
+    },
+    {
+        "duration": "60.59536039473685",
+        "name": "loading.mobile/58Pic_3g"
+    },
+    {
+        "duration": "46.20916877525253",
+        "name": "loading.mobile/Amazon"
+    },
+    {
+        "duration": "99.08260418421052",
+        "name": "loading.mobile/Amazon_3g"
+    },
+    {
+        "duration": "46.1637123510101",
+        "name": "loading.mobile/BOLNoticias"
+    },
+    {
+        "duration": "89.38759730263158",
+        "name": "loading.mobile/BOLNoticias_3g"
+    },
+    {
+        "duration": "37.18312434848485",
+        "name": "loading.mobile/Baidu"
+    },
+    {
+        "duration": "67.70539143421054",
+        "name": "loading.mobile/Baidu_3g"
+    },
+    {
+        "duration": "56.09196488888889",
+        "name": "loading.mobile/Bradesco"
+    },
+    {
+        "duration": "131.17041710526317",
+        "name": "loading.mobile/Bradesco_3g"
+    },
+    {
+        "duration": "43.02147597727272",
+        "name": "loading.mobile/Dailymotion"
+    },
+    {
+        "duration": "83.23533499999999",
+        "name": "loading.mobile/Dailymotion_3g"
+    },
+    {
+        "duration": "47.15194810606061",
+        "name": "loading.mobile/Dawn"
+    },
+    {
+        "duration": "86.90406444736841",
+        "name": "loading.mobile/Dawn_3g"
+    },
+    {
+        "duration": "30.667632087542096",
+        "name": "loading.mobile/DevOpera"
+    },
+    {
+        "duration": "18.991100671052635",
+        "name": "loading.mobile/DevOpera_cold"
+    },
+    {
+        "duration": "61.76827615789473",
+        "name": "loading.mobile/DevOpera_cold_3g"
+    },
+    {
+        "duration": "26.104528171052635",
+        "name": "loading.mobile/DevOpera_hot"
+    },
+    {
+        "duration": "30.33898446052631",
+        "name": "loading.mobile/DevOpera_hot_3g"
+    },
+    {
+        "duration": "22.006514118421048",
+        "name": "loading.mobile/DevOpera_warm"
+    },
+    {
+        "duration": "26.286113671052636",
+        "name": "loading.mobile/DevOpera_warm_3g"
+    },
+    {
+        "duration": "58.01909592676769",
+        "name": "loading.mobile/Dramaq"
+    },
+    {
+        "duration": "121.84758748684212",
+        "name": "loading.mobile/Dramaq_3g"
+    },
+    {
+        "duration": "35.475206929292916",
+        "name": "loading.mobile/EnquiryIndianRail"
+    },
+    {
+        "duration": "73.92523423684213",
+        "name": "loading.mobile/EnquiryIndianRail_3g"
+    },
+    {
+        "duration": "40.78022890151514",
+        "name": "loading.mobile/Facebook"
+    },
+    {
+        "duration": "76.20553767105264",
+        "name": "loading.mobile/Facebook_3g"
+    },
+    {
+        "duration": "42.598053430976435",
+        "name": "loading.mobile/FlipBoard"
+    },
+    {
+        "duration": "23.298914171052637",
+        "name": "loading.mobile/FlipBoard_cold"
+    },
+    {
+        "duration": "79.50976585526318",
+        "name": "loading.mobile/FlipBoard_cold_3g"
+    },
+    {
+        "duration": "36.02893692105263",
+        "name": "loading.mobile/FlipBoard_hot"
+    },
+    {
+        "duration": "46.03850914473685",
+        "name": "loading.mobile/FlipBoard_hot_3g"
+    },
+    {
+        "duration": "30.043965907894734",
+        "name": "loading.mobile/FlipBoard_warm"
+    },
+    {
+        "duration": "42.93046400000001",
+        "name": "loading.mobile/FlipBoard_warm_3g"
+    },
+    {
+        "duration": "50.98594493097643",
+        "name": "loading.mobile/FlipKart"
+    },
+    {
+        "duration": "29.46684753947368",
+        "name": "loading.mobile/FlipKart_cold"
+    },
+    {
+        "duration": "80.45087688157894",
+        "name": "loading.mobile/FlipKart_cold_3g"
+    },
+    {
+        "duration": "53.2245862763158",
+        "name": "loading.mobile/FlipKart_hot"
+    },
+    {
+        "duration": "53.93000388157895",
+        "name": "loading.mobile/FlipKart_hot_3g"
+    },
+    {
+        "duration": "40.59452125000001",
+        "name": "loading.mobile/FlipKart_warm"
+    },
+    {
+        "duration": "42.51365721052632",
+        "name": "loading.mobile/FlipKart_warm_3g"
+    },
+    {
+        "duration": "37.9557026590909",
+        "name": "loading.mobile/FranceTVInfo"
+    },
+    {
+        "duration": "79.0056995",
+        "name": "loading.mobile/FranceTVInfo_3g"
+    },
+    {
+        "duration": "1.8709898E-4",
+        "name": "loading.mobile/G1"
+    },
+    {
+        "duration": "136.92386827631574",
+        "name": "loading.mobile/G1_3g"
+    },
+    {
+        "duration": "85.16835395454547",
+        "name": "loading.mobile/GSShop"
+    },
+    {
+        "duration": "205.10452092105263",
+        "name": "loading.mobile/GSShop_3g"
+    },
+    {
+        "duration": "34.37991998232324",
+        "name": "loading.mobile/GoogleBrazil"
+    },
+    {
+        "duration": "69.98174694736842",
+        "name": "loading.mobile/GoogleBrazil_3g"
+    },
+    {
+        "duration": "33.29722180050504",
+        "name": "loading.mobile/GoogleIndia"
+    },
+    {
+        "duration": "63.63973656578948",
+        "name": "loading.mobile/GoogleIndia_3g"
+    },
+    {
+        "duration": "31.866510209595962",
+        "name": "loading.mobile/GoogleIndonesia"
+    },
+    {
+        "duration": "62.288706447368426",
+        "name": "loading.mobile/GoogleIndonesia_3g"
+    },
+    {
+        "duration": "5.684852624999999E-4",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan"
+    },
+    {
+        "duration": "98.12175659210527",
+        "name": "loading.mobile/GoogleRedirectToGoogleJapan_3g"
+    },
+    {
+        "duration": "1.9367337250000003E-4",
+        "name": "loading.mobile/HashOcean"
+    },
+    {
+        "duration": "45.4262358409091",
+        "name": "loading.mobile/Hongkiat"
+    },
+    {
+        "duration": "96.30480825",
+        "name": "loading.mobile/Hongkiat_3g"
+    },
+    {
+        "duration": "1.8424987825E-4",
+        "name": "loading.mobile/IBI"
+    },
+    {
+        "duration": "50.74642942929292",
+        "name": "loading.mobile/KapanLagi"
+    },
+    {
+        "duration": "106.50882002631579",
+        "name": "loading.mobile/KapanLagi_3g"
+    },
+    {
+        "duration": "61.659650835858606",
+        "name": "loading.mobile/Kaskus"
+    },
+    {
+        "duration": "128.32314298684213",
+        "name": "loading.mobile/Kaskus_3g"
+    },
+    {
+        "duration": "47.325242303030315",
+        "name": "loading.mobile/LocalMoxie"
+    },
+    {
+        "duration": "101.44414681578948",
+        "name": "loading.mobile/LocalMoxie_3g"
+    },
+    {
+        "duration": "26.88065861616162",
+        "name": "loading.mobile/Locanto"
+    },
+    {
+        "duration": "50.282310671052635",
+        "name": "loading.mobile/Locanto_3g"
+    },
+    {
+        "duration": "48.74100935353533",
+        "name": "loading.mobile/OLX"
+    },
+    {
+        "duration": "107.70253847368421",
+        "name": "loading.mobile/OLX_3g"
+    },
+    {
+        "duration": "34.35447536363637",
+        "name": "loading.mobile/QQNews"
+    },
+    {
+        "duration": "66.28642030263157",
+        "name": "loading.mobile/QQNews_3g"
+    },
+    {
+        "duration": "44.1245688409091",
+        "name": "loading.mobile/SlideShare"
+    },
+    {
+        "duration": "97.80831707894737",
+        "name": "loading.mobile/SlideShare_3g"
+    },
+    {
+        "duration": "25.53933844107744",
+        "name": "loading.mobile/Suumo"
+    },
+    {
+        "duration": "18.337011973684213",
+        "name": "loading.mobile/Suumo_cold"
+    },
+    {
+        "duration": "36.10378865789473",
+        "name": "loading.mobile/Suumo_cold_3g"
+    },
+    {
+        "duration": "22.59527711842105",
+        "name": "loading.mobile/Suumo_hot"
+    },
+    {
+        "duration": "30.8603525131579",
+        "name": "loading.mobile/Suumo_hot_3g"
+    },
+    {
+        "duration": "19.497166092105267",
+        "name": "loading.mobile/Suumo_warm"
+    },
+    {
+        "duration": "27.630094052631577",
+        "name": "loading.mobile/Suumo_warm_3g"
+    },
+    {
+        "duration": "61.42332302020203",
+        "name": "loading.mobile/Thairath"
+    },
+    {
+        "duration": "143.7809572368421",
+        "name": "loading.mobile/Thairath_3g"
+    },
+    {
+        "duration": "59.35385573989898",
+        "name": "loading.mobile/TheStar"
+    },
+    {
+        "duration": "110.82457996052626",
+        "name": "loading.mobile/TheStar_3g"
+    },
+    {
+        "duration": "50.85479362121212",
+        "name": "loading.mobile/TribunNews"
+    },
+    {
+        "duration": "97.30749690789473",
+        "name": "loading.mobile/TribunNews_3g"
+    },
+    {
+        "duration": "38.36837163888888",
+        "name": "loading.mobile/Twitter"
+    },
+    {
+        "duration": "81.63131626315787",
+        "name": "loading.mobile/Twitter_3g"
+    },
+    {
+        "duration": "34.93738085353535",
+        "name": "loading.mobile/VoiceMemos"
+    },
+    {
+        "duration": "20.61404625",
+        "name": "loading.mobile/VoiceMemos_cold"
+    },
+    {
+        "duration": "69.47634473684211",
+        "name": "loading.mobile/VoiceMemos_cold_3g"
+    },
+    {
+        "duration": "29.273142592105263",
+        "name": "loading.mobile/VoiceMemos_hot"
+    },
+    {
+        "duration": "36.053650552631574",
+        "name": "loading.mobile/VoiceMemos_hot_3g"
+    },
+    {
+        "duration": "24.43059014473684",
+        "name": "loading.mobile/VoiceMemos_warm"
+    },
+    {
+        "duration": "30.975171618421058",
+        "name": "loading.mobile/VoiceMemos_warm_3g"
+    },
+    {
+        "duration": "37.00499723737375",
+        "name": "loading.mobile/Wikipedia"
+    },
+    {
+        "duration": "78.14831773684212",
+        "name": "loading.mobile/Wikipedia_3g"
+    },
+    {
+        "duration": "52.026927265151485",
+        "name": "loading.mobile/YahooNews"
+    },
+    {
+        "duration": "92.31386361842108",
+        "name": "loading.mobile/YahooNews_3g"
+    },
+    {
+        "duration": "39.80022844949496",
+        "name": "loading.mobile/Youtube"
+    },
+    {
+        "duration": "82.23618368421053",
+        "name": "loading.mobile/Youtube_3g"
+    },
+    {
+        "duration": "37.548987292929304",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4"
+    },
+    {
+        "duration": "47.52511585858589",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4"
+    },
+    {
+        "duration": "47.83807758585859",
+        "name": "media.mobile/mse.html?media=aac_audio.mp4,h264_video.mp4&waitForPageLoaded=true"
+    },
+    {
+        "duration": "44.83968999999999",
+        "name": "media.mobile/mse.html?media=h264_video.mp4"
+    },
+    {
+        "duration": "54.516439272727254",
+        "name": "media.mobile/video.html?src=crowd.ogg&type=audio"
+    },
+    {
+        "duration": "62.23455444444445",
+        "name": "media.mobile/video.html?src=crowd1080_vp9.webm"
+    },
+    {
+        "duration": "41.76764358585861",
+        "name": "media.mobile/video.html?src=crowd1080_vp9.webm&seek"
+    },
+    {
+        "duration": "47.126835656565675",
+        "name": "media.mobile/video.html?src=crowd720_vp9.webm"
+    },
+    {
+        "duration": "49.41520859595958",
+        "name": "media.mobile/video.html?src=tulip2.m4a&type=audio"
+    },
+    {
+        "duration": "48.11606256565658",
+        "name": "media.mobile/video.html?src=tulip2.mp3&type=audio"
+    },
+    {
+        "duration": "25.79813473737373",
+        "name": "media.mobile/video.html?src=tulip2.mp3&type=audio&seek"
+    },
+    {
+        "duration": "55.052803565656546",
+        "name": "media.mobile/video.html?src=tulip2.mp4"
+    },
+    {
+        "duration": "56.06238214141414",
+        "name": "media.mobile/video.html?src=tulip2.mp4&busyjs"
+    },
+    {
+        "duration": "32.144614121212115",
+        "name": "media.mobile/video.html?src=tulip2.mp4&seek"
+    },
+    {
+        "duration": "49.01505273737373",
+        "name": "media.mobile/video.html?src=tulip2.ogg&type=audio"
+    },
+    {
+        "duration": "27.163253767676775",
+        "name": "media.mobile/video.html?src=tulip2.ogg&type=audio&seek"
+    },
+    {
+        "duration": "72.98946956565658",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm"
+    },
+    {
+        "duration": "44.6877756767677",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm&background"
+    },
+    {
+        "duration": "55.27168175757573",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm&seek"
+    },
+    {
+        "duration": "117.48906454545457",
+        "name": "media.mobile/video.html?src=tulip2.vp9.webm_Regular-3G"
+    },
+    {
+        "duration": "49.15951075757575",
+        "name": "media.mobile/video.html?src=tulip2.wav&type=audio"
+    },
+    {
+        "duration": "26.47638853535353",
+        "name": "media.mobile/video.html?src=tulip2.wav&type=audio&seek"
+    },
+    {
+        "duration": "22.527336551515155",
+        "name": "memory.top_10_mobile/after_http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "21.544606913131307",
+        "name": "memory.top_10_mobile/after_http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "22.020035440404047",
+        "name": "memory.top_10_mobile/after_http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "21.823783551515145",
+        "name": "memory.top_10_mobile/after_http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "22.230730927272727",
+        "name": "memory.top_10_mobile/after_http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "21.852501339393946",
+        "name": "memory.top_10_mobile/after_http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "22.072938391919187",
+        "name": "memory.top_10_mobile/after_http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "22.03361466060606",
+        "name": "memory.top_10_mobile/after_https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "21.90003983434342",
+        "name": "memory.top_10_mobile/after_https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "22.39802428484849",
+        "name": "memory.top_10_mobile/after_https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "28.5357551959596",
+        "name": "memory.top_10_mobile/http_en_m_wikipedia_org_wiki_Science"
+    },
+    {
+        "duration": "25.037982616161603",
+        "name": "memory.top_10_mobile/http_m_intl_taobao_com_group_purchase_html"
+    },
+    {
+        "duration": "26.87284916161616",
+        "name": "memory.top_10_mobile/http_m_youtube_com_results_q_science"
+    },
+    {
+        "duration": "25.19328363030302",
+        "name": "memory.top_10_mobile/http_search_yahoo_com_search__ylt_p_google"
+    },
+    {
+        "duration": "26.279713860606066",
+        "name": "memory.top_10_mobile/http_www_amazon_com_gp_aw_s_k_nexus"
+    },
+    {
+        "duration": "26.690566391919187",
+        "name": "memory.top_10_mobile/http_www_baidu_com_s_word_google"
+    },
+    {
+        "duration": "26.626705872727282",
+        "name": "memory.top_10_mobile/http_yandex_ru_touchsearch_text_science"
+    },
+    {
+        "duration": "26.52315601212121",
+        "name": "memory.top_10_mobile/https_m_facebook_com_rihanna"
+    },
+    {
+        "duration": "25.82676931515152",
+        "name": "memory.top_10_mobile/https_mobile_twitter_com_justinbieber_skip_interstitial_true"
+    },
+    {
+        "duration": "28.61734269090909",
+        "name": "memory.top_10_mobile/https_www_google_co_uk_hl_en_q_science"
+    },
+    {
+        "duration": "0.001360738275",
+        "name": "octane/http://chromium.github.io/octane/index.html?auto=1"
+    },
+    {
+        "duration": "31.69687512121211",
+        "name": "oortonline_tbmv2/http://oortonline.gl/#run"
+    },
+    {
+        "duration": "63.57457797979801",
+        "name": "power.typical_10_mobile/http://de.m.wikipedia.org/wiki/K%C3%B6lner_Dom"
+    },
+    {
+        "duration": "67.96207150505052",
+        "name": "power.typical_10_mobile/http://m.chiebukuro.yahoo.co.jp/detail/q10136829180"
+    },
+    {
+        "duration": "58.67883387878788",
+        "name": "power.typical_10_mobile/http://m.ebay.com/itm/351157205404"
+    },
+    {
+        "duration": "76.84976247474748",
+        "name": "power.typical_10_mobile/http://m.facebook.com/barackobama"
+    },
+    {
+        "duration": "65.65702871717171",
+        "name": "power.typical_10_mobile/http://m.huffpost.com/us/entry/6004486"
+    },
+    {
+        "duration": "64.22954689898985",
+        "name": "power.typical_10_mobile/http://m.ynet.co.il"
+    },
+    {
+        "duration": "66.61782502020202",
+        "name": "power.typical_10_mobile/http://siriuslymeg.tumblr.com/"
+    },
+    {
+        "duration": "59.39086063636365",
+        "name": "power.typical_10_mobile/http://wapbaike.baidu.com/"
+    },
+    {
+        "duration": "61.875478222222235",
+        "name": "power.typical_10_mobile/http://www.cnn.com/2014/03/31/showbiz/tv/himym-finale/index.html"
+    },
+    {
+        "duration": "70.08670448484844",
+        "name": "power.typical_10_mobile/http://www.rg.ru/2014/10/21/cska-site.html"
+    },
+    {
+        "duration": "63.92302949494951",
+        "name": "power.typical_10_mobile/https://en.wikipedia.org/wiki/File:Rotating_earth_(large).gif"
+    },
+    {
+        "duration": "30.655771909090916",
+        "name": "rasterize_and_record_micro.partial_invalidation/800_relpos_divs.html"
+    },
+    {
+        "duration": "47.64507763636365",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/amazon.html"
+    },
+    {
+        "duration": "25.768173898989907",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/blogger.html"
+    },
+    {
+        "duration": "46.557966424242416",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/booking.html"
+    },
+    {
+        "duration": "37.83792338383839",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/cnn.html"
+    },
+    {
+        "duration": "25.150081313131317",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/ebay.html"
+    },
+    {
+        "duration": "78.2400534141414",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/espn.html"
+    },
+    {
+        "duration": "30.64900856565657",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/facebook.html"
+    },
+    {
+        "duration": "58.30685618181819",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/gmail.html"
+    },
+    {
+        "duration": "52.229418262626254",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/google.html"
+    },
+    {
+        "duration": "30.209122151515146",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googlecalendar.html"
+    },
+    {
+        "duration": "30.009297999999994",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googledocs.html"
+    },
+    {
+        "duration": "64.24319185858586",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleimagesearch.html"
+    },
+    {
+        "duration": "60.81319365656563",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/googleplus.html"
+    },
+    {
+        "duration": "25.45603733333334",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/linkedin.html"
+    },
+    {
+        "duration": "13.49614359090909",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/pinterest.html"
+    },
+    {
+        "duration": "63.34203653535352",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/techcrunch.html"
+    },
+    {
+        "duration": "73.68662352525253",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/twitter.html"
+    },
+    {
+        "duration": "30.835506484848498",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/weather.html"
+    },
+    {
+        "duration": "3.7465776571428573E-4",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wikipedia.html"
+    },
+    {
+        "duration": "25.612182595959595",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/wordpress.html"
+    },
+    {
+        "duration": "27.452922878787888",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahooanswers.html"
+    },
+    {
+        "duration": "59.709742585858606",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoogames.html"
+    },
+    {
+        "duration": "9.049177199999998E-4",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoonews.html"
+    },
+    {
+        "duration": "125.35130679797983",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/yahoosports.html"
+    },
+    {
+        "duration": "65.16591459595963",
+        "name": "rasterize_and_record_micro.top_25/file://static_top_25/youtube.html"
+    },
+    {
+        "duration": "4.337628666666667E-4",
+        "name": "rendering.mobile/amazon"
+    },
+    {
+        "duration": "2.1767616E-4",
+        "name": "rendering.mobile/amazon_desktop"
+    },
+    {
+        "duration": "2.319018033333333E-4",
+        "name": "rendering.mobile/amazon_desktop_gpu_raster"
+    },
+    {
+        "duration": "4.076163E-4",
+        "name": "rendering.mobile/amazon_sync_scroll"
+    },
+    {
+        "duration": "35.39871295454544",
+        "name": "rendering.mobile/analog_clock_svg"
+    },
+    {
+        "duration": "35.97307738383836",
+        "name": "rendering.mobile/androidpolice"
+    },
+    {
+        "duration": "44.09456423809524",
+        "name": "rendering.mobile/androidpolice_mobile"
+    },
+    {
+        "duration": "42.41609833333333",
+        "name": "rendering.mobile/androidpolice_mobile_sync_scroll"
+    },
+    {
+        "duration": "37.313202383838366",
+        "name": "rendering.mobile/androidpolice_sync_scroll"
+    },
+    {
+        "duration": "8.266672194444444",
+        "name": "rendering.mobile/animometer_webgl"
+    },
+    {
+        "duration": "7.940843294444444",
+        "name": "rendering.mobile/aquarium"
+    },
+    {
+        "duration": "34.62126822222223",
+        "name": "rendering.mobile/background_color_animation"
+    },
+    {
+        "duration": "35.335315888888886",
+        "name": "rendering.mobile/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "22.586555515151524",
+        "name": "rendering.mobile/baidu"
+    },
+    {
+        "duration": "25.449218842105264",
+        "name": "rendering.mobile/baidu_mobile"
+    },
+    {
+        "duration": "23.871524631578946",
+        "name": "rendering.mobile/baidu_mobile_sync_scroll"
+    },
+    {
+        "duration": "22.811048727272734",
+        "name": "rendering.mobile/baidu_sync_scroll"
+    },
+    {
+        "duration": "39.096217606060605",
+        "name": "rendering.mobile/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "35.31748415151515",
+        "name": "rendering.mobile/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "34.97136248484849",
+        "name": "rendering.mobile/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "34.503684484848485",
+        "name": "rendering.mobile/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "34.75706066666666",
+        "name": "rendering.mobile/balls_javascript_canvas"
+    },
+    {
+        "duration": "34.38402896969697",
+        "name": "rendering.mobile/balls_javascript_css"
+    },
+    {
+        "duration": "61.84612615151515",
+        "name": "rendering.mobile/balls_svg_animations"
+    },
+    {
+        "duration": "41.329573",
+        "name": "rendering.mobile/basic_stream"
+    },
+    {
+        "duration": "20.999014696969702",
+        "name": "rendering.mobile/bing"
+    },
+    {
+        "duration": "23.548457447368413",
+        "name": "rendering.mobile/bing_mobile"
+    },
+    {
+        "duration": "22.53785831578948",
+        "name": "rendering.mobile/bing_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.041294737373747",
+        "name": "rendering.mobile/bing_sync_scroll"
+    },
+    {
+        "duration": "7.711096233333333",
+        "name": "rendering.mobile/blob"
+    },
+    {
+        "duration": "32.413254101010104",
+        "name": "rendering.mobile/blogspot"
+    },
+    {
+        "duration": "42.76526068686869",
+        "name": "rendering.mobile/blogspot_desktop"
+    },
+    {
+        "duration": "43.47625450505053",
+        "name": "rendering.mobile/blogspot_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.340268789473683",
+        "name": "rendering.mobile/blogspot_mobile"
+    },
+    {
+        "duration": "23.17890228947369",
+        "name": "rendering.mobile/blogspot_mobile_sync_scroll"
+    },
+    {
+        "duration": "24.184026626262632",
+        "name": "rendering.mobile/blogspot_sync_scroll"
+    },
+    {
+        "duration": "48.89654309090909",
+        "name": "rendering.mobile/boingboing"
+    },
+    {
+        "duration": "54.25529005263157",
+        "name": "rendering.mobile/boingboing_mobile"
+    },
+    {
+        "duration": "51.073391505050495",
+        "name": "rendering.mobile/boingboing_sync_scroll"
+    },
+    {
+        "duration": "33.65270923232323",
+        "name": "rendering.mobile/booking.com"
+    },
+    {
+        "duration": "31.35980329292927",
+        "name": "rendering.mobile/booking.com_desktop"
+    },
+    {
+        "duration": "32.26860741414143",
+        "name": "rendering.mobile/booking.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.433051368421054",
+        "name": "rendering.mobile/booking.com_mobile"
+    },
+    {
+        "duration": "34.19782494736842",
+        "name": "rendering.mobile/booking.com_mobile_sync_scroll"
+    },
+    {
+        "duration": "31.893064383838386",
+        "name": "rendering.mobile/booking.com_sync_scroll"
+    },
+    {
+        "duration": "27.280201805555553",
+        "name": "rendering.mobile/bouncing_balls_15"
+    },
+    {
+        "duration": "55.12635502777778",
+        "name": "rendering.mobile/bouncing_balls_shadow"
+    },
+    {
+        "duration": "38.27855283333333",
+        "name": "rendering.mobile/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "28.83284977777778",
+        "name": "rendering.mobile/bouncing_gradient_circles"
+    },
+    {
+        "duration": "23.347585083333332",
+        "name": "rendering.mobile/bouncing_png_images"
+    },
+    {
+        "duration": "40.31222483333332",
+        "name": "rendering.mobile/bouncing_svg_images"
+    },
+    {
+        "duration": "37.6024215",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "37.928435666666665",
+        "name": "rendering.mobile/canvas_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "37.66598083333334",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "37.50322941666668",
+        "name": "rendering.mobile/canvas_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "38.18788991666667",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "37.6527855",
+        "name": "rendering.mobile/canvas_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "37.85217816666666",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "37.99117941666667",
+        "name": "rendering.mobile/canvas_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.404872583333336",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "37.880488",
+        "name": "rendering.mobile/canvas_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.91962075000001",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "38.50510925",
+        "name": "rendering.mobile/canvas_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.048261583333336",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "38.12272216666667",
+        "name": "rendering.mobile/canvas_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "34.178707499999994",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "36.3758965",
+        "name": "rendering.mobile/canvas_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.748871499999996",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "33.01871058333334",
+        "name": "rendering.mobile/canvas_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.242103416666666",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "31.017202749999996",
+        "name": "rendering.mobile/canvas_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.250932222222225",
+        "name": "rendering.mobile/canvas_animation_no_clear"
+    },
+    {
+        "duration": "29.739879166666665",
+        "name": "rendering.mobile/canvas_arcs"
+    },
+    {
+        "duration": "27.603154388888882",
+        "name": "rendering.mobile/canvas_font_cycler"
+    },
+    {
+        "duration": "26.508212722222225",
+        "name": "rendering.mobile/canvas_lines"
+    },
+    {
+        "duration": "33.41188494949495",
+        "name": "rendering.mobile/capitolvolkswagen"
+    },
+    {
+        "duration": "35.18407297368421",
+        "name": "rendering.mobile/capitolvolkswagen_mobile"
+    },
+    {
+        "duration": "34.15187786842106",
+        "name": "rendering.mobile/capitolvolkswagen_mobile_sync_scroll"
+    },
+    {
+        "duration": "34.26618850505049",
+        "name": "rendering.mobile/capitolvolkswagen_sync_scroll"
+    },
+    {
+        "duration": "31.665265277777777",
+        "name": "rendering.mobile/card_expansion"
+    },
+    {
+        "duration": "33.876778055555555",
+        "name": "rendering.mobile/card_expansion_animated"
+    },
+    {
+        "duration": "31.40029566666666",
+        "name": "rendering.mobile/card_expansion_images_text"
+    },
+    {
+        "duration": "28.839223222222213",
+        "name": "rendering.mobile/card_flying"
+    },
+    {
+        "duration": "22.108635545454547",
+        "name": "rendering.mobile/cats_unscaled"
+    },
+    {
+        "duration": "20.45130990909091",
+        "name": "rendering.mobile/cats_viewport_width"
+    },
+    {
+        "duration": "43.26395176923077",
+        "name": "rendering.mobile/cc_poster_circle"
+    },
+    {
+        "duration": "37.79164453846154",
+        "name": "rendering.mobile/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "37.8199263076923",
+        "name": "rendering.mobile/cc_scroll_text_only"
+    },
+    {
+        "duration": "33.366856944444436",
+        "name": "rendering.mobile/chip_tune"
+    },
+    {
+        "duration": "25.29337194949495",
+        "name": "rendering.mobile/cnn"
+    },
+    {
+        "duration": "46.18370373737375",
+        "name": "rendering.mobile/cnn_article"
+    },
+    {
+        "duration": "51.00842660526316",
+        "name": "rendering.mobile/cnn_article_mobile"
+    },
+    {
+        "duration": "49.316013973684214",
+        "name": "rendering.mobile/cnn_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "46.746491252525246",
+        "name": "rendering.mobile/cnn_article_sync_scroll"
+    },
+    {
+        "duration": "3.6470095666666665E-4",
+        "name": "rendering.mobile/cnn_desktop"
+    },
+    {
+        "duration": "3.7121773E-4",
+        "name": "rendering.mobile/cnn_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.524577394736838",
+        "name": "rendering.mobile/cnn_mobile"
+    },
+    {
+        "duration": "27.592984578947373",
+        "name": "rendering.mobile/cnn_mobile_sync_scroll"
+    },
+    {
+        "duration": "53.57425483333333",
+        "name": "rendering.mobile/cnn_pathological"
+    },
+    {
+        "duration": "25.910561909090898",
+        "name": "rendering.mobile/cnn_sync_scroll"
+    },
+    {
+        "duration": "34.435065939393944",
+        "name": "rendering.mobile/compositor_heavy_animation"
+    },
+    {
+        "duration": "30.496426722222225",
+        "name": "rendering.mobile/coordinated_animation"
+    },
+    {
+        "duration": "31.05778805555555",
+        "name": "rendering.mobile/crafty_mind"
+    },
+    {
+        "duration": "36.451371090909085",
+        "name": "rendering.mobile/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "38.00563027272727",
+        "name": "rendering.mobile/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "37.41922842424243",
+        "name": "rendering.mobile/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "36.60167642424243",
+        "name": "rendering.mobile/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "34.45237312121213",
+        "name": "rendering.mobile/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "39.06576066666668",
+        "name": "rendering.mobile/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "40.88604378787879",
+        "name": "rendering.mobile/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "43.06298954545454",
+        "name": "rendering.mobile/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "39.07916251515152",
+        "name": "rendering.mobile/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "39.04849912121212",
+        "name": "rendering.mobile/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "40.80891684848484",
+        "name": "rendering.mobile/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "38.37790045454545",
+        "name": "rendering.mobile/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "38.98916760606061",
+        "name": "rendering.mobile/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "36.638410575757575",
+        "name": "rendering.mobile/css_transitions_inline_style"
+    },
+    {
+        "duration": "37.000023969696976",
+        "name": "rendering.mobile/css_transitions_new_element"
+    },
+    {
+        "duration": "36.4328464375",
+        "name": "rendering.mobile/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "36.9672348125",
+        "name": "rendering.mobile/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "36.64924334375001",
+        "name": "rendering.mobile/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "36.294529562499996",
+        "name": "rendering.mobile/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "36.176571343750005",
+        "name": "rendering.mobile/css_transitions_style_element"
+    },
+    {
+        "duration": "39.0401765625",
+        "name": "rendering.mobile/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "39.13640731249998",
+        "name": "rendering.mobile/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "38.253141",
+        "name": "rendering.mobile/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "39.09597578125001",
+        "name": "rendering.mobile/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "36.42590843749999",
+        "name": "rendering.mobile/css_transitions_updating_class"
+    },
+    {
+        "duration": "35.36247528125",
+        "name": "rendering.mobile/css_value_type_color"
+    },
+    {
+        "duration": "54.24329671875",
+        "name": "rendering.mobile/css_value_type_filter"
+    },
+    {
+        "duration": "32.3959206875",
+        "name": "rendering.mobile/css_value_type_length"
+    },
+    {
+        "duration": "34.581876625",
+        "name": "rendering.mobile/css_value_type_length_complex"
+    },
+    {
+        "duration": "34.56671921875",
+        "name": "rendering.mobile/css_value_type_length_simple"
+    },
+    {
+        "duration": "34.531383031249995",
+        "name": "rendering.mobile/css_value_type_path"
+    },
+    {
+        "duration": "32.88059140625",
+        "name": "rendering.mobile/css_value_type_shadow"
+    },
+    {
+        "duration": "32.075394406250005",
+        "name": "rendering.mobile/css_value_type_transform_complex"
+    },
+    {
+        "duration": "32.39152978125",
+        "name": "rendering.mobile/css_value_type_transform_simple"
+    },
+    {
+        "duration": "46.27993419191918",
+        "name": "rendering.mobile/cuteoverload"
+    },
+    {
+        "duration": "53.187605",
+        "name": "rendering.mobile/cuteoverload_mobile"
+    },
+    {
+        "duration": "46.886530030303035",
+        "name": "rendering.mobile/cuteoverload_sync_scroll"
+    },
+    {
+        "duration": "35.756458242424245",
+        "name": "rendering.mobile/deviantart"
+    },
+    {
+        "duration": "38.60981481081081",
+        "name": "rendering.mobile/deviantart_mobile"
+    },
+    {
+        "duration": "38.51229256756758",
+        "name": "rendering.mobile/deviantart_mobile_sync_scroll"
+    },
+    {
+        "duration": "36.18037501010102",
+        "name": "rendering.mobile/deviantart_sync_scroll"
+    },
+    {
+        "duration": "4.700024966666667E-4",
+        "name": "rendering.mobile/digg"
+    },
+    {
+        "duration": "5.4065388E-4",
+        "name": "rendering.mobile/digg_sync_scroll"
+    },
+    {
+        "duration": "7.882320044444443",
+        "name": "rendering.mobile/dynamic_cube_map"
+    },
+    {
+        "duration": "7.781714144444444",
+        "name": "rendering.mobile/earth"
+    },
+    {
+        "duration": "27.34517723232323",
+        "name": "rendering.mobile/ebay"
+    },
+    {
+        "duration": "22.867309282828284",
+        "name": "rendering.mobile/ebay_desktop"
+    },
+    {
+        "duration": "23.235712767676773",
+        "name": "rendering.mobile/ebay_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.485739000000002",
+        "name": "rendering.mobile/ebay_mobile"
+    },
+    {
+        "duration": "29.591313837837845",
+        "name": "rendering.mobile/ebay_mobile_sync_scroll"
+    },
+    {
+        "duration": "49.03729620833332",
+        "name": "rendering.mobile/ebay_scroll"
+    },
+    {
+        "duration": "27.752080878787858",
+        "name": "rendering.mobile/ebay_sync_scroll"
+    },
+    {
+        "duration": "34.74236657142857",
+        "name": "rendering.mobile/effect_games"
+    },
+    {
+        "duration": "20.999017521572",
+        "name": "rendering.mobile/espn"
+    },
+    {
+        "duration": "22.779988797979797",
+        "name": "rendering.mobile/espn_desktop"
+    },
+    {
+        "duration": "21.068421545454544",
+        "name": "rendering.mobile/espn_desktop_gpu_raster"
+    },
+    {
+        "duration": "39.57674822222222",
+        "name": "rendering.mobile/espn_pathological"
+    },
+    {
+        "duration": "4.565715866666667E-4",
+        "name": "rendering.mobile/espn_sync_scroll"
+    },
+    {
+        "duration": "28.44678446464648",
+        "name": "rendering.mobile/facebook"
+    },
+    {
+        "duration": "28.53038582828282",
+        "name": "rendering.mobile/facebook_desktop"
+    },
+    {
+        "duration": "29.640729060606052",
+        "name": "rendering.mobile/facebook_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.313337324324326",
+        "name": "rendering.mobile/facebook_mobile"
+    },
+    {
+        "duration": "28.375590810810813",
+        "name": "rendering.mobile/facebook_mobile_sync_scroll"
+    },
+    {
+        "duration": "26.571307919191938",
+        "name": "rendering.mobile/facebook_sync_scroll"
+    },
+    {
+        "duration": "27.684024571428576",
+        "name": "rendering.mobile/fill_shapes"
+    },
+    {
+        "duration": "32.49371343243243",
+        "name": "rendering.mobile/filter_terrain_svg"
+    },
+    {
+        "duration": "50.79486858333333",
+        "name": "rendering.mobile/flickr_scroll"
+    },
+    {
+        "duration": "27.931289277777775",
+        "name": "rendering.mobile/font_wipe"
+    },
+    {
+        "duration": "3.0501683333333335E-4",
+        "name": "rendering.mobile/forecast.io"
+    },
+    {
+        "duration": "2.8602282E-4",
+        "name": "rendering.mobile/forecast.io_sync_scroll"
+    },
+    {
+        "duration": "26.21336245714286",
+        "name": "rendering.mobile/geo_apis"
+    },
+    {
+        "duration": "78.54779841666667",
+        "name": "rendering.mobile/gmail"
+    },
+    {
+        "duration": "89.05450701010102",
+        "name": "rendering.mobile/gmail_desktop"
+    },
+    {
+        "duration": "72.63809818181815",
+        "name": "rendering.mobile/gmail_desktop_gpu_raster"
+    },
+    {
+        "duration": "46.71759494594596",
+        "name": "rendering.mobile/google_calendar"
+    },
+    {
+        "duration": "43.41749959595962",
+        "name": "rendering.mobile/google_calendar_desktop"
+    },
+    {
+        "duration": "43.77559930303032",
+        "name": "rendering.mobile/google_calendar_desktop_gpu_raster"
+    },
+    {
+        "duration": "68.40075640540542",
+        "name": "rendering.mobile/google_docs"
+    },
+    {
+        "duration": "65.18858199999998",
+        "name": "rendering.mobile/google_docs_desktop"
+    },
+    {
+        "duration": "65.86450270707073",
+        "name": "rendering.mobile/google_docs_desktop_gpu_raster"
+    },
+    {
+        "duration": "54.05500567567568",
+        "name": "rendering.mobile/google_image_search"
+    },
+    {
+        "duration": "48.91295613131312",
+        "name": "rendering.mobile/google_image_search_desktop"
+    },
+    {
+        "duration": "49.90162940404041",
+        "name": "rendering.mobile/google_image_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.93361308080807",
+        "name": "rendering.mobile/google_news"
+    },
+    {
+        "duration": "31.34656516666667",
+        "name": "rendering.mobile/google_news_ios"
+    },
+    {
+        "duration": "35.005452405405414",
+        "name": "rendering.mobile/google_news_mobile"
+    },
+    {
+        "duration": "34.6767187027027",
+        "name": "rendering.mobile/google_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "33.00895723232325",
+        "name": "rendering.mobile/google_news_sync_scroll"
+    },
+    {
+        "duration": "40.29566136363636",
+        "name": "rendering.mobile/google_plus"
+    },
+    {
+        "duration": "56.670607111111096",
+        "name": "rendering.mobile/google_plus_desktop"
+    },
+    {
+        "duration": "58.809142787878805",
+        "name": "rendering.mobile/google_plus_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.284590702702705",
+        "name": "rendering.mobile/google_plus_mobile"
+    },
+    {
+        "duration": "29.679848756756755",
+        "name": "rendering.mobile/google_plus_mobile_sync_scroll"
+    },
+    {
+        "duration": "27.88362377777778",
+        "name": "rendering.mobile/google_plus_sync_scroll"
+    },
+    {
+        "duration": "24.51298148484848",
+        "name": "rendering.mobile/google_web_search"
+    },
+    {
+        "duration": "24.45211887878787",
+        "name": "rendering.mobile/google_web_search_desktop"
+    },
+    {
+        "duration": "24.18363208080808",
+        "name": "rendering.mobile/google_web_search_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.789909540540535",
+        "name": "rendering.mobile/google_web_search_mobile"
+    },
+    {
+        "duration": "24.54920497297297",
+        "name": "rendering.mobile/google_web_search_mobile_sync_scroll"
+    },
+    {
+        "duration": "22.986898303030305",
+        "name": "rendering.mobile/google_web_search_sync_scroll"
+    },
+    {
+        "duration": "24.99796433333333",
+        "name": "rendering.mobile/gsp.ro"
+    },
+    {
+        "duration": "29.11688643243243",
+        "name": "rendering.mobile/gsp.ro_mobile"
+    },
+    {
+        "duration": "26.937432594594593",
+        "name": "rendering.mobile/gsp.ro_mobile_sync_scroll"
+    },
+    {
+        "duration": "25.355329353535357",
+        "name": "rendering.mobile/gsp.ro_sync_scroll"
+    },
+    {
+        "duration": "32.06949577777779",
+        "name": "rendering.mobile/guardian_pathological"
+    },
+    {
+        "duration": "36.48172244444444",
+        "name": "rendering.mobile/guimark_vector_chart"
+    },
+    {
+        "duration": "28.506140666666663",
+        "name": "rendering.mobile/gws_boogie_expansion"
+    },
+    {
+        "duration": "28.93029377777778",
+        "name": "rendering.mobile/gws_google_expansion"
+    },
+    {
+        "duration": "33.372783714285724",
+        "name": "rendering.mobile/hakim"
+    },
+    {
+        "duration": "31.4403655",
+        "name": "rendering.mobile/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "49.42328474999999",
+        "name": "rendering.mobile/idle_power_animated_gif"
+    },
+    {
+        "duration": "40.98025799999999",
+        "name": "rendering.mobile/idle_power_blank"
+    },
+    {
+        "duration": "49.621745000000004",
+        "name": "rendering.mobile/idle_power_css_animation"
+    },
+    {
+        "duration": "50.12000928571428",
+        "name": "rendering.mobile/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "119.95181342857144",
+        "name": "rendering.mobile/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "50.017973142857144",
+        "name": "rendering.mobile/idle_power_set_timetout"
+    },
+    {
+        "duration": "45.866291135135135",
+        "name": "rendering.mobile/ie_chalkboard"
+    },
+    {
+        "duration": "44.36908693548387",
+        "name": "rendering.mobile/ie_pirate_mark"
+    },
+    {
+        "duration": "36.50973033333334",
+        "name": "rendering.mobile/infinite_scrolling"
+    },
+    {
+        "duration": "34.322999685714294",
+        "name": "rendering.mobile/jarro_doverson"
+    },
+    {
+        "duration": "41.222864923076926",
+        "name": "rendering.mobile/js_full_screen_invalidation"
+    },
+    {
+        "duration": "44.99794730769231",
+        "name": "rendering.mobile/js_poster_circle"
+    },
+    {
+        "duration": "38.50755376923077",
+        "name": "rendering.mobile/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "38.533712692307695",
+        "name": "rendering.mobile/js_scroll_text_only"
+    },
+    {
+        "duration": "30.533221514285717",
+        "name": "rendering.mobile/kevs_3d"
+    },
+    {
+        "duration": "34.84360609375",
+        "name": "rendering.mobile/keyframed_animations"
+    },
+    {
+        "duration": "34.38325133333333",
+        "name": "rendering.mobile/large_texture_uploads"
+    },
+    {
+        "duration": "42.863621555555554",
+        "name": "rendering.mobile/latimes_pathological"
+    },
+    {
+        "duration": "29.390332313131314",
+        "name": "rendering.mobile/linkedin"
+    },
+    {
+        "duration": "26.1224958989899",
+        "name": "rendering.mobile/linkedin_desktop"
+    },
+    {
+        "duration": "25.82760635353535",
+        "name": "rendering.mobile/linkedin_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.924824594594604",
+        "name": "rendering.mobile/linkedin_mobile"
+    },
+    {
+        "duration": "32.86017456756756",
+        "name": "rendering.mobile/linkedin_mobile_sync_scroll"
+    },
+    {
+        "duration": "37.42680688888888",
+        "name": "rendering.mobile/linkedin_pathological"
+    },
+    {
+        "duration": "30.61263517171717",
+        "name": "rendering.mobile/linkedin_sync_scroll"
+    },
+    {
+        "duration": "27.310765555555555",
+        "name": "rendering.mobile/list_animation_simple"
+    },
+    {
+        "duration": "37.8000232777778",
+        "name": "rendering.mobile/list_recycle_transform"
+    },
+    {
+        "duration": "30.461491742857145",
+        "name": "rendering.mobile/man_in_blue"
+    },
+    {
+        "duration": "43.686506542857124",
+        "name": "rendering.mobile/many_images"
+    },
+    {
+        "duration": "7.9188583277777775",
+        "name": "rendering.mobile/many_planets_deep"
+    },
+    {
+        "duration": "6.81544076111111",
+        "name": "rendering.mobile/maps_perf_test"
+    },
+    {
+        "duration": "30.44675672222222",
+        "name": "rendering.mobile/mask_transition_animation"
+    },
+    {
+        "duration": "38.83947266666667",
+        "name": "rendering.mobile/masonry"
+    },
+    {
+        "duration": "36.37639361111111",
+        "name": "rendering.mobile/medium_texture_uploads"
+    },
+    {
+        "duration": "30.24419322857143",
+        "name": "rendering.mobile/megi_dish"
+    },
+    {
+        "duration": "32.94488782857142",
+        "name": "rendering.mobile/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "32.994521057142855",
+        "name": "rendering.mobile/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "30.520276428571425",
+        "name": "rendering.mobile/microsoft_snow"
+    },
+    {
+        "duration": "27.48887985714285",
+        "name": "rendering.mobile/microsoft_speed_reading"
+    },
+    {
+        "duration": "34.1955662",
+        "name": "rendering.mobile/microsoft_tweet_map"
+    },
+    {
+        "duration": "50.260263200000004",
+        "name": "rendering.mobile/microsoft_video_city"
+    },
+    {
+        "duration": "30.683122485714296",
+        "name": "rendering.mobile/microsoft_worker_fountains"
+    },
+    {
+        "duration": "30.538962942857143",
+        "name": "rendering.mobile/mix_10k"
+    },
+    {
+        "duration": "33.70752434375",
+        "name": "rendering.mobile/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "33.33487868750001",
+        "name": "rendering.mobile/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "36.206019624999996",
+        "name": "rendering.mobile/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "32.7595441875",
+        "name": "rendering.mobile/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "21.358749858585853",
+        "name": "rendering.mobile/mlb"
+    },
+    {
+        "duration": "23.04875189189189",
+        "name": "rendering.mobile/mlb_mobile"
+    },
+    {
+        "duration": "22.780446432432438",
+        "name": "rendering.mobile/mlb_mobile_sync_scroll"
+    },
+    {
+        "duration": "21.72573238383838",
+        "name": "rendering.mobile/mlb_sync_scroll"
+    },
+    {
+        "duration": "26.597183888888893",
+        "name": "rendering.mobile/mobile_news_sandbox"
+    },
+    {
+        "duration": "33.19333455555555",
+        "name": "rendering.mobile/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "34.70225730555556",
+        "name": "rendering.mobile/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "33.846292000000005",
+        "name": "rendering.mobile/motion_mark_focus"
+    },
+    {
+        "duration": "38.15792038461539",
+        "name": "rendering.mobile/new_tilings"
+    },
+    {
+        "duration": "31.33066353846154",
+        "name": "rendering.mobile/no_op_raf"
+    },
+    {
+        "duration": "28.464045615384617",
+        "name": "rendering.mobile/no_op_scroll"
+    },
+    {
+        "duration": "26.229834538461542",
+        "name": "rendering.mobile/no_op_settimeout"
+    },
+    {
+        "duration": "30.879116307692307",
+        "name": "rendering.mobile/no_op_touch_handler"
+    },
+    {
+        "duration": "7.875687661111112",
+        "name": "rendering.mobile/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "43.774574083333334",
+        "name": "rendering.mobile/nyc_gov_scroll"
+    },
+    {
+        "duration": "28.86468767676767",
+        "name": "rendering.mobile/nytimes"
+    },
+    {
+        "duration": "32.76511418918919",
+        "name": "rendering.mobile/nytimes_mobile"
+    },
+    {
+        "duration": "39.432520833333335",
+        "name": "rendering.mobile/nytimes_scroll"
+    },
+    {
+        "duration": "29.183294626262615",
+        "name": "rendering.mobile/nytimes_sync_scroll"
+    },
+    {
+        "duration": "32.504210031250004",
+        "name": "rendering.mobile/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "34.04863288888889",
+        "name": "rendering.mobile/parallax_effect"
+    },
+    {
+        "duration": "7.813179183333332",
+        "name": "rendering.mobile/particles"
+    },
+    {
+        "duration": "45.96363108333333",
+        "name": "rendering.mobile/pbs_pathological"
+    },
+    {
+        "duration": "25.04024716666667",
+        "name": "rendering.mobile/physical_simulation"
+    },
+    {
+        "duration": "36.569341757575735",
+        "name": "rendering.mobile/pinterest"
+    },
+    {
+        "duration": "33.83937996969696",
+        "name": "rendering.mobile/pinterest_desktop"
+    },
+    {
+        "duration": "4.684130433333334E-4",
+        "name": "rendering.mobile/pinterest_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.12505300000001",
+        "name": "rendering.mobile/pinterest_mobile"
+    },
+    {
+        "duration": "37.077444774193545",
+        "name": "rendering.mobile/pinterest_mobile_sync_scroll"
+    },
+    {
+        "duration": "37.4551306969697",
+        "name": "rendering.mobile/pinterest_sync_scroll"
+    },
+    {
+        "duration": "36.53341268965517",
+        "name": "rendering.mobile/put_get_image_data"
+    },
+    {
+        "duration": "38.50905749999999",
+        "name": "rendering.mobile/raf"
+    },
+    {
+        "duration": "38.67078766666667",
+        "name": "rendering.mobile/raf_animation"
+    },
+    {
+        "duration": "37.2684805",
+        "name": "rendering.mobile/raf_canvas"
+    },
+    {
+        "duration": "38.098928750000006",
+        "name": "rendering.mobile/raf_touch_animation"
+    },
+    {
+        "duration": "46.909655750000006",
+        "name": "rendering.mobile/recode_pathological"
+    },
+    {
+        "duration": "34.3923935959596",
+        "name": "rendering.mobile/reddit"
+    },
+    {
+        "duration": "36.2144181935484",
+        "name": "rendering.mobile/reddit_mobile"
+    },
+    {
+        "duration": "34.69525439393939",
+        "name": "rendering.mobile/reddit_sync_scroll"
+    },
+    {
+        "duration": "29.735817586206895",
+        "name": "rendering.mobile/runway"
+    },
+    {
+        "duration": "7.787277725000002",
+        "name": "rendering.mobile/san_angeles"
+    },
+    {
+        "duration": "25.775926818181816",
+        "name": "rendering.mobile/second_batch_js_heavy"
+    },
+    {
+        "duration": "22.76499309090909",
+        "name": "rendering.mobile/second_batch_js_light"
+    },
+    {
+        "duration": "23.42182654545455",
+        "name": "rendering.mobile/second_batch_js_medium"
+    },
+    {
+        "duration": "29.718893808080804",
+        "name": "rendering.mobile/sfgate"
+    },
+    {
+        "duration": "31.647625580645165",
+        "name": "rendering.mobile/sfgate_mobile"
+    },
+    {
+        "duration": "29.759017548387096",
+        "name": "rendering.mobile/sfgate_mobile_sync_scroll"
+    },
+    {
+        "duration": "30.50298864646465",
+        "name": "rendering.mobile/sfgate_sync_scroll"
+    },
+    {
+        "duration": "45.62634536363637",
+        "name": "rendering.mobile/silk_finance"
+    },
+    {
+        "duration": "32.46547154545455",
+        "name": "rendering.mobile/simple_text_page"
+    },
+    {
+        "duration": "25.242651545454546",
+        "name": "rendering.mobile/simple_touch_drag"
+    },
+    {
+        "duration": "35.90821318181819",
+        "name": "rendering.mobile/slashdot"
+    },
+    {
+        "duration": "39.57330063333334",
+        "name": "rendering.mobile/slashdot_mobile"
+    },
+    {
+        "duration": "36.595483676767685",
+        "name": "rendering.mobile/slashdot_sync_scroll"
+    },
+    {
+        "duration": "26.930350833333335",
+        "name": "rendering.mobile/slide_drawer"
+    },
+    {
+        "duration": "41.22190490909091",
+        "name": "rendering.mobile/small_texture_uploads"
+    },
+    {
+        "duration": "32.60261253571428",
+        "name": "rendering.mobile/smash_cat"
+    },
+    {
+        "duration": "26.818944821428577",
+        "name": "rendering.mobile/spielzeugz"
+    },
+    {
+        "duration": "26.866785833333335",
+        "name": "rendering.mobile/sticky_using_webkit"
+    },
+    {
+        "duration": "49.57458855555555",
+        "name": "rendering.mobile/stress_hidey_bars"
+    },
+    {
+        "duration": "30.882680321428577",
+        "name": "rendering.mobile/stroke_shapes"
+    },
+    {
+        "duration": "39.312634916666674",
+        "name": "rendering.mobile/svg_icon_raster"
+    },
+    {
+        "duration": "23.176137666666666",
+        "name": "rendering.mobile/swipe_action"
+    },
+    {
+        "duration": "32.950011999999994",
+        "name": "rendering.mobile/swipe_to_dismiss"
+    },
+    {
+        "duration": "31.503866090909092",
+        "name": "rendering.mobile/sync_scroll_offset"
+    },
+    {
+        "duration": "33.509823313131314",
+        "name": "rendering.mobile/techcrunch"
+    },
+    {
+        "duration": "50.292553303030274",
+        "name": "rendering.mobile/techcrunch_desktop"
+    },
+    {
+        "duration": "49.67322014141415",
+        "name": "rendering.mobile/techcrunch_desktop_gpu_raster"
+    },
+    {
+        "duration": "28.91998453333333",
+        "name": "rendering.mobile/techcrunch_mobile"
+    },
+    {
+        "duration": "27.62510973333333",
+        "name": "rendering.mobile/techcrunch_mobile_sync_scroll"
+    },
+    {
+        "duration": "26.284325979797973",
+        "name": "rendering.mobile/techcrunch_sync_scroll"
+    },
+    {
+        "duration": "33.28635116666667",
+        "name": "rendering.mobile/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "33.24592141666667",
+        "name": "rendering.mobile/text_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.23506375",
+        "name": "rendering.mobile/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "33.65843983333334",
+        "name": "rendering.mobile/text_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.71515991666666",
+        "name": "rendering.mobile/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "33.308868249999996",
+        "name": "rendering.mobile/text_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.58453108333333",
+        "name": "rendering.mobile/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "33.62460083333333",
+        "name": "rendering.mobile/text_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.714577166666665",
+        "name": "rendering.mobile/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "33.95342899999999",
+        "name": "rendering.mobile/text_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.307273083333335",
+        "name": "rendering.mobile/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "33.97050300000001",
+        "name": "rendering.mobile/text_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.31555533333333",
+        "name": "rendering.mobile/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "33.9795155",
+        "name": "rendering.mobile/text_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "30.87122258333333",
+        "name": "rendering.mobile/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "32.761403916666666",
+        "name": "rendering.mobile/text_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "29.243908833333336",
+        "name": "rendering.mobile/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "30.499830749999997",
+        "name": "rendering.mobile/text_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.718970333333335",
+        "name": "rendering.mobile/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "28.457602250000004",
+        "name": "rendering.mobile/text_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.65942066666667",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "36.075867666666674",
+        "name": "rendering.mobile/text_constant_full_page_raster_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.68798900000001",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "36.121883583333336",
+        "name": "rendering.mobile/text_constant_full_page_raster_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.47503849999999",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "36.095752",
+        "name": "rendering.mobile/text_constant_full_page_raster_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.44350408333333",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "35.94542333333334",
+        "name": "rendering.mobile/text_constant_full_page_raster_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.81002766666666",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "35.67144091666666",
+        "name": "rendering.mobile/text_constant_full_page_raster_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "36.041362",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "35.22242858333333",
+        "name": "rendering.mobile/text_constant_full_page_raster_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.95787116666667",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "35.536637916666656",
+        "name": "rendering.mobile/text_constant_full_page_raster_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.663002750000004",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "35.38024191666667",
+        "name": "rendering.mobile/text_constant_full_page_raster_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.303427666666664",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "32.709211833333335",
+        "name": "rendering.mobile/text_constant_full_page_raster_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.754921166666673",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "31.33767908333333",
+        "name": "rendering.mobile/text_constant_full_page_raster_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.596240750000003",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "27.39456008333333",
+        "name": "rendering.mobile/text_hover_05000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.663599333333337",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "27.392570500000005",
+        "name": "rendering.mobile/text_hover_10000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.6263265",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "27.614711833333335",
+        "name": "rendering.mobile/text_hover_15000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.464461666666665",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "27.604368499999996",
+        "name": "rendering.mobile/text_hover_20000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.33223575",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "27.437518166666667",
+        "name": "rendering.mobile/text_hover_30000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.7177155",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "27.578977750000007",
+        "name": "rendering.mobile/text_hover_40000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.215596500000004",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "27.799287000000003",
+        "name": "rendering.mobile/text_hover_50000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "26.80280466666667",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "26.47293883333333",
+        "name": "rendering.mobile/text_hover_60000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "25.155040666666668",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "25.299698000000003",
+        "name": "rendering.mobile/text_hover_75000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.391812916666666",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "24.28089466666667",
+        "name": "rendering.mobile/text_hover_90000_pixels_per_second_desktop_gpu_raster"
+    },
+    {
+        "duration": "27.139227191919183",
+        "name": "rendering.mobile/theverge"
+    },
+    {
+        "duration": "43.21710407070708",
+        "name": "rendering.mobile/theverge_article"
+    },
+    {
+        "duration": "47.70657356666667",
+        "name": "rendering.mobile/theverge_article_mobile"
+    },
+    {
+        "duration": "45.53697906666667",
+        "name": "rendering.mobile/theverge_article_mobile_sync_scroll"
+    },
+    {
+        "duration": "43.606548282828285",
+        "name": "rendering.mobile/theverge_article_sync_scroll"
+    },
+    {
+        "duration": "28.63334783333334",
+        "name": "rendering.mobile/theverge_mobile"
+    },
+    {
+        "duration": "28.7403767",
+        "name": "rendering.mobile/theverge_mobile_sync_scroll"
+    },
+    {
+        "duration": "27.246897626262637",
+        "name": "rendering.mobile/theverge_sync_scroll"
+    },
+    {
+        "duration": "33.13184422222222",
+        "name": "rendering.mobile/toggle_drawer"
+    },
+    {
+        "duration": "32.523740636363634",
+        "name": "rendering.mobile/touch_handler_scrolling"
+    },
+    {
+        "duration": "35.78960972",
+        "name": "rendering.mobile/transform_transitions"
+    },
+    {
+        "duration": "32.844299480000004",
+        "name": "rendering.mobile/transform_transitions_js_block"
+    },
+    {
+        "duration": "29.845363548706068",
+        "name": "rendering.mobile/twitter"
+    },
+    {
+        "duration": "31.29805238383835",
+        "name": "rendering.mobile/twitter_desktop"
+    },
+    {
+        "duration": "31.078204282828278",
+        "name": "rendering.mobile/twitter_desktop_gpu_raster"
+    },
+    {
+        "duration": "5.059242166666667E-4",
+        "name": "rendering.mobile/twitter_sync_scroll"
+    },
+    {
+        "duration": "33.84536236363636",
+        "name": "rendering.mobile/update_history_state"
+    },
+    {
+        "duration": "47.00696899999999",
+        "name": "rendering.mobile/usatoday"
+    },
+    {
+        "duration": "49.30340286666668",
+        "name": "rendering.mobile/usatoday_mobile"
+    },
+    {
+        "duration": "52.472119233333345",
+        "name": "rendering.mobile/usatoday_mobile_sync_scroll"
+    },
+    {
+        "duration": "50.88761351515151",
+        "name": "rendering.mobile/usatoday_sync_scroll"
+    },
+    {
+        "duration": "33.80640922222223",
+        "name": "rendering.mobile/vertical_expansion"
+    },
+    {
+        "duration": "45.39143570000001",
+        "name": "rendering.mobile/weather.com"
+    },
+    {
+        "duration": "39.09800921212121",
+        "name": "rendering.mobile/weather.com_desktop"
+    },
+    {
+        "duration": "39.95905835353533",
+        "name": "rendering.mobile/weather.com_desktop_gpu_raster"
+    },
+    {
+        "duration": "35.352943880000005",
+        "name": "rendering.mobile/web_animation_value_type_color"
+    },
+    {
+        "duration": "32.30285848",
+        "name": "rendering.mobile/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "34.39382648",
+        "name": "rendering.mobile/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "34.544754680000004",
+        "name": "rendering.mobile/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "34.00419764000001",
+        "name": "rendering.mobile/web_animation_value_type_path"
+    },
+    {
+        "duration": "32.536015240000005",
+        "name": "rendering.mobile/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "32.11594348",
+        "name": "rendering.mobile/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "32.56784408",
+        "name": "rendering.mobile/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "32.6319746",
+        "name": "rendering.mobile/web_animations_set_current_time"
+    },
+    {
+        "duration": "35.11787304",
+        "name": "rendering.mobile/web_animations_simultaneous"
+    },
+    {
+        "duration": "37.42823036000001",
+        "name": "rendering.mobile/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "34.14275544",
+        "name": "rendering.mobile/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "38.34377239999999",
+        "name": "rendering.mobile/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "35.67560036363636",
+        "name": "rendering.mobile/wikipedia"
+    },
+    {
+        "duration": "32.60568937373736",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "32.86753380808079",
+        "name": "rendering.mobile/wikipedia_delayed_scroll_start_sync_scroll"
+    },
+    {
+        "duration": "42.10797105050505",
+        "name": "rendering.mobile/wikipedia_desktop"
+    },
+    {
+        "duration": "42.580562151515146",
+        "name": "rendering.mobile/wikipedia_desktop_gpu_raster"
+    },
+    {
+        "duration": "33.297657466666664",
+        "name": "rendering.mobile/wikipedia_mobile"
+    },
+    {
+        "duration": "33.526991133333325",
+        "name": "rendering.mobile/wikipedia_mobile_sync_scroll"
+    },
+    {
+        "duration": "32.078904878787895",
+        "name": "rendering.mobile/wikipedia_sync_scroll"
+    },
+    {
+        "duration": "38.33933103030304",
+        "name": "rendering.mobile/wordpress"
+    },
+    {
+        "duration": "38.23012577777778",
+        "name": "rendering.mobile/wordpress_desktop"
+    },
+    {
+        "duration": "38.77219565656566",
+        "name": "rendering.mobile/wordpress_desktop_gpu_raster"
+    },
+    {
+        "duration": "40.36543213333333",
+        "name": "rendering.mobile/wordpress_mobile"
+    },
+    {
+        "duration": "38.61311013333333",
+        "name": "rendering.mobile/wordpress_mobile_sync_scroll"
+    },
+    {
+        "duration": "36.91970569696969",
+        "name": "rendering.mobile/wordpress_sync_scroll"
+    },
+    {
+        "duration": "74.64666655555557",
+        "name": "rendering.mobile/worldjournal"
+    },
+    {
+        "duration": "79.36514751851853",
+        "name": "rendering.mobile/worldjournal_mobile"
+    },
+    {
+        "duration": "77.35482244444445",
+        "name": "rendering.mobile/worldjournal_mobile_sync_scroll"
+    },
+    {
+        "duration": "73.98109298989897",
+        "name": "rendering.mobile/worldjournal_sync_scroll"
+    },
+    {
+        "duration": "48.15227918181818",
+        "name": "rendering.mobile/wow_wiki_pathological"
+    },
+    {
+        "duration": "56.979442505050514",
+        "name": "rendering.mobile/wowwiki"
+    },
+    {
+        "duration": "59.124259466666665",
+        "name": "rendering.mobile/wowwiki_mobile"
+    },
+    {
+        "duration": "58.001735566666675",
+        "name": "rendering.mobile/wowwiki_mobile_sync_scroll"
+    },
+    {
+        "duration": "56.487392737373746",
+        "name": "rendering.mobile/wowwiki_sync_scroll"
+    },
+    {
+        "duration": "26.536885080808084",
+        "name": "rendering.mobile/wsj"
+    },
+    {
+        "duration": "29.543995899999995",
+        "name": "rendering.mobile/wsj_mobile"
+    },
+    {
+        "duration": "27.26475646666667",
+        "name": "rendering.mobile/wsj_mobile_sync_scroll"
+    },
+    {
+        "duration": "26.661519222222225",
+        "name": "rendering.mobile/wsj_sync_scroll"
+    },
+    {
+        "duration": "32.16896739393939",
+        "name": "rendering.mobile/yahoo_answers"
+    },
+    {
+        "duration": "30.52977131313131",
+        "name": "rendering.mobile/yahoo_answers_desktop"
+    },
+    {
+        "duration": "31.109628252525244",
+        "name": "rendering.mobile/yahoo_answers_desktop_gpu_raster"
+    },
+    {
+        "duration": "32.424225033333336",
+        "name": "rendering.mobile/yahoo_answers_mobile"
+    },
+    {
+        "duration": "33.10580843333334",
+        "name": "rendering.mobile/yahoo_answers_mobile_sync_scroll"
+    },
+    {
+        "duration": "31.22894634343434",
+        "name": "rendering.mobile/yahoo_answers_sync_scroll"
+    },
+    {
+        "duration": "49.676530633333336",
+        "name": "rendering.mobile/yahoo_games"
+    },
+    {
+        "duration": "47.60486273737375",
+        "name": "rendering.mobile/yahoo_games_desktop"
+    },
+    {
+        "duration": "47.72283676767677",
+        "name": "rendering.mobile/yahoo_games_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.199312272727262",
+        "name": "rendering.mobile/yahoo_news"
+    },
+    {
+        "duration": "34.97376979797981",
+        "name": "rendering.mobile/yahoo_news_desktop"
+    },
+    {
+        "duration": "35.84221124242424",
+        "name": "rendering.mobile/yahoo_news_desktop_gpu_raster"
+    },
+    {
+        "duration": "31.731216300000007",
+        "name": "rendering.mobile/yahoo_news_mobile"
+    },
+    {
+        "duration": "30.03508683333333",
+        "name": "rendering.mobile/yahoo_news_mobile_sync_scroll"
+    },
+    {
+        "duration": "28.16396992929292",
+        "name": "rendering.mobile/yahoo_news_sync_scroll"
+    },
+    {
+        "duration": "35.0764927",
+        "name": "rendering.mobile/yahoo_sports"
+    },
+    {
+        "duration": "32.611100202020204",
+        "name": "rendering.mobile/yahoo_sports_desktop"
+    },
+    {
+        "duration": "33.844070393939404",
+        "name": "rendering.mobile/yahoo_sports_desktop_gpu_raster"
+    },
+    {
+        "duration": "42.40594936363637",
+        "name": "rendering.mobile/yahoo_sports_pathological"
+    },
+    {
+        "duration": "31.89040891919191",
+        "name": "rendering.mobile/youtube"
+    },
+    {
+        "duration": "47.828775868686876",
+        "name": "rendering.mobile/youtube_desktop"
+    },
+    {
+        "duration": "49.124170888888884",
+        "name": "rendering.mobile/youtube_desktop_gpu_raster"
+    },
+    {
+        "duration": "24.972468499999994",
+        "name": "rendering.mobile/youtube_mobile"
+    },
+    {
+        "duration": "22.659193833333337",
+        "name": "rendering.mobile/youtube_mobile_sync_scroll"
+    },
+    {
+        "duration": "23.514629414141417",
+        "name": "rendering.mobile/youtube_sync_scroll"
+    },
+    {
+        "duration": "62.272023",
+        "name": "rendering.mobile/yuv_decoding"
+    },
+    {
+        "duration": "63.67977336363636",
+        "name": "rendering.mobile/yuv_decoding_gpu_rasterization_and_decoding"
+    },
+    {
+        "duration": "40.498921363636356",
+        "name": "rendering.mobile/zdnet_pathological"
+    },
+    {
+        "duration": "31.203441500000004",
+        "name": "rendering.mobile/zoom_in_animation"
+    },
+    {
+        "duration": "24.053189222222226",
+        "name": "scheduler.tough_scheduling_cases/raf"
+    },
+    {
+        "duration": "24.58054449494949",
+        "name": "scheduler.tough_scheduling_cases/raf.html"
+    },
+    {
+        "duration": "24.044186777777774",
+        "name": "scheduler.tough_scheduling_cases/raf_animation"
+    },
+    {
+        "duration": "24.471227101010093",
+        "name": "scheduler.tough_scheduling_cases/raf_animation.html"
+    },
+    {
+        "duration": "23.486193444444442",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas"
+    },
+    {
+        "duration": "23.929469979797975",
+        "name": "scheduler.tough_scheduling_cases/raf_canvas.html"
+    },
+    {
+        "duration": "23.554633250000002",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation"
+    },
+    {
+        "duration": "24.31968610101009",
+        "name": "scheduler.tough_scheduling_cases/raf_touch_animation.html"
+    },
+    {
+        "duration": "17.567614737373738",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?heavy"
+    },
+    {
+        "duration": "15.933300161616154",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?light"
+    },
+    {
+        "duration": "16.273091873737375",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js.html?medium"
+    },
+    {
+        "duration": "17.58495697222222",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_heavy"
+    },
+    {
+        "duration": "16.057615138888885",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_light"
+    },
+    {
+        "duration": "16.546214680555554",
+        "name": "scheduler.tough_scheduling_cases/second_batch_js_medium"
+    },
+    {
+        "duration": "34.21874991666666",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page"
+    },
+    {
+        "duration": "40.989694050505044",
+        "name": "scheduler.tough_scheduling_cases/simple_text_page.html"
+    },
+    {
+        "duration": "17.09494802777778",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag"
+    },
+    {
+        "duration": "17.1179281111111",
+        "name": "scheduler.tough_scheduling_cases/simple_touch_drag.html"
+    },
+    {
+        "duration": "20.764502999999994",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset"
+    },
+    {
+        "duration": "20.64756057575758",
+        "name": "scheduler.tough_scheduling_cases/sync_scroll_offset.html"
+    },
+    {
+        "duration": "23.065795361111114",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling"
+    },
+    {
+        "duration": "23.356961343434342",
+        "name": "scheduler.tough_scheduling_cases/touch_handler_scrolling.html"
+    },
+    {
+        "duration": "2.63786316E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/amazon"
+    },
+    {
+        "duration": "33.80300638383836",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "25.423665797979808",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "4.48703769E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/cnn"
+    },
+    {
+        "duration": "18.872902828282832",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/ebay"
+    },
+    {
+        "duration": "24.43893978787879",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/espn"
+    },
+    {
+        "duration": "24.309108555555557",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/facebook"
+    },
+    {
+        "duration": "67.25047055555555",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/gmail"
+    },
+    {
+        "duration": "36.09170495959597",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "50.770853787878785",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "39.792553565656554",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "46.37658148484849",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "19.910990656565655",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "22.536726232323225",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "4.2290687300000006E-4",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "33.30375853535352",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "26.528168030303032",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/twitter"
+    },
+    {
+        "duration": "29.678327292929293",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "35.29338848484849",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "30.487788070707058",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "24.569967909090913",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "38.78400107070706",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "28.73660282828283",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "27.182221686868683",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "40.08568662626261",
+        "name": "smoothness.gpu_rasterization.top_25_smooth/youtube"
+    },
+    {
+        "duration": "28.04500614141415",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "28.373820262626253",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "32.77393743434344",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "46.07326119191917",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "26.678037637499994",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "27.440452687499988",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "31.865303850000004",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "39.4857084",
+        "name": "smoothness.gpu_rasterization.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "40.55353654545455",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "38.9083806969697",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "28.20216505050505",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "28.874584434343422",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "38.476966371428574",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "37.56535682857143",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "26.380737800000002",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "26.042319285714292",
+        "name": "smoothness.gpu_rasterization.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "29.444780151515147",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "37.42526526262627",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "26.660416666666666",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "21.762691454545454",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "26.73234650505051",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "34.41139099999999",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "21.646575666666664",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "29.812685085365857",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "26.382042565656544",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "33.57973538383839",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "31.877053939393935",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "37.63646426262626",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "27.284374818181824",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "48.42330762626264",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "26.44414957575757",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "26.662883414141422",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "39.45358327272728",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "25.302832191919197",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "32.30846929292929",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "32.39707833333334",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "39.596718101010104",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "22.70268291919193",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "32.38882310101009",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "31.055875343434323",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "29.678338939393928",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "46.5214357979798",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "39.188725919191924",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "26.154076626262615",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "26.069677424242432",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "21.91335145454546",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "27.072448222222224",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "35.392396151515165",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "33.14390188888889",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_games_pinch"
+    },
+    {
+        "duration": "33.2079732929293",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "40.718619484848496",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "30.502430939393932",
+        "name": "smoothness.gpu_rasterization.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "24.20282247474749",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.074684161616158",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "24.049989434343445",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "23.964118606060598",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "24.10839572727273",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "24.144700292929286",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "24.108367444444458",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "23.035316363636355",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.360100656565656",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.327223505050508",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "35.87636223232324",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.314069515151516",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "23.500598757575755",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "23.08250453535355",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "23.016791575757576",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "22.88297080808082",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "22.756930898989907",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "21.884604585858582",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "20.579518989898997",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "19.34737316161615",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "24.890596424242414",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "25.082001282828276",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "24.95338900000001",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "24.907247656565655",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "25.02299748484849",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "24.904818010101",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "25.03035413131313",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "24.85935277777778",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "23.203315292929286",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "22.233629797979795",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.77956238383838",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.91810305050505",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.81251712121212",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "21.863682010101005",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.874503525252532",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.803491171717187",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.86322654545455",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "21.03221536363637",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.58269121212121",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.757427595959594",
+        "name": "smoothness.gpu_rasterization.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "65.17557407462685",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "81.26968327272728",
+        "name": "smoothness.gpu_rasterization_and_decoding.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "65.88610394117649",
+        "name": "smoothness.image_decoding_cases/yuv_decoding"
+    },
+    {
+        "duration": "81.95422245454547",
+        "name": "smoothness.image_decoding_cases/yuv_decoding.html"
+    },
+    {
+        "duration": "2.2113323199999998E-4",
+        "name": "smoothness.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "25.350318747474752",
+        "name": "smoothness.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "17.37672144444444",
+        "name": "smoothness.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "16.179497883838376",
+        "name": "smoothness.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "18.526853101010104",
+        "name": "smoothness.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "32.882800282828285",
+        "name": "smoothness.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "23.379700454545446",
+        "name": "smoothness.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "37.40040888888888",
+        "name": "smoothness.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "19.327488434343433",
+        "name": "smoothness.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "34.58224128282829",
+        "name": "smoothness.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "33.7675455959596",
+        "name": "smoothness.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "25.878067404040408",
+        "name": "smoothness.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "2.31146814E-4",
+        "name": "smoothness.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "20.810490585858584",
+        "name": "smoothness.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "2.67910958E-4",
+        "name": "smoothness.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "21.125003333333336",
+        "name": "smoothness.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "1.5575885799999997E-4",
+        "name": "smoothness.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "24.759135292929294",
+        "name": "smoothness.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "20.813705878787893",
+        "name": "smoothness.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "17.656018777777778",
+        "name": "smoothness.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "19.115871373737374",
+        "name": "smoothness.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "23.511869555555563",
+        "name": "smoothness.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "16.619878656565657",
+        "name": "smoothness.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "22.76545967676768",
+        "name": "smoothness.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "25.436306333333327",
+        "name": "smoothness.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "26.495792494949477",
+        "name": "smoothness.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "22.050099656565664",
+        "name": "smoothness.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "27.34706691919192",
+        "name": "smoothness.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "19.079180939393932",
+        "name": "smoothness.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "20.530508848484857",
+        "name": "smoothness.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "34.88967134343432",
+        "name": "smoothness.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "2.5146007500000003E-4",
+        "name": "smoothness.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "33.12766106060606",
+        "name": "smoothness.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "24.658401010101006",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "24.759809292929305",
+        "name": "smoothness.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "26.102780191919187",
+        "name": "smoothness.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "45.747915040404045",
+        "name": "smoothness.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "38.3109349090909",
+        "name": "smoothness.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "20.553884939393935",
+        "name": "smoothness.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "22.914639050505055",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "20.57174221212122",
+        "name": "smoothness.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "18.28048497979798",
+        "name": "smoothness.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "32.86817991549297",
+        "name": "smoothness.key_silk_cases/basic_stream"
+    },
+    {
+        "duration": "23.917829056338025",
+        "name": "smoothness.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "24.915508323943666",
+        "name": "smoothness.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "24.78264873239437",
+        "name": "smoothness.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "22.766404563380274",
+        "name": "smoothness.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "24.35833745070423",
+        "name": "smoothness.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "23.635138661971826",
+        "name": "smoothness.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "23.884862888888886",
+        "name": "smoothness.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "25.469248816901402",
+        "name": "smoothness.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "25.097229154929586",
+        "name": "smoothness.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "25.630131309859152",
+        "name": "smoothness.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "24.349334577464784",
+        "name": "smoothness.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "44.74819373737374",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "22.53722283838384",
+        "name": "smoothness.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "20.942114262626262",
+        "name": "smoothness.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "23.89759618181818",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "22.916086161616153",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "23.583914242424257",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "24.398455010101017",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "24.785331222222215",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "24.899397262626263",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "24.99145357575758",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "24.300316999999986",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "24.444861626262625",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "25.84705335353534",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "24.108530383838385",
+        "name": "smoothness.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "25.503412858585857",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "22.324821616161618",
+        "name": "smoothness.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "32.989315151515136",
+        "name": "smoothness.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "4.1248798699999997E-4",
+        "name": "smoothness.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "31.519428505050502",
+        "name": "smoothness.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "25.45949865656566",
+        "name": "smoothness.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "3.9782524599999997E-4",
+        "name": "smoothness.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "25.05358677777778",
+        "name": "smoothness.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "3.45396995E-4",
+        "name": "smoothness.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "36.95740016161615",
+        "name": "smoothness.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "19.84401333333333",
+        "name": "smoothness.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "27.310471545454547",
+        "name": "smoothness.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "28.01744130985915",
+        "name": "smoothness.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "27.902532181818174",
+        "name": "smoothness.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "23.043557704225357",
+        "name": "smoothness.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "23.490137303030316",
+        "name": "smoothness.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "44.635895859154914",
+        "name": "smoothness.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "23.96564752112676",
+        "name": "smoothness.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "30.194846971830987",
+        "name": "smoothness.key_silk_cases/masonry"
+    },
+    {
+        "duration": "30.44507414141415",
+        "name": "smoothness.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "22.368048704225338",
+        "name": "smoothness.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "25.370649887323946",
+        "name": "smoothness.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "20.768867746478875",
+        "name": "smoothness.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "25.79041352525253",
+        "name": "smoothness.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "31.571342830985916",
+        "name": "smoothness.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "31.79460555555556",
+        "name": "smoothness.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "22.02238238028169",
+        "name": "smoothness.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "36.56567185915493",
+        "name": "smoothness.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "31.33300081690141",
+        "name": "smoothness.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "19.788641154929582",
+        "name": "smoothness.key_silk_cases/swipe_action"
+    },
+    {
+        "duration": "24.055146915492955",
+        "name": "smoothness.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "27.128876760563386",
+        "name": "smoothness.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "25.646606971830984",
+        "name": "smoothness.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "24.695754788732398",
+        "name": "smoothness.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "23.39727194366197",
+        "name": "smoothness.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "18.504768979797976",
+        "name": "smoothness.maps/maps_perf_test"
+    },
+    {
+        "duration": "50.391305527777774",
+        "name": "smoothness.pathological_mobile_sites/cnn_pathological"
+    },
+    {
+        "duration": "25.602937416666673",
+        "name": "smoothness.pathological_mobile_sites/espn_pathological"
+    },
+    {
+        "duration": "22.882058861111105",
+        "name": "smoothness.pathological_mobile_sites/guardian_pathological"
+    },
+    {
+        "duration": "48.03833860606059",
+        "name": "smoothness.pathological_mobile_sites/http://edition.cnn.com"
+    },
+    {
+        "duration": "27.226097323232324",
+        "name": "smoothness.pathological_mobile_sites/http://m.espn.go.com/nhl/rankings"
+    },
+    {
+        "duration": "33.165713525252514",
+        "name": "smoothness.pathological_mobile_sites/http://recode.net"
+    },
+    {
+        "duration": "31.984742111111114",
+        "name": "smoothness.pathological_mobile_sites/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "30.807061515151517",
+        "name": "smoothness.pathological_mobile_sites/http://www.latimes.com"
+    },
+    {
+        "duration": "31.642167949494958",
+        "name": "smoothness.pathological_mobile_sites/http://www.pbs.org/newshour/bb/much-really-cost-live-city-like-seattle/#the-rundown"
+    },
+    {
+        "duration": "23.16318249494949",
+        "name": "smoothness.pathological_mobile_sites/http://www.theguardian.com/politics/2015/mar/09/ed-balls-tory-spending-plans-nhs-charging"
+    },
+    {
+        "duration": "34.0523654040404",
+        "name": "smoothness.pathological_mobile_sites/http://www.wowwiki.com/World_of_Warcraft:_Mists_of_Pandaria"
+    },
+    {
+        "duration": "27.60075993939393",
+        "name": "smoothness.pathological_mobile_sites/http://www.zdnet.com"
+    },
+    {
+        "duration": "25.821269292929287",
+        "name": "smoothness.pathological_mobile_sites/https://www.linkedin.com/in/linustorvalds"
+    },
+    {
+        "duration": "28.85288380555555",
+        "name": "smoothness.pathological_mobile_sites/latimes_pathological"
+    },
+    {
+        "duration": "25.334024194444453",
+        "name": "smoothness.pathological_mobile_sites/linkedin_pathological"
+    },
+    {
+        "duration": "29.939105777777783",
+        "name": "smoothness.pathological_mobile_sites/pbs_pathological"
+    },
+    {
+        "duration": "31.406162583333337",
+        "name": "smoothness.pathological_mobile_sites/recode_pathological"
+    },
+    {
+        "duration": "31.4263263888889",
+        "name": "smoothness.pathological_mobile_sites/wow_wiki_pathological"
+    },
+    {
+        "duration": "29.70441333333334",
+        "name": "smoothness.pathological_mobile_sites/yahoo_sports_pathological"
+    },
+    {
+        "duration": "26.614090805555563",
+        "name": "smoothness.pathological_mobile_sites/zdnet_pathological"
+    },
+    {
+        "duration": "54.0676506025641",
+        "name": "smoothness.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "37.37320398717949",
+        "name": "smoothness.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "33.250007737373735",
+        "name": "smoothness.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "55.51566208080808",
+        "name": "smoothness.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "36.568286686868696",
+        "name": "smoothness.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "38.74863145454546",
+        "name": "smoothness.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "35.91706291025642",
+        "name": "smoothness.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "32.78830960256409",
+        "name": "smoothness.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "20.02431441414142",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/amazon"
+    },
+    {
+        "duration": "27.194729747474746",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/androidpolice"
+    },
+    {
+        "duration": "17.916139323232322",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/baidu"
+    },
+    {
+        "duration": "16.609013969696967",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/bing"
+    },
+    {
+        "duration": "19.121365272727264",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/blogspot"
+    },
+    {
+        "duration": "34.87631877777777",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "23.667364616161617",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/booking.com"
+    },
+    {
+        "duration": "39.39716465656565",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/capitolvolkswagen"
+    },
+    {
+        "duration": "19.88321476767677",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn"
+    },
+    {
+        "duration": "36.41210400000001",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cnn_article"
+    },
+    {
+        "duration": "35.11860633333333",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "26.50883206060606",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/deviantart"
+    },
+    {
+        "duration": "2.371753935714286E-4",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/digg"
+    },
+    {
+        "duration": "21.094613070707073",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/ebay"
+    },
+    {
+        "duration": "31.591526737373737",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/espn"
+    },
+    {
+        "duration": "22.03810724242424",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/facebook"
+    },
+    {
+        "duration": "23.30045149494949",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/forecast.io"
+    },
+    {
+        "duration": "24.675606505050503",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_news"
+    },
+    {
+        "duration": "23.219749858585864",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_plus"
+    },
+    {
+        "duration": "18.529846747474746",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/google_web_search"
+    },
+    {
+        "duration": "19.8416407070707",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/gsp.ro"
+    },
+    {
+        "duration": "24.20681980808082",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/linkedin"
+    },
+    {
+        "duration": "17.088844414141413",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/mlb"
+    },
+    {
+        "duration": "22.781490313131304",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "27.362588282828284",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/pinterest"
+    },
+    {
+        "duration": "26.921663646464637",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "22.7163132020202",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/sfgate"
+    },
+    {
+        "duration": "28.14428008080808",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "19.763601696969705",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/techcrunch"
+    },
+    {
+        "duration": "21.248669545454547",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge"
+    },
+    {
+        "duration": "36.41737158585858",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/theverge_article"
+    },
+    {
+        "duration": "20.318543545454546",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/twitter"
+    },
+    {
+        "duration": "35.64409949494951",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/usatoday"
+    },
+    {
+        "duration": "25.323874696969696",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia"
+    },
+    {
+        "duration": "25.605219515151518",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wikipedia_delayed_scroll_start"
+    },
+    {
+        "duration": "26.935462525252518",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wordpress"
+    },
+    {
+        "duration": "47.22534857575757",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/worldjournal"
+    },
+    {
+        "duration": "39.37278781818182",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wowwiki"
+    },
+    {
+        "duration": "20.95110911111111",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/wsj"
+    },
+    {
+        "duration": "23.778150777777782",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_answers"
+    },
+    {
+        "duration": "21.15945578787878",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/yahoo_news"
+    },
+    {
+        "duration": "19.455767737373744",
+        "name": "smoothness.sync_scroll.key_mobile_sites_smooth/youtube"
+    },
+    {
+        "duration": "1.354217539E-4",
+        "name": "smoothness.top_25_smooth/amazon"
+    },
+    {
+        "duration": "30.53252716161616",
+        "name": "smoothness.top_25_smooth/blogspot"
+    },
+    {
+        "duration": "23.124127575757576",
+        "name": "smoothness.top_25_smooth/booking.com"
+    },
+    {
+        "duration": "2.5498866900000003E-4",
+        "name": "smoothness.top_25_smooth/cnn"
+    },
+    {
+        "duration": "17.435840070707073",
+        "name": "smoothness.top_25_smooth/ebay"
+    },
+    {
+        "duration": "23.638452080808083",
+        "name": "smoothness.top_25_smooth/espn"
+    },
+    {
+        "duration": "22.165393595959596",
+        "name": "smoothness.top_25_smooth/facebook"
+    },
+    {
+        "duration": "67.67521139393938",
+        "name": "smoothness.top_25_smooth/gmail"
+    },
+    {
+        "duration": "33.69550159595961",
+        "name": "smoothness.top_25_smooth/google_calendar"
+    },
+    {
+        "duration": "47.573370565656546",
+        "name": "smoothness.top_25_smooth/google_docs"
+    },
+    {
+        "duration": "36.18511610101011",
+        "name": "smoothness.top_25_smooth/google_image_search"
+    },
+    {
+        "duration": "42.148479171717156",
+        "name": "smoothness.top_25_smooth/google_plus"
+    },
+    {
+        "duration": "18.65928963636364",
+        "name": "smoothness.top_25_smooth/google_web_search"
+    },
+    {
+        "duration": "20.241625222222225",
+        "name": "smoothness.top_25_smooth/linkedin"
+    },
+    {
+        "duration": "24.089806262626254",
+        "name": "smoothness.top_25_smooth/pinterest"
+    },
+    {
+        "duration": "30.10980199999999",
+        "name": "smoothness.top_25_smooth/techcrunch"
+    },
+    {
+        "duration": "24.257961424242424",
+        "name": "smoothness.top_25_smooth/twitter"
+    },
+    {
+        "duration": "26.5012102929293",
+        "name": "smoothness.top_25_smooth/weather.com"
+    },
+    {
+        "duration": "32.86209546464648",
+        "name": "smoothness.top_25_smooth/wikipedia"
+    },
+    {
+        "duration": "27.75279394949495",
+        "name": "smoothness.top_25_smooth/wordpress"
+    },
+    {
+        "duration": "23.058210141414147",
+        "name": "smoothness.top_25_smooth/yahoo_answers"
+    },
+    {
+        "duration": "36.03707145454545",
+        "name": "smoothness.top_25_smooth/yahoo_games"
+    },
+    {
+        "duration": "26.54153418181817",
+        "name": "smoothness.top_25_smooth/yahoo_news"
+    },
+    {
+        "duration": "24.45705438383838",
+        "name": "smoothness.top_25_smooth/yahoo_sports"
+    },
+    {
+        "duration": "36.48508357575758",
+        "name": "smoothness.top_25_smooth/youtube"
+    },
+    {
+        "duration": "32.93722462025316",
+        "name": "smoothness.tough_animation_cases/balls_css_key_frame_animations"
+    },
+    {
+        "duration": "38.04891934343433",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations.html"
+    },
+    {
+        "duration": "3.9864910666666665E-4",
+        "name": "smoothness.tough_animation_cases/balls_css_keyframe_animations_composited_transform.html"
+    },
+    {
+        "duration": "29.382368949367102",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties"
+    },
+    {
+        "duration": "30.957883616161606",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_2_properties.html"
+    },
+    {
+        "duration": "29.411285936708865",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties"
+    },
+    {
+        "duration": "30.33104121212123",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_40_properties.html"
+    },
+    {
+        "duration": "29.426281481012666",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties"
+    },
+    {
+        "duration": "29.317628909090896",
+        "name": "smoothness.tough_animation_cases/balls_css_transition_all_properties.html"
+    },
+    {
+        "duration": "29.795815873417716",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas"
+    },
+    {
+        "duration": "31.22580295959595",
+        "name": "smoothness.tough_animation_cases/balls_javascript_canvas.html"
+    },
+    {
+        "duration": "29.959145835443042",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css"
+    },
+    {
+        "duration": "34.64029882828283",
+        "name": "smoothness.tough_animation_cases/balls_javascript_css.html"
+    },
+    {
+        "duration": "53.63490156962027",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations"
+    },
+    {
+        "duration": "55.502977121212105",
+        "name": "smoothness.tough_animation_cases/balls_svg_animations.html"
+    },
+    {
+        "duration": "28.156190000000002",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation"
+    },
+    {
+        "duration": "28.135392676767673",
+        "name": "smoothness.tough_animation_cases/compositor_heavy_animation.html?N=0200"
+    },
+    {
+        "duration": "142.59641583333334",
+        "name": "smoothness.tough_animation_cases/css_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "30.73311575757575",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "29.878954232323235",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "29.90885762626262",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "29.876234515151527",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "29.733342354430373",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_inline_style"
+    },
+    {
+        "duration": "30.66545055696203",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_new_element"
+    },
+    {
+        "duration": "29.616757607594938",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_style_element"
+    },
+    {
+        "duration": "29.558853202531655",
+        "name": "smoothness.tough_animation_cases/css_animations_simultaneous_updating_class"
+    },
+    {
+        "duration": "32.550295909090906",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "33.768087727272736",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "31.503526575757572",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "31.56739598989899",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "28.128811898734178",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "28.29114780808081",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "31.468445481012658",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_inline_style"
+    },
+    {
+        "duration": "32.185666443037974",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_new_element"
+    },
+    {
+        "duration": "33.70422744303796",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_style_element"
+    },
+    {
+        "duration": "32.58730623232323",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "30.869567060606073",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "31.60407201010101",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "31.824163424242414",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "31.60885650632911",
+        "name": "smoothness.tough_animation_cases/css_animations_staggered_updating_class"
+    },
+    {
+        "duration": "31.545026367088614",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_inline_style"
+    },
+    {
+        "duration": "32.766090924050644",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_new_element"
+    },
+    {
+        "duration": "30.670539911392407",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_style_element"
+    },
+    {
+        "duration": "31.424053202531642",
+        "name": "smoothness.tough_animation_cases/css_animations_triggered_updating_class"
+    },
+    {
+        "duration": "29.945014962025326",
+        "name": "smoothness.tough_animation_cases/css_transitions_inline_style"
+    },
+    {
+        "duration": "30.360848227848116",
+        "name": "smoothness.tough_animation_cases/css_transitions_new_element"
+    },
+    {
+        "duration": "30.526550646464642",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "30.09856731313132",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "30.06788649494948",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "30.217358606060596",
+        "name": "smoothness.tough_animation_cases/css_transitions_simultaneous_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "30.35700803030304",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "30.33360631313132",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "30.383120535353534",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "30.39241971717171",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_chaining_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "30.23581458227848",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_inline_style"
+    },
+    {
+        "duration": "30.079201708860758",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_new_element"
+    },
+    {
+        "duration": "30.031308582278477",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_style_element"
+    },
+    {
+        "duration": "31.459235969696973",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_new_element.html?N=0316"
+    },
+    {
+        "duration": "30.68627027272727",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_inserting_style_element.html?N=0316"
+    },
+    {
+        "duration": "31.04699124242425",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_class.html?N=0316"
+    },
+    {
+        "duration": "31.226871252525253",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_triggering_by_updating_inline_style.html?N=0316"
+    },
+    {
+        "duration": "30.250562075949357",
+        "name": "smoothness.tough_animation_cases/css_transitions_staggered_updating_class"
+    },
+    {
+        "duration": "30.009415443037977",
+        "name": "smoothness.tough_animation_cases/css_transitions_style_element"
+    },
+    {
+        "duration": "30.990381240506327",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_inline_style"
+    },
+    {
+        "duration": "31.18896429113924",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_new_element"
+    },
+    {
+        "duration": "30.36422558227846",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_style_element"
+    },
+    {
+        "duration": "30.902391708860762",
+        "name": "smoothness.tough_animation_cases/css_transitions_triggered_updating_class"
+    },
+    {
+        "duration": "30.01165607594937",
+        "name": "smoothness.tough_animation_cases/css_transitions_updating_class"
+    },
+    {
+        "duration": "28.072727632911384",
+        "name": "smoothness.tough_animation_cases/css_value_type_color"
+    },
+    {
+        "duration": "28.079098313131308",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "28.147146707070704",
+        "name": "smoothness.tough_animation_cases/css_value_type_color.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "28.65298730379746",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter"
+    },
+    {
+        "duration": "28.678620090909092",
+        "name": "smoothness.tough_animation_cases/css_value_type_filter.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "27.723168924050643",
+        "name": "smoothness.tough_animation_cases/css_value_type_length"
+    },
+    {
+        "duration": "27.773647636363645",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "28.033301212121213",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_3d.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "28.067816556962015",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex"
+    },
+    {
+        "duration": "28.10041787878788",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "28.259131313131316",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "28.058593696202532",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple"
+    },
+    {
+        "duration": "28.051657676767675",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "28.24260953535355",
+        "name": "smoothness.tough_animation_cases/css_value_type_length_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "28.68689516455698",
+        "name": "smoothness.tough_animation_cases/css_value_type_path"
+    },
+    {
+        "duration": "28.66930103030303",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "28.477298262626263",
+        "name": "smoothness.tough_animation_cases/css_value_type_path.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "28.131010367088606",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow"
+    },
+    {
+        "duration": "28.1409104848485",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "28.192713222222224",
+        "name": "smoothness.tough_animation_cases/css_value_type_shadow.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "27.75073567088608",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex"
+    },
+    {
+        "duration": "27.79762033333332",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "27.79831377777778",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_complex.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "27.54941921518988",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple"
+    },
+    {
+        "duration": "27.92336455555555",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=css_animations&N=0316"
+    },
+    {
+        "duration": "27.753073131313137",
+        "name": "smoothness.tough_animation_cases/css_value_type_transform_simple.html?api=web_animations&N=0316"
+    },
+    {
+        "duration": "27.540967886075947",
+        "name": "smoothness.tough_animation_cases/keyframed_animations"
+    },
+    {
+        "duration": "27.624362919191928",
+        "name": "smoothness.tough_animation_cases/keyframed_animations.html"
+    },
+    {
+        "duration": "28.660494949367084",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference"
+    },
+    {
+        "duration": "28.561820414141405",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_difference.html"
+    },
+    {
+        "duration": "28.760740303797466",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue"
+    },
+    {
+        "duration": "28.536286555555552",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_hue.html"
+    },
+    {
+        "duration": "28.320164202531643",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_propagating_isolation"
+    },
+    {
+        "duration": "28.065941405063292",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen"
+    },
+    {
+        "duration": "27.95620525252525",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_animation_screen.html"
+    },
+    {
+        "duration": "28.38815881818182",
+        "name": "smoothness.tough_animation_cases/mix_blend_mode_propagating_isolation.html"
+    },
+    {
+        "duration": "28.094482282828288",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions.html"
+    },
+    {
+        "duration": "28.100236822784797",
+        "name": "smoothness.tough_animation_cases/overlay_background_color_css_transitions_page"
+    },
+    {
+        "duration": "3.882015476470588E-4",
+        "name": "smoothness.tough_animation_cases/robohornetpro"
+    },
+    {
+        "duration": "27.395186686868673",
+        "name": "smoothness.tough_animation_cases/transform_transition_js_block.html"
+    },
+    {
+        "duration": "28.10205679746835",
+        "name": "smoothness.tough_animation_cases/transform_transitions"
+    },
+    {
+        "duration": "28.334037717171714",
+        "name": "smoothness.tough_animation_cases/transform_transitions.html"
+    },
+    {
+        "duration": "27.289361354430373",
+        "name": "smoothness.tough_animation_cases/transform_transitions_js_block"
+    },
+    {
+        "duration": "28.196671139240504",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_color"
+    },
+    {
+        "duration": "27.88747105063291",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_3d"
+    },
+    {
+        "duration": "28.109415164556957",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_complex"
+    },
+    {
+        "duration": "28.171017670886073",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_length_simple"
+    },
+    {
+        "duration": "28.446795430379748",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_path"
+    },
+    {
+        "duration": "28.18946606329114",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_shadow"
+    },
+    {
+        "duration": "27.733102493670888",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_complex"
+    },
+    {
+        "duration": "27.76254259493671",
+        "name": "smoothness.tough_animation_cases/web_animation_value_type_transform_simple"
+    },
+    {
+        "duration": "156.9857204705882",
+        "name": "smoothness.tough_animation_cases/web_animations_many_keyframes.html?N=0316"
+    },
+    {
+        "duration": "27.843329253164566",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time"
+    },
+    {
+        "duration": "27.85949974747475",
+        "name": "smoothness.tough_animation_cases/web_animations_set_current_time_in_raf.html?N=0316"
+    },
+    {
+        "duration": "29.557070139240516",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous"
+    },
+    {
+        "duration": "29.654945040404037",
+        "name": "smoothness.tough_animation_cases/web_animations_simultaneous.html?N=0316"
+    },
+    {
+        "duration": "30.77703607594936",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining"
+    },
+    {
+        "duration": "31.121465161616154",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_chaining.html?N=0316"
+    },
+    {
+        "duration": "28.00174732911393",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations"
+    },
+    {
+        "duration": "28.105338787878797",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_infinite_iterations.html?N=0316"
+    },
+    {
+        "duration": "31.584008555555545",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering.html?N=0316"
+    },
+    {
+        "duration": "31.41249265822785",
+        "name": "smoothness.tough_animation_cases/web_animations_staggered_triggering_page"
+    },
+    {
+        "duration": "30.54752977777779",
+        "name": "smoothness.tough_canvas_cases/../../../chrome/test/data/perf/canvas_bench/many_images.html"
+    },
+    {
+        "duration": "19.080685909090903",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_15"
+    },
+    {
+        "duration": "45.170696090909104",
+        "name": "smoothness.tough_canvas_cases/bouncing_balls_shadow"
+    },
+    {
+        "duration": "30.730245025974018",
+        "name": "smoothness.tough_canvas_cases/bouncing_clipped_rectangles"
+    },
+    {
+        "duration": "20.949370025974027",
+        "name": "smoothness.tough_canvas_cases/bouncing_gradient_circles"
+    },
+    {
+        "duration": "18.35745779220779",
+        "name": "smoothness.tough_canvas_cases/bouncing_png_images"
+    },
+    {
+        "duration": "29.780429467532475",
+        "name": "smoothness.tough_canvas_cases/bouncing_svg_images"
+    },
+    {
+        "duration": "19.302947753246755",
+        "name": "smoothness.tough_canvas_cases/canvas_animation_no_clear"
+    },
+    {
+        "duration": "21.20933919480519",
+        "name": "smoothness.tough_canvas_cases/canvas_arcs"
+    },
+    {
+        "duration": "21.16278798701299",
+        "name": "smoothness.tough_canvas_cases/canvas_font_cycler"
+    },
+    {
+        "duration": "19.6703722987013",
+        "name": "smoothness.tough_canvas_cases/canvas_lines"
+    },
+    {
+        "duration": "20.101712670886073",
+        "name": "smoothness.tough_canvas_cases/chip_tune"
+    },
+    {
+        "duration": "19.503441860759494",
+        "name": "smoothness.tough_canvas_cases/crafty_mind"
+    },
+    {
+        "duration": "22.02179524358974",
+        "name": "smoothness.tough_canvas_cases/effect_games"
+    },
+    {
+        "duration": "20.63281672727273",
+        "name": "smoothness.tough_canvas_cases/fill_shapes"
+    },
+    {
+        "duration": "33.34810815189873",
+        "name": "smoothness.tough_canvas_cases/geo_apis"
+    },
+    {
+        "duration": "20.374479538461536",
+        "name": "smoothness.tough_canvas_cases/hakim"
+    },
+    {
+        "duration": "39.257565020202016",
+        "name": "smoothness.tough_canvas_cases/http://geoapis.appspot.com/agdnZW9hcGlzchMLEgtFeGFtcGxlQ29kZRjh1wIM"
+    },
+    {
+        "duration": "20.52611616161617",
+        "name": "smoothness.tough_canvas_cases/http://hakim.se/experiments/html5/magnetic/02/"
+    },
+    {
+        "duration": "21.294099898989895",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/TweetMap/Default.html"
+    },
+    {
+        "duration": "39.82182797979799",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/VideoCity/Default.html"
+    },
+    {
+        "duration": "20.000473404040406",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Graphics/WorkerFountains/Default.html"
+    },
+    {
+        "duration": "24.320186040404046",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/AsteroidBelt/Default.html"
+    },
+    {
+        "duration": "22.61543681818182",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/FishIETank/Default.html"
+    },
+    {
+        "duration": "21.034462393939393",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/LetItSnow/"
+    },
+    {
+        "duration": "22.698438343434347",
+        "name": "smoothness.tough_canvas_cases/http://ie.microsoft.com/testdrive/Performance/SpeedReading/Default.html"
+    },
+    {
+        "duration": "25.157146090909087",
+        "name": "smoothness.tough_canvas_cases/http://jarrodoverson.com/static/demos/particleSystem/"
+    },
+    {
+        "duration": "20.715205414141412",
+        "name": "smoothness.tough_canvas_cases/http://mix10k.visitmix.com/Entry/Details/169"
+    },
+    {
+        "duration": "21.299530606060607",
+        "name": "smoothness.tough_canvas_cases/http://runway.countlessprojects.com/prototype/performance_test.html"
+    },
+    {
+        "duration": "19.389636050505047",
+        "name": "smoothness.tough_canvas_cases/http://spielzeugz.de/html5/liquid-particles.html"
+    },
+    {
+        "duration": "20.74405278787878",
+        "name": "smoothness.tough_canvas_cases/http://themaninblue.com/experiment/AnimationBenchmark/canvas/"
+    },
+    {
+        "duration": "20.300277686868696",
+        "name": "smoothness.tough_canvas_cases/http://www.chiptune.com/starfield/starfield.html"
+    },
+    {
+        "duration": "19.6746681919192",
+        "name": "smoothness.tough_canvas_cases/http://www.craftymind.com/factory/guimark2/HTML5ChartingTest.html"
+    },
+    {
+        "duration": "22.4397556060606",
+        "name": "smoothness.tough_canvas_cases/http://www.effectgames.com/demos/canvascycle/"
+    },
+    {
+        "duration": "22.59910464646464",
+        "name": "smoothness.tough_canvas_cases/http://www.kevs3d.co.uk/dev/canvask3d/k3d_test.html"
+    },
+    {
+        "duration": "23.25767676767677",
+        "name": "smoothness.tough_canvas_cases/http://www.megidish.net/awjs/"
+    },
+    {
+        "duration": "20.798426353535355",
+        "name": "smoothness.tough_canvas_cases/http://www.smashcat.org/av/canvas_test/"
+    },
+    {
+        "duration": "24.113697769230768",
+        "name": "smoothness.tough_canvas_cases/jarro_doverson"
+    },
+    {
+        "duration": "21.937401354430378",
+        "name": "smoothness.tough_canvas_cases/kevs_3d"
+    },
+    {
+        "duration": "20.702875556962027",
+        "name": "smoothness.tough_canvas_cases/man_in_blue"
+    },
+    {
+        "duration": "29.654976",
+        "name": "smoothness.tough_canvas_cases/many_images"
+    },
+    {
+        "duration": "22.569982594936707",
+        "name": "smoothness.tough_canvas_cases/megi_dish"
+    },
+    {
+        "duration": "24.377868220779227",
+        "name": "smoothness.tough_canvas_cases/microsoft_asteroid_belt"
+    },
+    {
+        "duration": "21.45255720253165",
+        "name": "smoothness.tough_canvas_cases/microsoft_fish_ie_tank"
+    },
+    {
+        "duration": "20.677777461538454",
+        "name": "smoothness.tough_canvas_cases/microsoft_snow"
+    },
+    {
+        "duration": "22.212061303797466",
+        "name": "smoothness.tough_canvas_cases/microsoft_speed_reading"
+    },
+    {
+        "duration": "21.289256948717938",
+        "name": "smoothness.tough_canvas_cases/microsoft_tweet_map"
+    },
+    {
+        "duration": "47.04659653846155",
+        "name": "smoothness.tough_canvas_cases/microsoft_video_city"
+    },
+    {
+        "duration": "19.930058653846157",
+        "name": "smoothness.tough_canvas_cases/microsoft_worker_fountains"
+    },
+    {
+        "duration": "20.64460326582279",
+        "name": "smoothness.tough_canvas_cases/mix_10k"
+    },
+    {
+        "duration": "20.603773831168823",
+        "name": "smoothness.tough_canvas_cases/put_get_image_data"
+    },
+    {
+        "duration": "20.202671531645564",
+        "name": "smoothness.tough_canvas_cases/runway"
+    },
+    {
+        "duration": "20.596650636363627",
+        "name": "smoothness.tough_canvas_cases/smash_cat"
+    },
+    {
+        "duration": "19.451934679487184",
+        "name": "smoothness.tough_canvas_cases/spielzeugz"
+    },
+    {
+        "duration": "22.607667402597404",
+        "name": "smoothness.tough_canvas_cases/stroke_shapes"
+    },
+    {
+        "duration": "20.187603919191915",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-animation-no-clear.html"
+    },
+    {
+        "duration": "21.1028815050505",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas-font-cycler.html"
+    },
+    {
+        "duration": "45.35835580808083",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=image_with_shadow&back=image"
+    },
+    {
+        "duration": "19.683793606060604",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html?ball=text&back=white&ball_count=15"
+    },
+    {
+        "duration": "5.06711E-4",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/canvas_toBlob.html"
+    },
+    {
+        "duration": "23.966289848484838",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_clipped_rectangles.html"
+    },
+    {
+        "duration": "20.852733171717162",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_gradient_circles.html"
+    },
+    {
+        "duration": "18.386774636363633",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_png_images.html"
+    },
+    {
+        "duration": "32.17657043434344",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/bouncing_svg_images.html"
+    },
+    {
+        "duration": "21.254412171717174",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_arcs.html"
+    },
+    {
+        "duration": "19.67092844444444",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/canvas_lines.html"
+    },
+    {
+        "duration": "20.435415080808088",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/fill_shapes.html"
+    },
+    {
+        "duration": "31.403039555555555",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/put_get_image_data.html"
+    },
+    {
+        "duration": "22.995322868686873",
+        "name": "smoothness.tough_canvas_cases/tough_canvas_cases/rendering_throughput/stroke_shapes.html"
+    },
+    {
+        "duration": "27.792222080808088",
+        "name": "smoothness.tough_filters_cases/Analog_Clock_SVG"
+    },
+    {
+        "duration": "28.821003898989897",
+        "name": "smoothness.tough_filters_cases/Filter_Terrain_SVG"
+    },
+    {
+        "duration": "32.777650414141405",
+        "name": "smoothness.tough_filters_cases/IE_PirateMark"
+    },
+    {
+        "duration": "46.94865966666667",
+        "name": "smoothness.tough_filters_cases/MotionMark_Focus"
+    },
+    {
+        "duration": "25.229982175000007",
+        "name": "smoothness.tough_filters_cases/analog_clock_svg"
+    },
+    {
+        "duration": "26.002865787500003",
+        "name": "smoothness.tough_filters_cases/filter_terrain_svg"
+    },
+    {
+        "duration": "30.60252652499999",
+        "name": "smoothness.tough_filters_cases/ie_pirate_mark"
+    },
+    {
+        "duration": "39.120848225",
+        "name": "smoothness.tough_filters_cases/motion_mark_focus"
+    },
+    {
+        "duration": "27.795290030303025",
+        "name": "smoothness.tough_image_decode_cases/cats_unscaled"
+    },
+    {
+        "duration": "15.419358946969696",
+        "name": "smoothness.tough_image_decode_cases/cats_viewport_width"
+    },
+    {
+        "duration": "27.758225555555562",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-unscaled.html"
+    },
+    {
+        "duration": "15.4114132020202",
+        "name": "smoothness.tough_image_decode_cases/http://localhost:9000/cats-viewport-width.html"
+    },
+    {
+        "duration": "44.263682646464645",
+        "name": "smoothness.tough_path_rendering_cases/GUIMark_Vector_Chart_Test"
+    },
+    {
+        "duration": "38.494215868686865",
+        "name": "smoothness.tough_path_rendering_cases/IE_Chalkboard"
+    },
+    {
+        "duration": "28.581301080808082",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Fill_Shapes"
+    },
+    {
+        "duration": "28.798777373737394",
+        "name": "smoothness.tough_path_rendering_cases/MotionMark_Canvas_Stroke_Shapes"
+    },
+    {
+        "duration": "40.926306337499994",
+        "name": "smoothness.tough_path_rendering_cases/guimark_vector_chart"
+    },
+    {
+        "duration": "36.661938037499986",
+        "name": "smoothness.tough_path_rendering_cases/ie_chalkboard"
+    },
+    {
+        "duration": "26.936737400000005",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_fill_shapes"
+    },
+    {
+        "duration": "27.151556375000002",
+        "name": "smoothness.tough_path_rendering_cases/motion_mark_canvas_stroke_shapes"
+    },
+    {
+        "duration": "30.800633202020204",
+        "name": "smoothness.tough_pinch_zoom_cases/Blogger"
+    },
+    {
+        "duration": "35.77718787878788",
+        "name": "smoothness.tough_pinch_zoom_cases/ESPN"
+    },
+    {
+        "duration": "26.733205363636362",
+        "name": "smoothness.tough_pinch_zoom_cases/Facebook"
+    },
+    {
+        "duration": "21.84861522222223",
+        "name": "smoothness.tough_pinch_zoom_cases/LinkedIn"
+    },
+    {
+        "duration": "26.2707691919192",
+        "name": "smoothness.tough_pinch_zoom_cases/Twitter"
+    },
+    {
+        "duration": "33.754365020202016",
+        "name": "smoothness.tough_pinch_zoom_cases/Weather.com"
+    },
+    {
+        "duration": "22.544678183673472",
+        "name": "smoothness.tough_pinch_zoom_cases/amazon_pinch"
+    },
+    {
+        "duration": "30.143703244897964",
+        "name": "smoothness.tough_pinch_zoom_cases/blogspot_pinch"
+    },
+    {
+        "duration": "25.85749467346939",
+        "name": "smoothness.tough_pinch_zoom_cases/booking_pinch"
+    },
+    {
+        "duration": "33.79667585416666",
+        "name": "smoothness.tough_pinch_zoom_cases/cnn_pinch"
+    },
+    {
+        "duration": "31.572076816326522",
+        "name": "smoothness.tough_pinch_zoom_cases/ebay_pinch"
+    },
+    {
+        "duration": "37.94760051020408",
+        "name": "smoothness.tough_pinch_zoom_cases/espn_pinch"
+    },
+    {
+        "duration": "28.08947820408163",
+        "name": "smoothness.tough_pinch_zoom_cases/facebook_pinch"
+    },
+    {
+        "duration": "53.52299646938776",
+        "name": "smoothness.tough_pinch_zoom_cases/gmail_pinch"
+    },
+    {
+        "duration": "25.939297020408166",
+        "name": "smoothness.tough_pinch_zoom_cases/google_calendar_pinch"
+    },
+    {
+        "duration": "26.891234734693878",
+        "name": "smoothness.tough_pinch_zoom_cases/google_image_pinch"
+    },
+    {
+        "duration": "39.3597532244898",
+        "name": "smoothness.tough_pinch_zoom_cases/google_search_pinch"
+    },
+    {
+        "duration": "25.26153025252526",
+        "name": "smoothness.tough_pinch_zoom_cases/http://booking.com"
+    },
+    {
+        "duration": "32.91005675757576",
+        "name": "smoothness.tough_pinch_zoom_cases/http://games.yahoo.com"
+    },
+    {
+        "duration": "32.16623657575758",
+        "name": "smoothness.tough_pinch_zoom_cases/http://news.yahoo.com"
+    },
+    {
+        "duration": "38.012918141414154",
+        "name": "smoothness.tough_pinch_zoom_cases/http://sports.yahoo.com/"
+    },
+    {
+        "duration": "22.356300727272735",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.amazon.com"
+    },
+    {
+        "duration": "31.83677420202021",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.cnn.com"
+    },
+    {
+        "duration": "31.15818551515153",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.ebay.com"
+    },
+    {
+        "duration": "29.57042976767677",
+        "name": "smoothness.tough_pinch_zoom_cases/http://www.youtube.com"
+    },
+    {
+        "duration": "41.39919131313131",
+        "name": "smoothness.tough_pinch_zoom_cases/https://mail.google.com/mail/"
+    },
+    {
+        "duration": "38.07974644444444",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "26.21586877777778",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "27.164185626262615",
+        "name": "smoothness.tough_pinch_zoom_cases/https://www.google.com/search?q=cats&tbm=isch"
+    },
+    {
+        "duration": "21.756811081632655",
+        "name": "smoothness.tough_pinch_zoom_cases/linkedin_pinch"
+    },
+    {
+        "duration": "27.52438779166666",
+        "name": "smoothness.tough_pinch_zoom_cases/twitter_pinch"
+    },
+    {
+        "duration": "39.840795816326526",
+        "name": "smoothness.tough_pinch_zoom_cases/weather_pinch"
+    },
+    {
+        "duration": "33.791566857142854",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_games_pinch"
+    },
+    {
+        "duration": "33.86926775510203",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_news_pinch"
+    },
+    {
+        "duration": "42.70190397959184",
+        "name": "smoothness.tough_pinch_zoom_cases/yahoo_sports_pinch"
+    },
+    {
+        "duration": "33.930994489795914",
+        "name": "smoothness.tough_pinch_zoom_cases/youtube_pinch"
+    },
+    {
+        "duration": "24.13108227272728",
+        "name": "smoothness.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "23.94836456565657",
+        "name": "smoothness.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "23.862978989898988",
+        "name": "smoothness.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "23.742746070707067",
+        "name": "smoothness.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "23.407207363636363",
+        "name": "smoothness.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "23.426364505050497",
+        "name": "smoothness.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "23.521491949494948",
+        "name": "smoothness.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "22.432938313131313",
+        "name": "smoothness.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "20.96914249494949",
+        "name": "smoothness.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "19.93218999999999",
+        "name": "smoothness.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "35.07560601010102",
+        "name": "smoothness.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "23.06239716161617",
+        "name": "smoothness.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.35666229292929",
+        "name": "smoothness.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.40207157575757",
+        "name": "smoothness.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "22.09419401010101",
+        "name": "smoothness.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.878260545454538",
+        "name": "smoothness.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.823401494949493",
+        "name": "smoothness.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.98283712121212",
+        "name": "smoothness.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.7684117070707",
+        "name": "smoothness.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.984960101010103",
+        "name": "smoothness.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "24.856765303030322",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "24.898161424242435",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "24.734197606060604",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "24.76906805050504",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "24.89300415151514",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "24.713755777777774",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "24.56758952525253",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "24.398333050505055",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "23.001992525252525",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "22.03596396969696",
+        "name": "smoothness.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.491442232323227",
+        "name": "smoothness.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "21.42128835353535",
+        "name": "smoothness.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "21.47238290909091",
+        "name": "smoothness.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "21.641690636363645",
+        "name": "smoothness.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.603251090909094",
+        "name": "smoothness.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.471453616161618",
+        "name": "smoothness.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.45357283838384",
+        "name": "smoothness.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "20.922658777777777",
+        "name": "smoothness.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.419393868686875",
+        "name": "smoothness.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.60041250505051",
+        "name": "smoothness.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "37.1593949852941",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation"
+    },
+    {
+        "duration": "37.316043010101",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation.html"
+    },
+    {
+        "duration": "27.141407441176465",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient"
+    },
+    {
+        "duration": "27.130495919191926",
+        "name": "smoothness.tough_texture_upload_cases/background_color_animation_with_gradient.html"
+    },
+    {
+        "duration": "9.790934015384617E-4",
+        "name": "smoothness.tough_texture_upload_cases/extra_large_texture_uploads.html"
+    },
+    {
+        "duration": "27.191593264705887",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads"
+    },
+    {
+        "duration": "27.141429262626275",
+        "name": "smoothness.tough_texture_upload_cases/large_texture_uploads.html"
+    },
+    {
+        "duration": "25.56651914705883",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads"
+    },
+    {
+        "duration": "25.83860575757576",
+        "name": "smoothness.tough_texture_upload_cases/medium_texture_uploads.html"
+    },
+    {
+        "duration": "25.98651282352941",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads"
+    },
+    {
+        "duration": "26.291956888888887",
+        "name": "smoothness.tough_texture_upload_cases/small_texture_uploads.html"
+    },
+    {
+        "duration": "6.2599812",
+        "name": "smoothness.tough_webgl_cases/animometer_webgl"
+    },
+    {
+        "duration": "6.410708411111111",
+        "name": "smoothness.tough_webgl_cases/aquarium"
+    },
+    {
+        "duration": "6.408661697979797",
+        "name": "smoothness.tough_webgl_cases/aquarium_20k"
+    },
+    {
+        "duration": "6.296394094444443",
+        "name": "smoothness.tough_webgl_cases/blob"
+    },
+    {
+        "duration": "6.29071058611111",
+        "name": "smoothness.tough_webgl_cases/dynamic_cube_map"
+    },
+    {
+        "duration": "6.284061972222222",
+        "name": "smoothness.tough_webgl_cases/earth"
+    },
+    {
+        "duration": "6.491773628282826",
+        "name": "smoothness.tough_webgl_cases/http://kenrussell.github.io/webgl-animometer/Animometer/tests/3d/webgl.html"
+    },
+    {
+        "duration": "11.855262998989897",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/aquarium/aquarium.html"
+    },
+    {
+        "duration": "6.4514991383838405",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/blob/blob.html"
+    },
+    {
+        "duration": "6.5239576030303",
+        "name": "smoothness.tough_webgl_cases/http://webglsamples.org/dynamic-cubemap/dynamic-cubemap.html"
+    },
+    {
+        "duration": "22.426197949494945",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/nvidia-vertex-buffer-object/index.html"
+    },
+    {
+        "duration": "11.814221277777781",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/particles/index.html"
+    },
+    {
+        "duration": "12.222427406060604",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/google/san-angeles/index.html"
+    },
+    {
+        "duration": "13.075231064646461",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/Earth.html"
+    },
+    {
+        "duration": "11.905891209090905",
+        "name": "smoothness.tough_webgl_cases/http://www.khronos.org/registry/webgl/sdk/demos/webkit/ManyPlanetsDeep.html"
+    },
+    {
+        "duration": "6.211767508333333",
+        "name": "smoothness.tough_webgl_cases/many_planets_deep"
+    },
+    {
+        "duration": "19.345400416666667",
+        "name": "smoothness.tough_webgl_cases/nvidia_vertex_buffer_object"
+    },
+    {
+        "duration": "6.965218008333334",
+        "name": "smoothness.tough_webgl_cases/particles"
+    },
+    {
+        "duration": "7.575802086111112",
+        "name": "smoothness.tough_webgl_cases/san_angeles"
+    },
+    {
+        "duration": "147.17874989898988",
+        "name": "speedometer-future/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "141.51412323232327",
+        "name": "speedometer/http://browserbench.org/Speedometer/"
+    },
+    {
+        "duration": "259.4743301010102",
+        "name": "speedometer2-future/Speedometer2"
+    },
+    {
+        "duration": "254.07946151515154",
+        "name": "speedometer2/Speedometer2"
+    },
+    {
+        "duration": "35.292414670707075",
+        "name": "start_with_url.cold.startup_pages/about:blank"
+    },
+    {
+        "duration": "35.710181262626264",
+        "name": "start_with_url.cold.startup_pages/http://bbc.co.uk"
+    },
+    {
+        "duration": "32.594106345270895",
+        "name": "start_with_url.warm.startup_pages/about:blank"
+    },
+    {
+        "duration": "34.49074906703397",
+        "name": "start_with_url.warm.startup_pages/http://bbc.co.uk"
+    },
+    {
+        "duration": "30.523201151515153",
+        "name": "system_health.common_mobile/background:media:imgur"
+    },
+    {
+        "duration": "4.997412306666666E-4",
+        "name": "system_health.common_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "32.607920555555566",
+        "name": "system_health.common_mobile/background:search:google"
+    },
+    {
+        "duration": "45.91138055555555",
+        "name": "system_health.common_mobile/background:social:facebook"
+    },
+    {
+        "duration": "54.127892333333364",
+        "name": "system_health.common_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "129.10833219191923",
+        "name": "system_health.common_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "44.26154185858585",
+        "name": "system_health.common_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "124.92000149494949",
+        "name": "system_health.common_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "69.29237593939395",
+        "name": "system_health.common_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "104.34221198989903",
+        "name": "system_health.common_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "165.7748712121212",
+        "name": "system_health.common_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "263.25035606060607",
+        "name": "system_health.common_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "91.07696409090904",
+        "name": "system_health.common_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "2.5241191615384617E-4",
+        "name": "system_health.common_mobile/browse:news:globo"
+    },
+    {
+        "duration": "73.3268954646465",
+        "name": "system_health.common_mobile/browse:news:qq"
+    },
+    {
+        "duration": "86.70862684848481",
+        "name": "system_health.common_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "4.328214192307692E-4",
+        "name": "system_health.common_mobile/browse:news:toi"
+    },
+    {
+        "duration": "73.85789543434342",
+        "name": "system_health.common_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "118.68553493939392",
+        "name": "system_health.common_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "122.05129403030305",
+        "name": "system_health.common_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "4.1521512538461537E-4",
+        "name": "system_health.common_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "57.02305162626266",
+        "name": "system_health.common_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "100.90330792929294",
+        "name": "system_health.common_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "167.08639454545457",
+        "name": "system_health.common_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "128.90585100000004",
+        "name": "system_health.common_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "136.0685866666667",
+        "name": "system_health.common_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "9.252108084615384E-4",
+        "name": "system_health.common_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "73.87800973737373",
+        "name": "system_health.common_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "100.64880898989897",
+        "name": "system_health.common_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "69.43588652525254",
+        "name": "system_health.common_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "25.36347053535353",
+        "name": "system_health.common_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "35.65053584848485",
+        "name": "system_health.common_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "26.172971959595962",
+        "name": "system_health.common_mobile/load:games:lazors"
+    },
+    {
+        "duration": "4.368928761538461E-4",
+        "name": "system_health.common_mobile/load:games:spychase"
+    },
+    {
+        "duration": "35.18797272727273",
+        "name": "system_health.common_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "30.601108666666658",
+        "name": "system_health.common_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "30.22379213131314",
+        "name": "system_health.common_mobile/load:media:google_images"
+    },
+    {
+        "duration": "30.756693828282838",
+        "name": "system_health.common_mobile/load:media:imgur"
+    },
+    {
+        "duration": "29.093388303030306",
+        "name": "system_health.common_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "29.98097957575759",
+        "name": "system_health.common_mobile/load:media:youtube"
+    },
+    {
+        "duration": "66.80765163636366",
+        "name": "system_health.common_mobile/load:news:cnn"
+    },
+    {
+        "duration": "56.37527630303031",
+        "name": "system_health.common_mobile/load:news:irctc"
+    },
+    {
+        "duration": "39.18603206060606",
+        "name": "system_health.common_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "29.06739854545455",
+        "name": "system_health.common_mobile/load:news:qq"
+    },
+    {
+        "duration": "31.76050677777777",
+        "name": "system_health.common_mobile/load:news:reddit"
+    },
+    {
+        "duration": "35.09394305050506",
+        "name": "system_health.common_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "31.739422747474748",
+        "name": "system_health.common_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "30.05324744444445",
+        "name": "system_health.common_mobile/load:search:baidu"
+    },
+    {
+        "duration": "30.206667050505057",
+        "name": "system_health.common_mobile/load:search:ebay"
+    },
+    {
+        "duration": "27.70260753535353",
+        "name": "system_health.common_mobile/load:search:google"
+    },
+    {
+        "duration": "29.483762777777773",
+        "name": "system_health.common_mobile/load:search:taobao"
+    },
+    {
+        "duration": "27.373684999999995",
+        "name": "system_health.common_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "28.899427909090907",
+        "name": "system_health.common_mobile/load:search:yandex"
+    },
+    {
+        "duration": "28.57572242424243",
+        "name": "system_health.common_mobile/load:social:twitter"
+    },
+    {
+        "duration": "28.179340717171712",
+        "name": "system_health.common_mobile/load:tools:docs"
+    },
+    {
+        "duration": "42.73104664646467",
+        "name": "system_health.common_mobile/load:tools:drive"
+    },
+    {
+        "duration": "33.71655949494951",
+        "name": "system_health.common_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "4.542057315384615E-4",
+        "name": "system_health.common_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "30.491091030303025",
+        "name": "system_health.common_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "45.300949686868705",
+        "name": "system_health.common_mobile/load:tools:weather"
+    },
+    {
+        "duration": "147.23335838383838",
+        "name": "system_health.common_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "146.1766026262626",
+        "name": "system_health.common_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "31.621897760942765",
+        "name": "system_health.memory_mobile/background:media:imgur"
+    },
+    {
+        "duration": "53.86591886531987",
+        "name": "system_health.memory_mobile/background:news:nytimes"
+    },
+    {
+        "duration": "33.145711148148145",
+        "name": "system_health.memory_mobile/background:search:google"
+    },
+    {
+        "duration": "38.12781888215488",
+        "name": "system_health.memory_mobile/background:social:facebook"
+    },
+    {
+        "duration": "45.3187475016835",
+        "name": "system_health.memory_mobile/background:tools:gmail"
+    },
+    {
+        "duration": "114.03136267340074",
+        "name": "system_health.memory_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "44.309386181818184",
+        "name": "system_health.memory_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "102.94231690235692",
+        "name": "system_health.memory_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "56.407467835016824",
+        "name": "system_health.memory_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "82.88522897979794",
+        "name": "system_health.memory_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "105.1720869057239",
+        "name": "system_health.memory_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "180.6079983838383",
+        "name": "system_health.memory_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "69.59971872390571",
+        "name": "system_health.memory_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "3.2931234958333326E-4",
+        "name": "system_health.memory_mobile/browse:news:globo"
+    },
+    {
+        "duration": "61.27877745791247",
+        "name": "system_health.memory_mobile/browse:news:qq"
+    },
+    {
+        "duration": "73.69309203030303",
+        "name": "system_health.memory_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "4.845129126388888E-4",
+        "name": "system_health.memory_mobile/browse:news:toi"
+    },
+    {
+        "duration": "60.8097763535354",
+        "name": "system_health.memory_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "82.40707234680136",
+        "name": "system_health.memory_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "89.57884268686865",
+        "name": "system_health.memory_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "5.035036133333332E-4",
+        "name": "system_health.memory_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "49.062225909090934",
+        "name": "system_health.memory_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "80.10532982828282",
+        "name": "system_health.memory_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "102.98890005050504",
+        "name": "system_health.memory_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "96.68784291582486",
+        "name": "system_health.memory_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "98.06801944444445",
+        "name": "system_health.memory_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "110.20222482491579",
+        "name": "system_health.memory_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "62.92624894276095",
+        "name": "system_health.memory_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "77.72081903367",
+        "name": "system_health.memory_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "61.98962920538719",
+        "name": "system_health.memory_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "28.2482947003367",
+        "name": "system_health.memory_mobile/load:chrome:blank"
+    },
+    {
+        "duration": "31.84797350168351",
+        "name": "system_health.memory_mobile/load:games:bubbles"
+    },
+    {
+        "duration": "29.11291212457914",
+        "name": "system_health.memory_mobile/load:games:lazors"
+    },
+    {
+        "duration": "38.73746326936027",
+        "name": "system_health.memory_mobile/load:games:spychase"
+    },
+    {
+        "duration": "36.78424268013467",
+        "name": "system_health.memory_mobile/load:media:dailymotion"
+    },
+    {
+        "duration": "32.57984762626263",
+        "name": "system_health.memory_mobile/load:media:facebook_photos"
+    },
+    {
+        "duration": "32.48646622558922",
+        "name": "system_health.memory_mobile/load:media:google_images"
+    },
+    {
+        "duration": "32.403381171717164",
+        "name": "system_health.memory_mobile/load:media:imgur"
+    },
+    {
+        "duration": "31.170994821548835",
+        "name": "system_health.memory_mobile/load:media:soundcloud"
+    },
+    {
+        "duration": "32.34003139730641",
+        "name": "system_health.memory_mobile/load:media:youtube"
+    },
+    {
+        "duration": "60.88662639057237",
+        "name": "system_health.memory_mobile/load:news:cnn"
+    },
+    {
+        "duration": "44.873896622895614",
+        "name": "system_health.memory_mobile/load:news:irctc"
+    },
+    {
+        "duration": "39.01714937373736",
+        "name": "system_health.memory_mobile/load:news:nytimes"
+    },
+    {
+        "duration": "30.845649148148148",
+        "name": "system_health.memory_mobile/load:news:qq"
+    },
+    {
+        "duration": "34.32440148148148",
+        "name": "system_health.memory_mobile/load:news:reddit"
+    },
+    {
+        "duration": "35.14253416835017",
+        "name": "system_health.memory_mobile/load:news:washingtonpost"
+    },
+    {
+        "duration": "34.09335648484849",
+        "name": "system_health.memory_mobile/load:news:wikipedia"
+    },
+    {
+        "duration": "31.72862553535353",
+        "name": "system_health.memory_mobile/load:search:baidu"
+    },
+    {
+        "duration": "31.046157959595956",
+        "name": "system_health.memory_mobile/load:search:ebay"
+    },
+    {
+        "duration": "30.443287969696957",
+        "name": "system_health.memory_mobile/load:search:google"
+    },
+    {
+        "duration": "31.4326678047138",
+        "name": "system_health.memory_mobile/load:search:taobao"
+    },
+    {
+        "duration": "30.222465400673393",
+        "name": "system_health.memory_mobile/load:search:yahoo"
+    },
+    {
+        "duration": "31.155886313131305",
+        "name": "system_health.memory_mobile/load:search:yandex"
+    },
+    {
+        "duration": "30.877675053872064",
+        "name": "system_health.memory_mobile/load:social:twitter"
+    },
+    {
+        "duration": "30.76361068013468",
+        "name": "system_health.memory_mobile/load:tools:docs"
+    },
+    {
+        "duration": "39.80516326262627",
+        "name": "system_health.memory_mobile/load:tools:drive"
+    },
+    {
+        "duration": "34.836199090909105",
+        "name": "system_health.memory_mobile/load:tools:dropbox"
+    },
+    {
+        "duration": "4.7509537736111114E-4",
+        "name": "system_health.memory_mobile/load:tools:gmail"
+    },
+    {
+        "duration": "32.650360363636345",
+        "name": "system_health.memory_mobile/load:tools:stackoverflow"
+    },
+    {
+        "duration": "42.68365425589225",
+        "name": "system_health.memory_mobile/load:tools:weather"
+    },
+    {
+        "duration": "0.0014847914416666668",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-background"
+    },
+    {
+        "duration": "221.29104303030297",
+        "name": "system_health.memory_mobile/long_running:tools:gmail-foreground"
+    },
+    {
+        "duration": "42.16013333333334",
+        "name": "thread_times.key_idle_power_cases/animated-gif.html"
+    },
+    {
+        "duration": "46.59906654545455",
+        "name": "thread_times.key_idle_power_cases/blank.html"
+    },
+    {
+        "duration": "43.07981933333334",
+        "name": "thread_times.key_idle_power_cases/css-animation.html"
+    },
+    {
+        "duration": "44.422924333333334",
+        "name": "thread_times.key_idle_power_cases/idle_power_animated_gif"
+    },
+    {
+        "duration": "47.25709283333333",
+        "name": "thread_times.key_idle_power_cases/idle_power_blank"
+    },
+    {
+        "duration": "46.92146866666667",
+        "name": "thread_times.key_idle_power_cases/idle_power_css_animation"
+    },
+    {
+        "duration": "50.05928216666666",
+        "name": "thread_times.key_idle_power_cases/idle_power_request_animation_frame"
+    },
+    {
+        "duration": "120.83141666666667",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timeout_long"
+    },
+    {
+        "duration": "49.886341666666674",
+        "name": "thread_times.key_idle_power_cases/idle_power_set_timetout"
+    },
+    {
+        "duration": "43.01773242424242",
+        "name": "thread_times.key_idle_power_cases/request-animation-frame.html"
+    },
+    {
+        "duration": "43.111070909090905",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html"
+    },
+    {
+        "duration": "113.29154936363632",
+        "name": "thread_times.key_idle_power_cases/set-timeout.html (Long Idle)"
+    },
+    {
+        "duration": "50.290036898989904",
+        "name": "thread_times.key_mobile_sites_smooth/boingboing"
+    },
+    {
+        "duration": "49.124489767676764",
+        "name": "thread_times.key_mobile_sites_smooth/cuteoverload"
+    },
+    {
+        "duration": "44.61949068686869",
+        "name": "thread_times.key_mobile_sites_smooth/nytimes"
+    },
+    {
+        "duration": "34.96725150505053",
+        "name": "thread_times.key_mobile_sites_smooth/reddit"
+    },
+    {
+        "duration": "37.14393296969697",
+        "name": "thread_times.key_mobile_sites_smooth/slashdot"
+    },
+    {
+        "duration": "42.227324333333335",
+        "name": "thread_times.key_noop_cases/no_op_raf"
+    },
+    {
+        "duration": "38.80171424242424",
+        "name": "thread_times.key_noop_cases/no_op_raf.html"
+    },
+    {
+        "duration": "23.259573833333334",
+        "name": "thread_times.key_noop_cases/no_op_scroll"
+    },
+    {
+        "duration": "21.498834838383843",
+        "name": "thread_times.key_noop_cases/no_op_scroll.html"
+    },
+    {
+        "duration": "21.956787666666667",
+        "name": "thread_times.key_noop_cases/no_op_settimeout"
+    },
+    {
+        "duration": "19.948883484848484",
+        "name": "thread_times.key_noop_cases/no_op_settimeout.html"
+    },
+    {
+        "duration": "28.211118",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler"
+    },
+    {
+        "duration": "23.8483464949495",
+        "name": "thread_times.key_noop_cases/no_op_touch_handler.html"
+    },
+    {
+        "duration": "24.421865956521735",
+        "name": "thread_times.key_silk_cases/card_expansion"
+    },
+    {
+        "duration": "27.36437055072464",
+        "name": "thread_times.key_silk_cases/card_expansion_animated"
+    },
+    {
+        "duration": "24.397751507246383",
+        "name": "thread_times.key_silk_cases/card_expansion_images_text"
+    },
+    {
+        "duration": "21.406990463768114",
+        "name": "thread_times.key_silk_cases/card_flying"
+    },
+    {
+        "duration": "23.345918478260874",
+        "name": "thread_times.key_silk_cases/coordinated_animation"
+    },
+    {
+        "duration": "21.541019768115934",
+        "name": "thread_times.key_silk_cases/font_wipe"
+    },
+    {
+        "duration": "21.290426737373735",
+        "name": "thread_times.key_silk_cases/font_wipe.html"
+    },
+    {
+        "duration": "23.73285276811594",
+        "name": "thread_times.key_silk_cases/google_news_ios"
+    },
+    {
+        "duration": "21.935335173913046",
+        "name": "thread_times.key_silk_cases/gws_boogie_expansion"
+    },
+    {
+        "duration": "22.01072876811594",
+        "name": "thread_times.key_silk_cases/gws_google_expansion"
+    },
+    {
+        "duration": "24.54586379710145",
+        "name": "thread_times.key_silk_cases/horizontal_vertical_expansion"
+    },
+    {
+        "duration": "41.376064939393935",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/list-recycle-transform.html"
+    },
+    {
+        "duration": "18.72534972727272",
+        "name": "thread_times.key_silk_cases/http://groupcloned.com/test/plain/sticky-using-webkit-backface-visibility.html"
+    },
+    {
+        "duration": "17.97790021212121",
+        "name": "thread_times.key_silk_cases/http://jsbin.com/UVIgUTa/38/quiet"
+    },
+    {
+        "duration": "23.733045646464653",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/15/show/"
+    },
+    {
+        "duration": "20.812986242424238",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/3yDKh/16/show/"
+    },
+    {
+        "duration": "23.623121505050506",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/R8DX9/4/show/"
+    },
+    {
+        "duration": "23.966389181818187",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/TLXLu/3/show/"
+    },
+    {
+        "duration": "23.94460159595961",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/bNp2h/3/show/"
+    },
+    {
+        "duration": "27.063611121212116",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/cKB9D/7/show/"
+    },
+    {
+        "duration": "26.43245223232324",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/jx5De/14/show/"
+    },
+    {
+        "duration": "25.013207252525245",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/rF9Gh/7/show/"
+    },
+    {
+        "duration": "22.9556207070707",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/ugkd4/10/show/"
+    },
+    {
+        "duration": "26.461238545454552",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/vBQHH/11/show/"
+    },
+    {
+        "duration": "23.032574070707067",
+        "name": "thread_times.key_silk_cases/http://jsfiddle.net/xLuvC/1/show/"
+    },
+    {
+        "duration": "23.36859727272727",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?scroll"
+    },
+    {
+        "duration": "19.35272999999999",
+        "name": "thread_times.key_silk_cases/http://mobile-news.sandbox.google.com/news/pt0?swipe"
+    },
+    {
+        "duration": "2.4189949E-4",
+        "name": "thread_times.key_silk_cases/http://plus.google.com/app/basic/stream"
+    },
+    {
+        "duration": "3.11303138E-4",
+        "name": "thread_times.key_silk_cases/http://s.codepen.io/befamous/fullpage/pFsqb?scroll"
+    },
+    {
+        "duration": "30.56261308080808",
+        "name": "thread_times.key_silk_cases/http://wiltzius.github.io/shape-shifter/"
+    },
+    {
+        "duration": "21.76300625252525",
+        "name": "thread_times.key_silk_cases/http://www.google.com/#q=google"
+    },
+    {
+        "duration": "2.3183822500000002E-4",
+        "name": "thread_times.key_silk_cases/https://polymer-topeka.appspot.com/"
+    },
+    {
+        "duration": "21.609123797979805",
+        "name": "thread_times.key_silk_cases/https://www.google.com/search?hl=en&q=define%3Aboogie"
+    },
+    {
+        "duration": "2.48122212E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?slide_drawer"
+    },
+    {
+        "duration": "38.615341868686876",
+        "name": "thread_times.key_silk_cases/inbox_app.html?stress_hidey_bars"
+    },
+    {
+        "duration": "2.55727767E-4",
+        "name": "thread_times.key_silk_cases/inbox_app.html?swipe_to_dismiss"
+    },
+    {
+        "duration": "25.30313797979799",
+        "name": "thread_times.key_silk_cases/inbox_app.html?toggle_drawer"
+    },
+    {
+        "duration": "28.457873420289854",
+        "name": "thread_times.key_silk_cases/infinite_scrolling"
+    },
+    {
+        "duration": "27.93727089898989",
+        "name": "thread_times.key_silk_cases/infinite_scrolling.html"
+    },
+    {
+        "duration": "21.899681275362315",
+        "name": "thread_times.key_silk_cases/list_animation_simple"
+    },
+    {
+        "duration": "20.86351948484848",
+        "name": "thread_times.key_silk_cases/list_animation_simple.html"
+    },
+    {
+        "duration": "41.15137926086957",
+        "name": "thread_times.key_silk_cases/list_recycle_transform"
+    },
+    {
+        "duration": "23.729736434782605",
+        "name": "thread_times.key_silk_cases/mask_transition_animation"
+    },
+    {
+        "duration": "1.306295405E-4",
+        "name": "thread_times.key_silk_cases/masonry.html"
+    },
+    {
+        "duration": "19.58670218840579",
+        "name": "thread_times.key_silk_cases/mobile_news_sandbox"
+    },
+    {
+        "duration": "27.066041333333335",
+        "name": "thread_times.key_silk_cases/parallax_effect"
+    },
+    {
+        "duration": "18.484588449275364",
+        "name": "thread_times.key_silk_cases/physical_simulation"
+    },
+    {
+        "duration": "26.14427753535353",
+        "name": "thread_times.key_silk_cases/pushState.html"
+    },
+    {
+        "duration": "38.0912746521739",
+        "name": "thread_times.key_silk_cases/silk_finance"
+    },
+    {
+        "duration": "36.946411000000005",
+        "name": "thread_times.key_silk_cases/silk_finance.html"
+    },
+    {
+        "duration": "19.065163376811597",
+        "name": "thread_times.key_silk_cases/sticky_using_webkit"
+    },
+    {
+        "duration": "39.87611542028985",
+        "name": "thread_times.key_silk_cases/stress_hidey_bars"
+    },
+    {
+        "duration": "30.903316130434778",
+        "name": "thread_times.key_silk_cases/svg_icon_raster"
+    },
+    {
+        "duration": "26.23442576811596",
+        "name": "thread_times.key_silk_cases/swipe_to_dismiss"
+    },
+    {
+        "duration": "25.91719691304348",
+        "name": "thread_times.key_silk_cases/toggle_drawer"
+    },
+    {
+        "duration": "26.807859072463774",
+        "name": "thread_times.key_silk_cases/update_history_state"
+    },
+    {
+        "duration": "27.736277391304355",
+        "name": "thread_times.key_silk_cases/vertical_expansion"
+    },
+    {
+        "duration": "24.420588362318835",
+        "name": "thread_times.key_silk_cases/zoom_in_animation"
+    },
+    {
+        "duration": "59.80054148101265",
+        "name": "thread_times.simple_mobile_sites/ebay_scroll"
+    },
+    {
+        "duration": "48.66278391139242",
+        "name": "thread_times.simple_mobile_sites/flickr_scroll"
+    },
+    {
+        "duration": "35.98266257575758",
+        "name": "thread_times.simple_mobile_sites/http://m.nytimes.com/"
+    },
+    {
+        "duration": "60.96098475757576",
+        "name": "thread_times.simple_mobile_sites/http://www.ebay.co.uk/"
+    },
+    {
+        "duration": "41.11444178787878",
+        "name": "thread_times.simple_mobile_sites/http://www.nyc.gov"
+    },
+    {
+        "duration": "29.90269434758948",
+        "name": "thread_times.simple_mobile_sites/https://www.flickr.com/"
+    },
+    {
+        "duration": "40.64528583544303",
+        "name": "thread_times.simple_mobile_sites/nyc_gov_scroll"
+    },
+    {
+        "duration": "35.64036446835443",
+        "name": "thread_times.simple_mobile_sites/nytimes_scroll"
+    },
+    {
+        "duration": "42.812998",
+        "name": "thread_times.tough_compositor_cases/cc_poster_circle"
+    },
+    {
+        "duration": "35.325621999999996",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_200_layer_grid"
+    },
+    {
+        "duration": "46.378828666666664",
+        "name": "thread_times.tough_compositor_cases/cc_scroll_text_only"
+    },
+    {
+        "duration": "32.11457503030303",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/beqojupo/1/quiet?JS_FULL_SCREEN_INVALIDATION"
+    },
+    {
+        "duration": "29.700842424242417",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/covoqi/1/quiet?NEW_TILINGS"
+    },
+    {
+        "duration": "32.06771913131313",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/falefice/1/quiet?CC_POSTER_CIRCLE"
+    },
+    {
+        "duration": "34.47874830303031",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/giqafofe/1/quiet?JS_POSTER_CIRCLE"
+    },
+    {
+        "duration": "28.472643343434353",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/jevibahi/4/quiet?JS_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "40.55503087878788",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/pixavefe/1/quiet?CC_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "29.447922686868694",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/wixadinu/2/quiet?JS_SCROLL_TEXT_ONLY"
+    },
+    {
+        "duration": "28.275476929292918",
+        "name": "thread_times.tough_compositor_cases/http://jsbin.com/yakagevo/1/quiet?CC_SCROLL_200_LAYER_GRID"
+    },
+    {
+        "duration": "48.52476883333333",
+        "name": "thread_times.tough_compositor_cases/js_full_screen_invalidation"
+    },
+    {
+        "duration": "72.052666",
+        "name": "thread_times.tough_compositor_cases/js_poster_circle"
+    },
+    {
+        "duration": "35.808817999999995",
+        "name": "thread_times.tough_compositor_cases/js_scroll_200_layer_grid"
+    },
+    {
+        "duration": "37.49106",
+        "name": "thread_times.tough_compositor_cases/js_scroll_text_only"
+    },
+    {
+        "duration": "39.086663333333334",
+        "name": "thread_times.tough_compositor_cases/new_tilings"
+    },
+    {
+        "duration": "30.368903838383833",
+        "name": "thread_times.tough_scrolling_cases/canvas_05000_pixels_per_second"
+    },
+    {
+        "duration": "30.375324484848484",
+        "name": "thread_times.tough_scrolling_cases/canvas_10000_pixels_per_second"
+    },
+    {
+        "duration": "30.532537525252526",
+        "name": "thread_times.tough_scrolling_cases/canvas_15000_pixels_per_second"
+    },
+    {
+        "duration": "30.465323010101017",
+        "name": "thread_times.tough_scrolling_cases/canvas_20000_pixels_per_second"
+    },
+    {
+        "duration": "28.648318242424242",
+        "name": "thread_times.tough_scrolling_cases/canvas_30000_pixels_per_second"
+    },
+    {
+        "duration": "28.35789631313131",
+        "name": "thread_times.tough_scrolling_cases/canvas_40000_pixels_per_second"
+    },
+    {
+        "duration": "28.141334070707085",
+        "name": "thread_times.tough_scrolling_cases/canvas_50000_pixels_per_second"
+    },
+    {
+        "duration": "26.767801050505053",
+        "name": "thread_times.tough_scrolling_cases/canvas_60000_pixels_per_second"
+    },
+    {
+        "duration": "24.504372909090915",
+        "name": "thread_times.tough_scrolling_cases/canvas_75000_pixels_per_second"
+    },
+    {
+        "duration": "22.86043765656566",
+        "name": "thread_times.tough_scrolling_cases/canvas_90000_pixels_per_second"
+    },
+    {
+        "duration": "37.006554868686855",
+        "name": "thread_times.tough_scrolling_cases/text_05000_pixels_per_second"
+    },
+    {
+        "duration": "25.80426756565657",
+        "name": "thread_times.tough_scrolling_cases/text_10000_pixels_per_second"
+    },
+    {
+        "duration": "25.65145073737374",
+        "name": "thread_times.tough_scrolling_cases/text_15000_pixels_per_second"
+    },
+    {
+        "duration": "25.85091108080809",
+        "name": "thread_times.tough_scrolling_cases/text_20000_pixels_per_second"
+    },
+    {
+        "duration": "25.127454535353536",
+        "name": "thread_times.tough_scrolling_cases/text_30000_pixels_per_second"
+    },
+    {
+        "duration": "24.84778224242424",
+        "name": "thread_times.tough_scrolling_cases/text_40000_pixels_per_second"
+    },
+    {
+        "duration": "24.959758303030313",
+        "name": "thread_times.tough_scrolling_cases/text_50000_pixels_per_second"
+    },
+    {
+        "duration": "23.191610010101005",
+        "name": "thread_times.tough_scrolling_cases/text_60000_pixels_per_second"
+    },
+    {
+        "duration": "21.526950585858586",
+        "name": "thread_times.tough_scrolling_cases/text_75000_pixels_per_second"
+    },
+    {
+        "duration": "20.10496767676767",
+        "name": "thread_times.tough_scrolling_cases/text_90000_pixels_per_second"
+    },
+    {
+        "duration": "28.509965787878784",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_05000_pixels_per_second"
+    },
+    {
+        "duration": "28.85400212121211",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_10000_pixels_per_second"
+    },
+    {
+        "duration": "28.2716900909091",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_15000_pixels_per_second"
+    },
+    {
+        "duration": "28.339573636363628",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_20000_pixels_per_second"
+    },
+    {
+        "duration": "28.039836969696967",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_30000_pixels_per_second"
+    },
+    {
+        "duration": "27.883402494949504",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_40000_pixels_per_second"
+    },
+    {
+        "duration": "27.82490727272726",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_50000_pixels_per_second"
+    },
+    {
+        "duration": "27.683475898989883",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_60000_pixels_per_second"
+    },
+    {
+        "duration": "25.35186578787879",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_75000_pixels_per_second"
+    },
+    {
+        "duration": "24.049451252525248",
+        "name": "thread_times.tough_scrolling_cases/text_constant_full_page_raster_90000_pixels_per_second"
+    },
+    {
+        "duration": "21.425397030303035",
+        "name": "thread_times.tough_scrolling_cases/text_hover_05000_pixels_per_second"
+    },
+    {
+        "duration": "22.041378191919183",
+        "name": "thread_times.tough_scrolling_cases/text_hover_10000_pixels_per_second"
+    },
+    {
+        "duration": "22.10245430303031",
+        "name": "thread_times.tough_scrolling_cases/text_hover_15000_pixels_per_second"
+    },
+    {
+        "duration": "22.016877757575756",
+        "name": "thread_times.tough_scrolling_cases/text_hover_20000_pixels_per_second"
+    },
+    {
+        "duration": "21.88110057575758",
+        "name": "thread_times.tough_scrolling_cases/text_hover_30000_pixels_per_second"
+    },
+    {
+        "duration": "21.853328505050506",
+        "name": "thread_times.tough_scrolling_cases/text_hover_40000_pixels_per_second"
+    },
+    {
+        "duration": "21.793491616161614",
+        "name": "thread_times.tough_scrolling_cases/text_hover_50000_pixels_per_second"
+    },
+    {
+        "duration": "21.086836171717163",
+        "name": "thread_times.tough_scrolling_cases/text_hover_60000_pixels_per_second"
+    },
+    {
+        "duration": "19.327570424242417",
+        "name": "thread_times.tough_scrolling_cases/text_hover_75000_pixels_per_second"
+    },
+    {
+        "duration": "18.476224737373734",
+        "name": "thread_times.tough_scrolling_cases/text_hover_90000_pixels_per_second"
+    },
+    {
+        "duration": "19.057826787878785",
+        "name": "tracing.tracing_with_background_memory_infra/Facebook"
+    },
+    {
+        "duration": "21.08620018181819",
+        "name": "tracing.tracing_with_background_memory_infra/Wikipedia"
+    },
+    {
+        "duration": "15.221000328282827",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.amazon.com"
+    },
+    {
+        "duration": "16.61925050505051",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.ask.com/"
+    },
+    {
+        "duration": "14.9253668939394",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.bing.com/"
+    },
+    {
+        "duration": "16.73253023232323",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.yahoo.com/"
+    },
+    {
+        "duration": "17.52611996969697",
+        "name": "tracing.tracing_with_background_memory_infra/http://www.youtube.com"
+    },
+    {
+        "duration": "30.24715939393939",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/#hl=en&q=barack+obama"
+    },
+    {
+        "duration": "19.17793015151515",
+        "name": "tracing.tracing_with_background_memory_infra/https://www.google.com/calendar/"
+    },
+    {
+        "duration": "146.7929597979798",
+        "name": "v8.browsing_mobile-future/browse:chrome:newtab"
+    },
+    {
+        "duration": "52.477306323232305",
+        "name": "v8.browsing_mobile-future/browse:chrome:omnibox"
+    },
+    {
+        "duration": "158.05751262626256",
+        "name": "v8.browsing_mobile-future/browse:media:facebook_photos"
+    },
+    {
+        "duration": "86.89646531313133",
+        "name": "v8.browsing_mobile-future/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "132.51831900000005",
+        "name": "v8.browsing_mobile-future/browse:media:imgur"
+    },
+    {
+        "duration": "9.438196855555557E-4",
+        "name": "v8.browsing_mobile-future/browse:media:youtube"
+    },
+    {
+        "duration": "0.0012613455566666662",
+        "name": "v8.browsing_mobile-future/browse:news:cnn"
+    },
+    {
+        "duration": "115.37527936363642",
+        "name": "v8.browsing_mobile-future/browse:news:cricbuzz"
+    },
+    {
+        "duration": "2.597014106666667E-4",
+        "name": "v8.browsing_mobile-future/browse:news:globo"
+    },
+    {
+        "duration": "90.47917367676766",
+        "name": "v8.browsing_mobile-future/browse:news:qq"
+    },
+    {
+        "duration": "103.32026283838387",
+        "name": "v8.browsing_mobile-future/browse:news:reddit"
+    },
+    {
+        "duration": "2.7879079200000004E-4",
+        "name": "v8.browsing_mobile-future/browse:news:toi"
+    },
+    {
+        "duration": "92.65786173737375",
+        "name": "v8.browsing_mobile-future/browse:news:washingtonpost"
+    },
+    {
+        "duration": "180.34606848484844",
+        "name": "v8.browsing_mobile-future/browse:shopping:amazon"
+    },
+    {
+        "duration": "0.0012067635766666667",
+        "name": "v8.browsing_mobile-future/browse:shopping:avito"
+    },
+    {
+        "duration": "4.884242999999999E-4",
+        "name": "v8.browsing_mobile-future/browse:shopping:flipkart"
+    },
+    {
+        "duration": "9.663104993333333E-4",
+        "name": "v8.browsing_mobile-future/browse:shopping:lazada"
+    },
+    {
+        "duration": "133.62747720202023",
+        "name": "v8.browsing_mobile-future/browse:social:facebook"
+    },
+    {
+        "duration": "0.0011786302013333334",
+        "name": "v8.browsing_mobile-future/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "169.56490232323233",
+        "name": "v8.browsing_mobile-future/browse:social:instagram"
+    },
+    {
+        "duration": "9.71237818888889E-4",
+        "name": "v8.browsing_mobile-future/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "0.0010667641899999999",
+        "name": "v8.browsing_mobile-future/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "88.0135880606061",
+        "name": "v8.browsing_mobile-future/browse:social:twitter"
+    },
+    {
+        "duration": "0.0011911869113333333",
+        "name": "v8.browsing_mobile-future/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "90.29392606060604",
+        "name": "v8.browsing_mobile-future/browse:tools:maps"
+    },
+    {
+        "duration": "150.06470383838382",
+        "name": "v8.browsing_mobile/browse:chrome:newtab"
+    },
+    {
+        "duration": "54.07889719191921",
+        "name": "v8.browsing_mobile/browse:chrome:omnibox"
+    },
+    {
+        "duration": "162.59746959595955",
+        "name": "v8.browsing_mobile/browse:media:facebook_photos"
+    },
+    {
+        "duration": "88.07251865656566",
+        "name": "v8.browsing_mobile/browse:media:flickr_infinite_scroll"
+    },
+    {
+        "duration": "134.4546121717172",
+        "name": "v8.browsing_mobile/browse:media:imgur"
+    },
+    {
+        "duration": "8.64195817E-4",
+        "name": "v8.browsing_mobile/browse:media:youtube"
+    },
+    {
+        "duration": "6.880026600000001E-4",
+        "name": "v8.browsing_mobile/browse:news:cnn"
+    },
+    {
+        "duration": "118.00485893939393",
+        "name": "v8.browsing_mobile/browse:news:cricbuzz"
+    },
+    {
+        "duration": "2.802151892307692E-4",
+        "name": "v8.browsing_mobile/browse:news:globo"
+    },
+    {
+        "duration": "93.07734151515153",
+        "name": "v8.browsing_mobile/browse:news:qq"
+    },
+    {
+        "duration": "109.77028254545453",
+        "name": "v8.browsing_mobile/browse:news:reddit"
+    },
+    {
+        "duration": "2.7509836153846154E-4",
+        "name": "v8.browsing_mobile/browse:news:toi"
+    },
+    {
+        "duration": "96.34806983838385",
+        "name": "v8.browsing_mobile/browse:news:washingtonpost"
+    },
+    {
+        "duration": "184.5223194949495",
+        "name": "v8.browsing_mobile/browse:shopping:amazon"
+    },
+    {
+        "duration": "8.973341730769232E-4",
+        "name": "v8.browsing_mobile/browse:shopping:avito"
+    },
+    {
+        "duration": "4.4864874923076923E-4",
+        "name": "v8.browsing_mobile/browse:shopping:flipkart"
+    },
+    {
+        "duration": "7.359614661538461E-4",
+        "name": "v8.browsing_mobile/browse:shopping:lazada"
+    },
+    {
+        "duration": "136.9386156868687",
+        "name": "v8.browsing_mobile/browse:social:facebook"
+    },
+    {
+        "duration": "9.95691006923077E-4",
+        "name": "v8.browsing_mobile/browse:social:facebook_infinite_scroll"
+    },
+    {
+        "duration": "174.65320858585855",
+        "name": "v8.browsing_mobile/browse:social:instagram"
+    },
+    {
+        "duration": "8.631706309999999E-4",
+        "name": "v8.browsing_mobile/browse:social:pinterest_infinite_scroll"
+    },
+    {
+        "duration": "0.0012045621819999999",
+        "name": "v8.browsing_mobile/browse:social:tumblr_infinite_scroll"
+    },
+    {
+        "duration": "91.83832190909092",
+        "name": "v8.browsing_mobile/browse:social:twitter"
+    },
+    {
+        "duration": "7.01647536923077E-4",
+        "name": "v8.browsing_mobile/browse:tech:discourse_infinite_scroll"
+    },
+    {
+        "duration": "94.42155341414141",
+        "name": "v8.browsing_mobile/browse:tools:maps"
+    },
+    {
+        "duration": "15.242968075757574",
+        "name": "wasm/AsmJsZenGarden"
+    },
+    {
+        "duration": "0.0011331056956410258",
+        "name": "wasm/WasmSpaceBuggy"
+    },
+    {
+        "duration": "15.24465491414141",
+        "name": "wasm/WasmStylizedRenderer"
+    },
+    {
+        "duration": "15.330122737373733",
+        "name": "wasm/WasmSunTemple"
+    },
+    {
+        "duration": "27.976230442760944",
+        "name": "wasm/WasmTanks"
+    },
+    {
+        "duration": "15.47282452356902",
+        "name": "wasm/WasmZenGarden"
+    },
+    {
+        "duration": "28.59426743434343",
+        "name": "webrtc/10s_datachannel_transfer"
+    },
+    {
+        "duration": "36.38392025252526",
+        "name": "webrtc/canvas_capture_peer_connection"
+    },
+    {
+        "duration": "46.898688020202",
+        "name": "webrtc/codec_constraints_h264"
+    },
+    {
+        "duration": "46.83732043434342",
+        "name": "webrtc/codec_constraints_vp8"
+    },
+    {
+        "duration": "46.76229864646462",
+        "name": "webrtc/codec_constraints_vp9"
+    },
+    {
+        "duration": "31.79935216161616",
+        "name": "webrtc/hd_local_stream_10s"
+    },
+    {
+        "duration": "53.127465505050516",
+        "name": "webrtc/multiple_peerconnections"
+    },
+    {
+        "duration": "77.48114166666667",
+        "name": "webrtc/pause_play_peerconnections"
+    }
+]
\ No newline at end of file
diff --git a/tools/perf/core/upload_results_to_perf_dashboard.py b/tools/perf/core/upload_results_to_perf_dashboard.py
index ae826a9..ad82a6ce 100755
--- a/tools/perf/core/upload_results_to_perf_dashboard.py
+++ b/tools/perf/core/upload_results_to_perf_dashboard.py
@@ -125,11 +125,11 @@
   else:
     dashboard_json = _GetDashboardHistogramData(options)
 
-  if dashboard_json:
-    if options.output_json_file:
-      json.dump(dashboard_json, options.output_json_file,
-          indent=4, separators=(',', ': '))
+  if options.output_json_file:
+    json.dump(dashboard_json, options.output_json_file,
+        indent=4, separators=(',', ': '))
 
+  if dashboard_json:
     if options.output_json_dashboard_url:
       # Dump dashboard url to file.
       dashboard_url = GetDashboardUrl(options.name,
@@ -147,9 +147,8 @@
         oauth_token=oauth_token):
       return 1
   else:
-    print 'Error: No perf dashboard JSON was produced.'
-    print '@@@STEP_FAILURE@@@'
-    return 1
+    # The upload didn't fail since there was no data to upload.
+    print 'Warning: No perf dashboard JSON was produced.'
   return 0
 
 if __name__ == '__main__':
diff --git a/tools/perf/page_sets/data/startup_pages.json b/tools/perf/page_sets/data/startup_pages.json
index 66d14342..ad533d9 100644
--- a/tools/perf/page_sets/data/startup_pages.json
+++ b/tools/perf/page_sets/data/startup_pages.json
@@ -1,5 +1,8 @@
 {
     "archives": {
+        "intent:coldish:bbc": {
+            "DEFAULT": "startup_pages_000.wprgo"
+        },
         "http://bbc.co.uk": {
             "DEFAULT": "startup_pages_000.wprgo"
         },
@@ -9,4 +12,4 @@
     },
     "description": "Describes the Web Page Replay archives for a story set. Don't edit by hand! Use record_wpr for updating.",
     "platform_specific": true
-}
\ No newline at end of file
+}
diff --git a/tools/perf/process_perf_results.py b/tools/perf/process_perf_results.py
index 3b2d440..82ee302 100755
--- a/tools/perf/process_perf_results.py
+++ b/tools/perf/process_perf_results.py
@@ -412,7 +412,6 @@
     logdog_stream = None
     logdog_label = 'Results Dashboard'
     for benchmark_name, output_file in results_dict.iteritems():
-      print "Benchmark: %s, file: %s" % (benchmark_name, output_file)
       failure = benchmark_upload_result_map[benchmark_name]
       upload_failure = upload_failure or failure
       is_reference = '.reference' in benchmark_name
@@ -462,21 +461,21 @@
   # add links for the perf results and the dashboard url to
   # the logs section of buildbot
   if is_ref:
-    logdog_dict[base_benchmark_name]['perf_results_ref'] = \
-        output_json_file.get_viewer_url()
-  else:
+    logdog_dict[base_benchmark_name]['perf_results_ref'] = (
+        output_json_file.get_viewer_url())
     if upload_failure:
-      logdog_dict[base_benchmark_name]['dashboard_url'] = \
-          'upload failed'
-    else:
-      logdog_dict[base_benchmark_name]['dashboard_url'] = \
-          upload_results_to_perf_dashboard.GetDashboardUrl(
-              benchmark_name,
-              configuration_name, RESULTS_URL,
-              build_properties['got_revision_cp'],
-              _GetMachineGroup(build_properties))
+      logdog_dict[base_benchmark_name]['ref_upload_failed'] = 'True'
+  else:
+    logdog_dict[base_benchmark_name]['dashboard_url'] = \
+        upload_results_to_perf_dashboard.GetDashboardUrl(
+            benchmark_name,
+            configuration_name, RESULTS_URL,
+            build_properties['got_revision_cp'],
+            _GetMachineGroup(build_properties))
     logdog_dict[base_benchmark_name]['perf_results'] = \
         output_json_file.get_viewer_url()
+    if upload_failure:
+      logdog_dict[base_benchmark_name]['upload_failed'] = 'True'
 
 
 def print_duration(step, start, end):
diff --git a/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py b/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py
index 40c7c6d..2901c94b 100755
--- a/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py
+++ b/tools/traffic_annotation/scripts/traffic_annotation_auditor_tests.py
@@ -91,6 +91,9 @@
     _, stderr_text, return_code = self.tools.RunAuditor(
         args + ["--annotations-file=%s" % temp_filename])
 
+    # TODO(https://crbug.com/844014): Remove after debugging.
+    print("Return Code: %i" % return_code)
+    print("File Exists: %i" % os.path.exists(temp_filename))
     if os.path.exists(temp_filename):
       annotations = None if return_code else open(temp_filename).read()
       os.remove(temp_filename)
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index a3bec7b..b764e72 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -136,6 +136,7 @@
  <item id="invalidation_service" hash_code="72354423" type="0" content_hash_code="78425687" os_list="linux,windows" file_path="components/invalidation/impl/gcm_network_channel.cc"/>
  <item id="lib_address_input" hash_code="50816767" type="0" content_hash_code="57977576" os_list="linux,windows" file_path="third_party/libaddressinput/chromium/chrome_metadata_source.cc"/>
  <item id="logo_tracker" hash_code="36859107" type="0" content_hash_code="67588075" os_list="linux,windows" file_path="components/search_provider_logos/logo_tracker.cc"/>
+ <item id="md_downloads_dom_handler" hash_code="65603364" type="0" content_hash_code="134779147" os_list="linux,windows" file_path="chrome/browser/ui/webui/md_downloads/md_downloads_dom_handler.cc"/>
  <item id="metrics_report_ukm" hash_code="727478" type="0" content_hash_code="40919254" os_list="linux,windows" file_path="components/metrics/net/net_metrics_log_uploader.cc"/>
  <item id="metrics_report_uma" hash_code="727528" type="0" content_hash_code="10176197" os_list="linux,windows" file_path="components/metrics/net/net_metrics_log_uploader.cc"/>
  <item id="mirroring_get_setup_info" hash_code="78447809" type="0" content_hash_code="112561099" os_list="linux,windows" file_path="components/mirroring/service/session_monitor.cc"/>
@@ -148,6 +149,7 @@
  <item id="network_time_component" hash_code="46188932" type="0" content_hash_code="28051857" os_list="linux,windows" file_path="components/network_time/network_time_tracker.cc"/>
  <item id="notification_image_reporter" hash_code="70126372" type="0" content_hash_code="29754543" os_list="linux,windows" file_path="chrome/browser/safe_browsing/notification_image_reporter.cc"/>
  <item id="ntp_contextual_suggestions_fetch" hash_code="95711309" type="0" content_hash_code="107035434" os_list="linux,windows" file_path="components/ntp_snippets/contextual/contextual_suggestions_fetch.cc"/>
+ <item id="ntp_icon_source" hash_code="29197139" type="0" content_hash_code="16399294" os_list="linux,windows" file_path="chrome/browser/search/ntp_icon_source.cc"/>
  <item id="ntp_snippets_fetch" hash_code="15418154" type="0" content_hash_code="10078959" os_list="linux,windows" file_path="components/ntp_snippets/remote/json_request.cc"/>
  <item id="oauth2_access_token_fetcher" hash_code="27915688" type="0" content_hash_code="33501872" os_list="linux,windows" file_path="google_apis/gaia/oauth2_access_token_fetcher_impl.cc"/>
  <item id="oauth2_api_call_flow" hash_code="29188932" type="2" content_hash_code="108831236" os_list="linux,windows" policy_fields="-1" file_path="google_apis/gaia/oauth2_api_call_flow.cc"/>
diff --git a/ui/base/material_design/material_design_controller.cc b/ui/base/material_design/material_design_controller.cc
index 439af858..0a50941 100644
--- a/ui/base/material_design/material_design_controller.cc
+++ b/ui/base/material_design/material_design_controller.cc
@@ -10,8 +10,10 @@
 #include "base/logging.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
+#include "build/buildflag.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/base/ui_base_switches.h"
+#include "ui/base/ui_features.h"
 #include "ui/gfx/color_palette.h"
 #include "ui/gfx/color_utils.h"
 
@@ -169,6 +171,8 @@
 
 #if defined(OS_WIN) || defined(OS_LINUX)
   return MATERIAL_REFRESH;
+#elif defined(OS_MACOSX) && BUILDFLAG(MAC_VIEWS_BROWSER)
+  return features::IsViewsBrowserCocoa() ? MATERIAL_NORMAL : MATERIAL_REFRESH;
 #else
   return MATERIAL_NORMAL;
 #endif
diff --git a/ui/compositor/test/in_process_context_provider.cc b/ui/compositor/test/in_process_context_provider.cc
index e3a13085..d07ee21 100644
--- a/ui/compositor/test/in_process_context_provider.cc
+++ b/ui/compositor/test/in_process_context_provider.cc
@@ -96,7 +96,7 @@
     return bind_result_;
   bind_tried_ = true;
 
-  context_ = gpu::GLInProcessContext::CreateWithoutInit();
+  context_ = std::make_unique<gpu::GLInProcessContext>();
   bind_result_ = context_->Initialize(
       nullptr,  /* service */
       nullptr,  /* surface */
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.cc b/ui/ozone/platform/drm/gpu/drm_thread.cc
index 8766c67..4fc1d33 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -186,7 +186,7 @@
     gfx::AcceleratedWidget widget,
     const gfx::Size& size,
     gfx::BufferFormat format,
-    std::vector<base::ScopedFD>&& fds,
+    std::vector<base::ScopedFD> fds,
     const std::vector<gfx::NativePixmapPlane>& planes,
     scoped_refptr<GbmBuffer>* buffer) {
   scoped_refptr<GbmDevice> gbm =
diff --git a/ui/ozone/platform/drm/gpu/drm_thread.h b/ui/ozone/platform/drm/gpu/drm_thread.h
index 5515ab9..9b53b49 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread.h
+++ b/ui/ozone/platform/drm/gpu/drm_thread.h
@@ -75,7 +75,7 @@
   void CreateBufferFromFds(gfx::AcceleratedWidget widget,
                            const gfx::Size& size,
                            gfx::BufferFormat format,
-                           std::vector<base::ScopedFD>&& fds,
+                           std::vector<base::ScopedFD> fds,
                            const std::vector<gfx::NativePixmapPlane>& planes,
                            scoped_refptr<GbmBuffer>* buffer);
   void GetScanoutFormats(gfx::AcceleratedWidget widget,
diff --git a/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc b/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc
index 72058c1..3b0d2a8 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc
+++ b/ui/ozone/platform/drm/gpu/drm_thread_proxy.cc
@@ -53,7 +53,7 @@
     gfx::AcceleratedWidget widget,
     const gfx::Size& size,
     gfx::BufferFormat format,
-    std::vector<base::ScopedFD>&& fds,
+    std::vector<base::ScopedFD> fds,
     const std::vector<gfx::NativePixmapPlane>& planes) {
   scoped_refptr<GbmBuffer> buffer;
   PostSyncTask(
diff --git a/ui/ozone/platform/drm/gpu/drm_thread_proxy.h b/ui/ozone/platform/drm/gpu/drm_thread_proxy.h
index 10a8ef2c..cef8415 100644
--- a/ui/ozone/platform/drm/gpu/drm_thread_proxy.h
+++ b/ui/ozone/platform/drm/gpu/drm_thread_proxy.h
@@ -42,7 +42,7 @@
       gfx::AcceleratedWidget widget,
       const gfx::Size& size,
       gfx::BufferFormat format,
-      std::vector<base::ScopedFD>&& fds,
+      std::vector<base::ScopedFD> fds,
       const std::vector<gfx::NativePixmapPlane>& planes);
 
   void GetScanoutFormats(gfx::AcceleratedWidget widget,
diff --git a/ui/ozone/platform/drm/gpu/gbm_buffer.cc b/ui/ozone/platform/drm/gpu/gbm_buffer.cc
index 9a2e36ed..94a4ef0 100644
--- a/ui/ozone/platform/drm/gpu/gbm_buffer.cc
+++ b/ui/ozone/platform/drm/gpu/gbm_buffer.cc
@@ -36,10 +36,9 @@
                      uint32_t format,
                      uint32_t flags,
                      uint64_t modifier,
-                     std::vector<base::ScopedFD>&& fds,
+                     std::vector<base::ScopedFD> fds,
                      const gfx::Size& size,
-
-                     const std::vector<gfx::NativePixmapPlane>&& planes)
+                     std::vector<gfx::NativePixmapPlane> planes)
     : drm_(gbm),
       bo_(bo),
       format_modifier_(modifier),
@@ -254,7 +253,7 @@
     const scoped_refptr<GbmDevice>& gbm,
     uint32_t format,
     const gfx::Size& size,
-    std::vector<base::ScopedFD>&& fds,
+    std::vector<base::ScopedFD> fds,
     const std::vector<gfx::NativePixmapPlane>& planes) {
   TRACE_EVENT2("drm", "GbmBuffer::CreateBufferFromFD", "device",
                gbm->device_path().value(), "size", size.ToString());
diff --git a/ui/ozone/platform/drm/gpu/gbm_buffer.h b/ui/ozone/platform/drm/gpu/gbm_buffer.h
index 2b5e58f75..f073d46 100644
--- a/ui/ozone/platform/drm/gpu/gbm_buffer.h
+++ b/ui/ozone/platform/drm/gpu/gbm_buffer.h
@@ -40,7 +40,7 @@
       const scoped_refptr<GbmDevice>& gbm,
       uint32_t format,
       const gfx::Size& size,
-      std::vector<base::ScopedFD>&& fds,
+      std::vector<base::ScopedFD> fds,
       const std::vector<gfx::NativePixmapPlane>& planes);
   uint32_t GetFormat() const { return format_; }
   uint32_t GetFlags() const { return flags_; }
@@ -71,9 +71,9 @@
             uint32_t format,
             uint32_t flags,
             uint64_t modifier,
-            std::vector<base::ScopedFD>&& fds,
+            std::vector<base::ScopedFD> fds,
             const gfx::Size& size,
-            const std::vector<gfx::NativePixmapPlane>&& planes);
+            std::vector<gfx::NativePixmapPlane> planes);
   ~GbmBuffer() override;
 
   static scoped_refptr<GbmBuffer> CreateBufferForBO(
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
index 55ea6d50..55499c9 100644
--- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
+++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
@@ -9,6 +9,7 @@
 #include "gpu/vulkan/vulkan_function_pointers.h"
 #include "gpu/vulkan/vulkan_instance.h"
 #include "gpu/vulkan/vulkan_surface.h"
+#include "ui/gfx/gpu_fence.h"
 
 namespace ui {
 
@@ -26,12 +27,33 @@
   if (!vulkan_function_pointers->vulkan_loader_library_)
     return false;
 
-  std::vector<const char*> required_extensions;
+  std::vector<const char*> required_extensions = {
+      "VK_KHR_external_fence_capabilities",
+      "VK_KHR_get_physical_device_properties2",
+  };
   if (!vulkan_instance_.Initialize(required_extensions)) {
     vulkan_instance_.Destroy();
     return false;
   }
 
+  vkGetPhysicalDeviceExternalFencePropertiesKHR_ =
+      reinterpret_cast<PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR>(
+          vulkan_function_pointers->vkGetInstanceProcAddr(
+              vulkan_instance_.vk_instance(),
+              "vkGetPhysicalDeviceExternalFencePropertiesKHR"));
+  if (!vkGetPhysicalDeviceExternalFencePropertiesKHR_) {
+    vulkan_instance_.Destroy();
+    return false;
+  }
+
+  vkGetFenceFdKHR_ = reinterpret_cast<PFN_vkGetFenceFdKHR>(
+      vulkan_function_pointers->vkGetInstanceProcAddr(
+          vulkan_instance_.vk_instance(), "vkGetFenceFdKHR"));
+  if (!vkGetFenceFdKHR_) {
+    vulkan_instance_.Destroy();
+    return false;
+  }
+
   return true;
 }
 
@@ -45,15 +67,69 @@
 }
 
 bool VulkanImplementationGbm::GetPhysicalDevicePresentationSupport(
-    VkPhysicalDevice device,
+    VkPhysicalDevice physical_device,
     const std::vector<VkQueueFamilyProperties>& queue_family_properties,
     uint32_t queue_family_index) {
+  VkPhysicalDeviceExternalFenceInfo external_fence_info = {
+      .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
+      .handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT};
+  VkExternalFenceProperties external_fence_properties;
+  vkGetPhysicalDeviceExternalFencePropertiesKHR_(
+      physical_device, &external_fence_info, &external_fence_properties);
+  if (!(external_fence_properties.externalFenceFeatures &
+        VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT)) {
+    return false;
+  }
+
   return true;
 }
 
 std::vector<const char*>
 VulkanImplementationGbm::GetRequiredDeviceExtensions() {
-  return std::vector<const char*>();
+  return {
+      "VK_KHR_external_fence", "VK_KHR_external_fence_fd",
+  };
+}
+
+VkFence VulkanImplementationGbm::CreateVkFenceForGpuFence(VkDevice vk_device) {
+  VkFenceCreateInfo fence_create_info = {};
+  fence_create_info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
+  VkExportFenceCreateInfo fence_export_create_info = {};
+  fence_create_info.pNext = &fence_export_create_info;
+  fence_export_create_info.sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO;
+  fence_export_create_info.handleTypes =
+      VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
+
+  VkFence fence;
+  VkResult result = gpu::GetVulkanFunctionPointers()->vkCreateFence(
+      vk_device, &fence_create_info, nullptr, &fence);
+  if (result != VK_SUCCESS) {
+    DLOG(ERROR) << "vkCreateFence failed: " << result;
+    return VK_NULL_HANDLE;
+  }
+
+  return fence;
+}
+
+std::unique_ptr<gfx::GpuFence> VulkanImplementationGbm::ExportVkFenceToGpuFence(
+    VkDevice vk_device,
+    VkFence vk_fence) {
+  VkFenceGetFdInfoKHR fence_get_fd_info = {};
+  fence_get_fd_info.sType = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR;
+  fence_get_fd_info.fence = vk_fence;
+  fence_get_fd_info.handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT;
+  int fence_fd = -1;
+  VkResult result = vkGetFenceFdKHR_(vk_device, &fence_get_fd_info, &fence_fd);
+  if (result != VK_SUCCESS) {
+    DLOG(ERROR) << "vkGetFenceFdKHR failed: " << result;
+    return nullptr;
+  }
+
+  gfx::GpuFenceHandle gpu_fence_handle;
+  gpu_fence_handle.type = gfx::GpuFenceHandleType::kAndroidNativeFenceSync;
+  gpu_fence_handle.native_fd =
+      base::FileDescriptor(fence_fd, true /* auto_close */);
+  return std::make_unique<gfx::GpuFence>(gpu_fence_handle);
 }
 
 }  // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
index 2b30c94..400cc421 100644
--- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
+++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
@@ -27,10 +27,18 @@
       const std::vector<VkQueueFamilyProperties>& queue_family_properties,
       uint32_t queue_family_index) override;
   std::vector<const char*> GetRequiredDeviceExtensions() override;
+  VkFence CreateVkFenceForGpuFence(VkDevice vk_device) override;
+  virtual std::unique_ptr<gfx::GpuFence> ExportVkFenceToGpuFence(
+      VkDevice vk_device,
+      VkFence vk_fence) override;
 
  private:
   gpu::VulkanInstance vulkan_instance_;
 
+  PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR
+      vkGetPhysicalDeviceExternalFencePropertiesKHR_ = nullptr;
+  PFN_vkGetFenceFdKHR vkGetFenceFdKHR_ = nullptr;
+
   DISALLOW_COPY_AND_ASSIGN(VulkanImplementationGbm);
 };
 
diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm
index 94bdab1..db7054a 100644
--- a/ui/views/cocoa/bridged_native_widget.mm
+++ b/ui/views/cocoa/bridged_native_widget.mm
@@ -1055,7 +1055,6 @@
 // BridgedNativeWidget, LayerDelegate:
 
 void BridgedNativeWidget::OnPaintLayer(const ui::PaintContext& context) {
-  DCHECK(window_visible_);
   native_widget_mac_->GetWidget()->OnNativeWidgetPaint(context);
 }
 
diff --git a/ui/views/cocoa/native_widget_mac_nswindow.h b/ui/views/cocoa/native_widget_mac_nswindow.h
index 97b37b8..0de886a 100644
--- a/ui/views/cocoa/native_widget_mac_nswindow.h
+++ b/ui/views/cocoa/native_widget_mac_nswindow.h
@@ -12,24 +12,6 @@
 
 @protocol WindowTouchBarDelegate;
 
-// Weak lets Chrome launch even if a future macOS doesn't have the below classes
-
-WEAK_IMPORT_ATTRIBUTE
-@interface NSNextStepFrame : NSView
-@end
-
-WEAK_IMPORT_ATTRIBUTE
-@interface NSThemeFrame : NSView
-@end
-
-VIEWS_EXPORT
-@interface NativeWidgetMacNSWindowBorderlessFrame : NSNextStepFrame
-@end
-
-VIEWS_EXPORT
-@interface NativeWidgetMacNSWindowTitledFrame : NSThemeFrame
-@end
-
 // The NSWindow used by BridgedNativeWidget. Provides hooks into AppKit that
 // can only be accomplished by overriding methods.
 VIEWS_EXPORT
diff --git a/ui/views/cocoa/native_widget_mac_nswindow.mm b/ui/views/cocoa/native_widget_mac_nswindow.mm
index bd4f06b2..145bbbe0 100644
--- a/ui/views/cocoa/native_widget_mac_nswindow.mm
+++ b/ui/views/cocoa/native_widget_mac_nswindow.mm
@@ -15,12 +15,7 @@
 #include "ui/views/widget/widget_delegate.h"
 
 @interface NSWindow (Private)
-+ (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle;
 - (BOOL)hasKeyAppearance;
-
-// Available in later point releases of 10.10. On 10.11+, use the public
-// -performWindowDragWithEvent: instead.
-- (void)beginWindowDragWithEvent:(NSEvent*)event;
 @end
 
 @interface NativeWidgetMacNSWindow ()
@@ -34,38 +29,6 @@
 - (BOOL)_isTitleHidden;
 @end
 
-// Use this category to implement mouseDown: on multiple frame view classes
-// with different superclasses.
-@interface NSView (CRFrameViewAdditions)
-- (void)cr_mouseDownOnFrameView:(NSEvent*)event;
-@end
-
-@implementation NSView (CRFrameViewAdditions)
-// If a mouseDown: falls through to the frame view, turn it into a window drag.
-- (void)cr_mouseDownOnFrameView:(NSEvent*)event {
-  if (@available(macOS 10.11, *))
-    return [self.window performWindowDragWithEvent:event];
-  else if ([self.window
-               respondsToSelector:@selector(beginWindowDragWithEvent:)])
-    return [self.window beginWindowDragWithEvent:event];
-  else
-    NOTREACHED();
-  [super mouseDown:event];
-}
-@end
-
-@implementation NativeWidgetMacNSWindowTitledFrame
-- (void)mouseDown:(NSEvent*)event {
-  [self cr_mouseDownOnFrameView:event];
-}
-@end
-
-@implementation NativeWidgetMacNSWindowBorderlessFrame
-- (void)mouseDown:(NSEvent*)event {
-  [self cr_mouseDownOnFrameView:event];
-}
-@end
-
 @implementation NativeWidgetMacNSWindow {
  @private
   base::scoped_nsobject<CommandDispatcher> commandDispatcher_;
@@ -136,17 +99,6 @@
 
 // NSWindow overrides.
 
-+ (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
-  if (windowStyle & NSWindowStyleMaskTitled) {
-    if (Class customFrame = [NativeWidgetMacNSWindowTitledFrame class])
-      return customFrame;
-  } else if (Class customFrame =
-                 [NativeWidgetMacNSWindowBorderlessFrame class]) {
-    return customFrame;
-  }
-  return [super frameViewClassForStyleMask:windowStyle];
-}
-
 - (BOOL)_isTitleHidden {
   if (![self delegate])
     return NO;
@@ -154,13 +106,6 @@
   return ![self viewsWidget]->widget_delegate()->ShouldShowWindowTitle();
 }
 
-// The base implementation returns YES if the window's frame view is a custom
-// class, which causes undesirable changes in behavior. AppKit NSWindow
-// subclasses are known to override it and return NO.
-- (BOOL)_usesCustomDrawing {
-  return NO;
-}
-
 // Ignore [super canBecome{Key,Main}Window]. The default is NO for windows with
 // NSBorderlessWindowMask, which is not the desired behavior.
 // Note these can be called via -[NSWindow close] while the widget is being torn