[go: nahoru, domu]

Move id_type.h from gpu/command_buffer/common to base/util

Changed only the namespace, header guards, BUILD.gn etc., the entire
implementation was left untouched. Further alignments and generalization
to come.

Bug: 954080
Change-Id: I6cb5388fefb606e04b5be1463e86a792a75c4bf7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1571695
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: Łukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Albert J. Wong <ajwong@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#658153}
diff --git a/BUILD.gn b/BUILD.gn
index 6b43e6b..79d7364 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -66,6 +66,7 @@
     ":gn_visibility",
     "//base:base_perftests",
     "//base:base_unittests",
+    "//base/util:base_util_unittests",
     "//chrome/installer",
     "//chrome/updater",
     "//net:net_unittests",
diff --git a/base/util/BUILD.gn b/base/util/BUILD.gn
new file mode 100644
index 0000000..c3b1942c
--- /dev/null
+++ b/base/util/BUILD.gn
@@ -0,0 +1,12 @@
+# Copyright (c) 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//testing/test.gni")
+
+test("base_util_unittests") {
+  deps = [
+    "type-safety:tests",
+    "//base/test:run_all_base_unittests",
+  ]
+}
diff --git a/base/util/type-safety/BUILD.gn b/base/util/type-safety/BUILD.gn
new file mode 100644
index 0000000..8b7b05e
--- /dev/null
+++ b/base/util/type-safety/BUILD.gn
@@ -0,0 +1,26 @@
+# Copyright (c) 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/jumbo.gni")
+
+# Change this target's type to jumbo_component if it starts to contain more than
+# just headers. Header-only targets cannot be compiled to libraries, so it must
+# remain a source_set for now.
+source_set("type-safety") {
+  sources = [
+    "id_type.h",
+  ]
+}
+
+source_set("tests") {
+  testonly = true
+  sources = [
+    "id_type_unittest.cc",
+  ]
+
+  deps = [
+    ":type-safety",
+    "//testing/gtest",
+  ]
+}
diff --git a/base/util/type-safety/DEPS b/base/util/type-safety/DEPS
new file mode 100644
index 0000000..d8f89b0
--- /dev/null
+++ b/base/util/type-safety/DEPS
@@ -0,0 +1,5 @@
+include_rules = [
+  "-base",
+  "+base/util/type-safety",
+  "-third_party",
+]
diff --git a/base/util/type-safety/OWNERS b/base/util/type-safety/OWNERS
new file mode 100644
index 0000000..3889b827
--- /dev/null
+++ b/base/util/type-safety/OWNERS
@@ -0,0 +1,2 @@
+lukasza@chromium.com
+mpawlowski@opera.com
diff --git a/gpu/command_buffer/common/id_type.h b/base/util/type-safety/id_type.h
similarity index 95%
rename from gpu/command_buffer/common/id_type.h
rename to base/util/type-safety/id_type.h
index e3efbfa..2563139 100644
--- a/gpu/command_buffer/common/id_type.h
+++ b/base/util/type-safety/id_type.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef GPU_COMMAND_BUFFER_COMMON_ID_TYPE_H_
-#define GPU_COMMAND_BUFFER_COMMON_ID_TYPE_H_
+#ifndef BASE_UTIL_TYPE_SAFETY_ID_TYPE_H_
+#define BASE_UTIL_TYPE_SAFETY_ID_TYPE_H_
 
 #include <stdint.h>
 #include <cstddef>
@@ -43,7 +43,7 @@
 // - it ensures initialization to zero and allows checking against
 //   default-initialized values via is_null method.
 
-namespace gpu {
+namespace util {
 
 template <typename TypeMarker, typename WrappedType, WrappedType kInvalidValue>
 class IdType {
@@ -104,6 +104,6 @@
   return stream << id.GetUnsafeValue();
 }
 
-}  // namespace gpu
+}  // namespace util
 
-#endif  // CONTENT_COMMON_ID_TYPE_H_
+#endif  // BASE_UTIL_TYPE_SAFETY_ID_TYPE_H_
diff --git a/gpu/command_buffer/common/id_type_unittest.cc b/base/util/type-safety/id_type_unittest.cc
similarity index 98%
rename from gpu/command_buffer/common/id_type_unittest.cc
rename to base/util/type-safety/id_type_unittest.cc
index a8f0b34..9320951 100644
--- a/gpu/command_buffer/common/id_type_unittest.cc
+++ b/base/util/type-safety/id_type_unittest.cc
@@ -9,10 +9,10 @@
 #include <type_traits>
 #include <unordered_map>
 
-#include "gpu/command_buffer/common/id_type.h"
+#include "base/util/type-safety/id_type.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-namespace gpu {
+namespace util {
 
 namespace {
 
@@ -197,4 +197,4 @@
                                            123,
                                            std::numeric_limits<int>::max()));
 
-}  // namespace gpu
+}  // namespace util
diff --git a/chrome/browser/extensions/api/management/management_api_browsertest.cc b/chrome/browser/extensions/api/management/management_api_browsertest.cc
index c06d409..16f29ac9 100644
--- a/chrome/browser/extensions/api/management/management_api_browsertest.cc
+++ b/chrome/browser/extensions/api/management/management_api_browsertest.cc
@@ -36,7 +36,7 @@
 #endif
 
 namespace keys = extension_management_api_constants;
-namespace util = extension_function_test_utils;
+namespace test_utils = extension_function_test_utils;
 
 namespace extensions {
 
@@ -179,19 +179,17 @@
       new ManagementCreateAppShortcutFunction());
   create_shortcut_function->set_user_gesture(true);
   ManagementCreateAppShortcutFunction::SetAutoConfirmForTest(true);
-  util::RunFunctionAndReturnSingleResult(
+  test_utils::RunFunctionAndReturnSingleResult(
       create_shortcut_function.get(),
-      base::StringPrintf("[\"%s\"]", app_id.c_str()),
-      browser());
+      base::StringPrintf("[\"%s\"]", app_id.c_str()), browser());
 
   create_shortcut_function = new ManagementCreateAppShortcutFunction();
   create_shortcut_function->set_user_gesture(true);
   ManagementCreateAppShortcutFunction::SetAutoConfirmForTest(false);
   EXPECT_TRUE(base::MatchPattern(
-      util::RunFunctionAndReturnError(
+      test_utils::RunFunctionAndReturnError(
           create_shortcut_function.get(),
-          base::StringPrintf("[\"%s\"]", app_id.c_str()),
-          browser()),
+          base::StringPrintf("[\"%s\"]", app_id.c_str()), browser()),
       keys::kCreateShortcutCanceledError));
 }
 
@@ -209,7 +207,8 @@
   scoped_refptr<ManagementGetAllFunction> function =
       new ManagementGetAllFunction();
   std::unique_ptr<base::Value> result(
-      util::RunFunctionAndReturnSingleResult(function.get(), "[]", browser()));
+      test_utils::RunFunctionAndReturnSingleResult(function.get(), "[]",
+                                                   browser()));
   base::ListValue* list;
   ASSERT_TRUE(result->GetAsList(&list));
   EXPECT_EQ(1U, list->GetSize());
@@ -218,8 +217,8 @@
   ASSERT_TRUE(CrashEnabledExtension(extension->id()));
 
   function = new ManagementGetAllFunction();
-  result.reset(util::RunFunctionAndReturnSingleResult(
-      function.get(), "[]", browser()));
+  result.reset(test_utils::RunFunctionAndReturnSingleResult(function.get(),
+                                                            "[]", browser()));
   ASSERT_TRUE(result->GetAsList(&list));
   EXPECT_EQ(1U, list->GetSize());
 }
@@ -271,7 +270,7 @@
       function->set_user_gesture(true);
     function->SetRenderFrameHost(browser()->tab_strip_model()->
         GetActiveWebContents()->GetMainFrame());
-    bool response = util::RunFunction(
+    bool response = test_utils::RunFunction(
         function.get(), base::StringPrintf("[\"%s\", %s]", kId, enabled_string),
         browser(), api_test_utils::NONE);
     if (expected_error.empty()) {
@@ -294,8 +293,9 @@
                        DisabledReason) {
   scoped_refptr<ManagementGetFunction> function =
       new ManagementGetFunction();
-  std::unique_ptr<base::Value> result(util::RunFunctionAndReturnSingleResult(
-      function.get(), base::StringPrintf("[\"%s\"]", kId), browser()));
+  std::unique_ptr<base::Value> result(
+      test_utils::RunFunctionAndReturnSingleResult(
+          function.get(), base::StringPrintf("[\"%s\"]", kId), browser()));
   ASSERT_TRUE(result.get() != NULL);
   ASSERT_TRUE(result->is_dict());
   base::DictionaryValue* dict =
diff --git a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
index d46189d..29cdc5a 100644
--- a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
+++ b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
@@ -41,8 +41,6 @@
 using base::Value;
 namespace extensions {
 
-namespace util = settings_test_util;
-
 namespace {
 
 // To save typing ValueStore::DEFAULTS everywhere.
@@ -213,8 +211,8 @@
   ValueStore* AddExtensionAndGetStorage(
       const std::string& id, Manifest::Type type) {
     scoped_refptr<const Extension> extension =
-        util::AddExtensionWithId(profile_.get(), id, type);
-    return util::GetStorage(extension, frontend_.get());
+        settings_test_util::AddExtensionWithId(profile_.get(), id, type);
+    return settings_test_util::GetStorage(extension, frontend_.get());
   }
 
   // Gets the syncer::SyncableService for the given sync type.
@@ -1425,7 +1423,7 @@
 static void UnlimitedSyncStorageTestCallback(ValueStore* sync_storage) {
   // Sync storage should still run out after ~100K; the unlimitedStorage
   // permission can't apply to sync.
-  std::unique_ptr<base::Value> kilobyte = util::CreateKilobyte();
+  std::unique_ptr<base::Value> kilobyte = settings_test_util::CreateKilobyte();
   for (int i = 0; i < 100; ++i) {
     sync_storage->Set(ValueStore::DEFAULTS, base::NumberToString(i), *kilobyte);
   }
@@ -1437,7 +1435,7 @@
 
 static void UnlimitedLocalStorageTestCallback(ValueStore* local_storage) {
   // Local storage should never run out.
-  std::unique_ptr<base::Value> megabyte = util::CreateMegabyte();
+  std::unique_ptr<base::Value> megabyte = settings_test_util::CreateMegabyte();
   for (int i = 0; i < 7; ++i) {
     local_storage->Set(ValueStore::DEFAULTS, base::NumberToString(i),
                        *megabyte);
@@ -1463,7 +1461,7 @@
   std::set<std::string> permissions;
   permissions.insert("unlimitedStorage");
   scoped_refptr<const Extension> extension =
-      util::AddExtensionWithIdAndPermissions(
+      settings_test_util::AddExtensionWithIdAndPermissions(
           profile_.get(), id, Manifest::TYPE_EXTENSION, permissions);
 
   frontend_->RunWithStorage(extension,
diff --git a/chrome/browser/ui/ash/wallpaper_controller_client.cc b/chrome/browser/ui/ash/wallpaper_controller_client.cc
index 9f1280b..026caed 100644
--- a/chrome/browser/ui/ash/wallpaper_controller_client.cc
+++ b/chrome/browser/ui/ash/wallpaper_controller_client.cc
@@ -530,11 +530,11 @@
 
 void WallpaperControllerClient::OnReadyToSetWallpaper() {
   // Apply device customization.
-  namespace util = chromeos::customization_wallpaper_util;
-  if (util::ShouldUseCustomizedDefaultWallpaper()) {
+  namespace customization_util = chromeos::customization_wallpaper_util;
+  if (customization_util::ShouldUseCustomizedDefaultWallpaper()) {
     base::FilePath customized_default_small_path;
     base::FilePath customized_default_large_path;
-    if (util::GetCustomizedDefaultWallpaperPaths(
+    if (customization_util::GetCustomizedDefaultWallpaperPaths(
             &customized_default_small_path, &customized_default_large_path)) {
       wallpaper_controller_->SetCustomizedDefaultWallpaperPaths(
           customized_default_small_path, customized_default_large_path);
diff --git a/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc b/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
index 88b20d9..1ba34ee 100644
--- a/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer_ash_unittest.cc
@@ -101,7 +101,6 @@
 namespace {
 
 // Shorten identifiers to improve line wrapping.
-using util = WindowSizerTestUtil;
 const int kDesktopBorderSize = WindowSizer::kDesktopBorderSize;
 const int kMaximumWindowWidth = WindowSizer::kMaximumWindowWidth;
 const int kWindowTilePixels = WindowSizer::kWindowTilePixels;
@@ -128,9 +127,9 @@
 TEST_F(WindowSizerAshTest, DefaultSizeCase) {
   { // 4:3 monitor case, 1024x768, no taskbar
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize,
                   1024 - kDesktopBorderSize * 2, 768 - kDesktopBorderSize),
@@ -139,9 +138,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on bottom
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_bottom_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_bottom_work_area, gfx::Rect(), gfx::Rect(),
+        gfx::Rect(), DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kDesktopBorderSize, kDesktopBorderSize,
                         1024 - kDesktopBorderSize * 2,
                         taskbar_bottom_work_area.height() - kDesktopBorderSize),
@@ -150,9 +149,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_right_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_right_work_area, gfx::Rect(), gfx::Rect(),
+        gfx::Rect(), DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize,
                   taskbar_right_work_area.width() - kDesktopBorderSize * 2,
@@ -162,9 +161,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on left
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_left_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_left_work_area, gfx::Rect(), gfx::Rect(),
+        gfx::Rect(), DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(taskbar_left_work_area.x() + kDesktopBorderSize,
                         kDesktopBorderSize,
                         taskbar_left_work_area.width() - kDesktopBorderSize * 2,
@@ -174,9 +173,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on top
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_top_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_top_work_area, gfx::Rect(), gfx::Rect(), gfx::Rect(),
+        DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kDesktopBorderSize,
                         taskbar_top_work_area.y() + kDesktopBorderSize,
                         1024 - kDesktopBorderSize * 2,
@@ -186,9 +185,9 @@
 
   { // 4:3 monitor case, 1280x1024
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1280x1024, p1280x1024, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1280x1024, p1280x1024, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect((1280 - kMaximumWindowWidth) / 2, kDesktopBorderSize,
                         kMaximumWindowWidth, 1024 - kDesktopBorderSize),
               window_bounds);
@@ -196,9 +195,9 @@
 
   { // 4:3 monitor case, 1600x1200
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect((1600 - kMaximumWindowWidth) / 2, kDesktopBorderSize,
                         kMaximumWindowWidth, 1200 - kDesktopBorderSize),
               window_bounds);
@@ -206,9 +205,9 @@
 
   { // 16:10 monitor case, 1680x1050
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1680x1050, p1680x1050, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1680x1050, p1680x1050, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect((1680 - kMaximumWindowWidth) / 2, kDesktopBorderSize,
                         kMaximumWindowWidth, 1050 - kDesktopBorderSize),
               window_bounds);
@@ -216,9 +215,9 @@
 
   { // 16:10 monitor case, 1920x1200
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1920x1200, p1920x1200, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1920x1200, p1920x1200, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect((1920 - kMaximumWindowWidth) / 2, kDesktopBorderSize,
                         kMaximumWindowWidth, 1200 - kDesktopBorderSize),
               window_bounds);
@@ -230,7 +229,7 @@
 TEST_F(WindowSizerAshTest, LastWindowBoundsCase) {
   { // normal, in the middle of the screen somewhere.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize, 500, 400),
         gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -242,7 +241,7 @@
 
   { // taskbar on top.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, taskbar_top_work_area, gfx::Rect(),
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize, 500, 400),
         gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -256,7 +255,7 @@
 
   { // Too small to satisify the minimum visibility condition.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize, 29, 29), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -270,7 +269,7 @@
 
   { // Normal.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize, 500, 400),
         gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -284,7 +283,7 @@
 TEST_F(WindowSizerAshTest, LastWindowOffscreenWithNonAggressiveRepositioning) {
   { // taskbar on left.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, taskbar_left_work_area, gfx::Rect(),
         gfx::Rect(kDesktopBorderSize, kDesktopBorderSize, 500, 400),
         gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -297,9 +296,9 @@
   { // offset would put the new window offscreen at the bottom but the minimum
     // visibility condition is barely satisfied without relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(10, 728, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(10, 728, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels, 738, 500, 400).ToString(),
               window_bounds.ToString());
   }
@@ -307,9 +306,9 @@
   { // offset would put the new window offscreen at the bottom and the minimum
     // visibility condition is satisified by relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(10, 729, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(10, 729, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels,
                         738 /* not 739 */,
                         500,
@@ -320,9 +319,9 @@
   { // offset would put the new window offscreen at the right but the minimum
     // visibility condition is barely satisfied without relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(984, 10, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(984, 10, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994, 10 + kWindowTilePixels, 500, 400).ToString(),
               window_bounds.ToString());
   }
@@ -330,9 +329,9 @@
   { // offset would put the new window offscreen at the right and the minimum
     // visibility condition is satisified by relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(985, 10, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(985, 10, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */,
                         10 + kWindowTilePixels,
                         500,
@@ -343,9 +342,9 @@
   { // offset would put the new window offscreen at the bottom right and the
     // minimum visibility condition is satisified by relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(985, 729, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(985, 729, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */,
                         738 /* not 739 */,
                         500,
@@ -356,7 +355,8 @@
 
 // Test the placement of newly created windows.
 TEST_F(WindowSizerAshTest, PlaceNewWindows) {
-  // Create a browser to pass into the util::GetWindowBounds function.
+  // Create a browser to pass into the WindowSizerTestUtil::GetWindowBounds
+  // function.
   Browser::CreateParams native_params(&profile_, true);
   auto browser = CreateWindowlessBrowser(native_params);
 
@@ -380,28 +380,28 @@
     Browser::CreateParams params_popup(Browser::TYPE_POPUP, &profile_, true);
     auto new_popup = CreateWindowlessBrowser(params_popup);
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
-                          gfx::Rect(50, 100, 300, 150), bottom_s1600x1200,
-                          PERSISTED, new_popup.get(), gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1600x1200, p1600x1200, gfx::Rect(), gfx::Rect(50, 100, 300, 150),
+        bottom_s1600x1200, PERSISTED, new_popup.get(), gfx::Rect(),
+        &window_bounds);
     EXPECT_EQ("50,100 300x150", window_bounds.ToString());
   }
 
   browser_window->Hide();
   { // If a window is there but not shown the persisted default should be used.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
-                          gfx::Rect(50, 100, 300, 150), bottom_s1600x1200,
-                          PERSISTED, browser.get(), gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1600x1200, p1600x1200, gfx::Rect(), gfx::Rect(50, 100, 300, 150),
+        bottom_s1600x1200, PERSISTED, browser.get(), gfx::Rect(),
+        &window_bounds);
     EXPECT_EQ("50,100 300x150", window_bounds.ToString());
   }
 
   { // If a window is there but not shown the default should be returned.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(), gfx::Rect(),
-                          bottom_s1600x1200, DEFAULT, browser.get(),
-                          gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1600x1200, p1600x1200, gfx::Rect(), gfx::Rect(), bottom_s1600x1200,
+        DEFAULT, browser.get(), gfx::Rect(), &window_bounds);
     // Note: We need to also take the defaults maximum width into account here
     // since that might get used if the resolution is too big.
     EXPECT_EQ(
@@ -682,7 +682,8 @@
 }
 
 TEST_F(WindowSizerAshTest, DefaultStateBecomesMaximized) {
-  // Create a browser to pass into the util::GetWindowBounds function.
+  // Create a browser to pass into the WindowSizerTestUtil::GetWindowBounds
+  // function.
   Browser::CreateParams native_params(&profile_, true);
   auto browser = CreateWindowlessBrowser(native_params);
 
diff --git a/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc b/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc
index 91343898..3f1a075 100644
--- a/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer_common_unittest.cc
@@ -24,8 +24,6 @@
 
 namespace {
 
-using util = WindowSizerTestUtil;
-
 class TestScreen : public display::ScreenBase {
  public:
   TestScreen() : previous_screen_(display::Screen::GetScreen()) {
@@ -135,27 +133,27 @@
     gfx::Rect initial_bounds(-470, 50, 500, 400);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
   { // off the left and the minimum visibility condition is satisfied by
     // relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-471, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-471, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(-470 /* not -471 */, 50, 500, 400).ToString(),
               window_bounds.ToString());
   }
 
   { // off the top
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, -370, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, -370, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("50,0 500x400", window_bounds.ToString());
   }
 
@@ -164,18 +162,18 @@
     gfx::Rect initial_bounds(994, 50, 500, 400);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
   { // off the right and the minimum visibility condition is satisified by
     // relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(995, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(995, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */, 50, 500, 400).ToString(),
               window_bounds.ToString());
   }
@@ -185,27 +183,27 @@
     gfx::Rect initial_bounds(50, 738, 500, 400);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
   { // off the bottom and the minimum visibility condition is satisified by
     // relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, 739, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, 739, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 738 /* not 739 */, 500, 400).ToString(),
               window_bounds.ToString());
   }
 
   { // off the topleft
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-471, -371, 500, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-471, -371, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(-470 /* not -471 */, 0, 500, 400).ToString(),
               window_bounds.ToString());
   }
@@ -213,9 +211,9 @@
   { // off the topright and the minimum visibility condition is satisified by
     // relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(995, -371, 500, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(995, -371, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */, 0, 500, 400).ToString(),
               window_bounds.ToString());
   }
@@ -223,9 +221,9 @@
   { // off the bottomleft and the minimum visibility condition is satisified by
     // relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-471, 739, 500, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-471, 739, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(-470 /* not -471 */,
                         738 /* not 739 */,
                         500,
@@ -236,9 +234,9 @@
   { // off the bottomright and the minimum visibility condition is satisified by
     // relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(995, 739, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(995, 739, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */,
                         738 /* not 739 */,
                         500,
@@ -248,68 +246,68 @@
 
   { // entirely off left
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-700, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-700, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(-470 /* not -700 */, 50, 500, 400).ToString(),
               window_bounds.ToString());
   }
 
   { // entirely off left (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-700, 50, 500, 400), left_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-700, 50, 500, 400),
+        left_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("0,50 500x400", window_bounds.ToString());
   }
 
   { // entirely off top
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, -500, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, -500, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("50,0 500x400", window_bounds.ToString());
   }
 
   { // entirely off top (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, -500, 500, 400), top_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, -500, 500, 400),
+        top_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("50,0 500x400", window_bounds.ToString());
   }
 
   { // entirely off right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(1200, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(1200, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 1200 */, 50, 500, 400).ToString(),
               window_bounds.ToString());
   }
 
   { // entirely off right (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(1200, 50, 500, 400), right_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(1200, 50, 500, 400),
+        right_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("524,50 500x400", window_bounds.ToString());
   }
 
   { // entirely off bottom
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, 800, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, 800, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 738 /* not 800 */, 500, 400).ToString(),
               window_bounds.ToString());
   }
 
   { // entirely off bottom (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, 800, 500, 400), bottom_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, 800, 500, 400),
+        bottom_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("50,368 500x400", window_bounds.ToString());
   }
 }
@@ -320,7 +318,7 @@
 TEST(WindowSizerTestCommon, AdjustFitSize) {
   { // Check that the window gets resized to the screen.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(), gfx::Rect(), gfx::Rect(), DEFAULT,
         NULL, gfx::Rect(-10, -10, 1024 + 20, 768 + 20), &window_bounds);
     EXPECT_EQ("0,0 1024x768", window_bounds.ToString());
@@ -328,9 +326,9 @@
 
   { // Check that a window which hangs out of the screen get moved back in.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL,
-                          gfx::Rect(1020, 700, 100, 100), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(), gfx::Rect(), DEFAULT,
+        NULL, gfx::Rect(1020, 700, 100, 100), &window_bounds);
     EXPECT_EQ("924,668 100x100", window_bounds.ToString());
   }
 }
diff --git a/chrome/browser/ui/window_sizer/window_sizer_unittest.cc b/chrome/browser/ui/window_sizer/window_sizer_unittest.cc
index f6d5b39..1a29a1a 100644
--- a/chrome/browser/ui/window_sizer/window_sizer_unittest.cc
+++ b/chrome/browser/ui/window_sizer/window_sizer_unittest.cc
@@ -9,7 +9,6 @@
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
-using util = WindowSizerTestUtil;
 const int kWindowTilePixels = WindowSizer::kWindowTilePixels;
 }
 
@@ -18,9 +17,9 @@
 TEST(WindowSizerTest, DefaultSizeCase) {
   { // 4:3 monitor case, 1024x768, no taskbar
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         1024 - kWindowTilePixels * 2,
                         768 - kWindowTilePixels * 2),
@@ -29,9 +28,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on bottom
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_bottom_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_bottom_work_area, gfx::Rect(), gfx::Rect(),
+        gfx::Rect(), DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         1024 - kWindowTilePixels * 2,
                         (taskbar_bottom_work_area.height() -
@@ -41,9 +40,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_right_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_right_work_area, gfx::Rect(), gfx::Rect(),
+        gfx::Rect(), DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         taskbar_right_work_area.width() - kWindowTilePixels*2,
                         768 - kWindowTilePixels * 2),
@@ -52,9 +51,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on left
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_left_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_left_work_area, gfx::Rect(), gfx::Rect(),
+        gfx::Rect(), DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(taskbar_left_work_area.x() + kWindowTilePixels,
                         kWindowTilePixels,
                         taskbar_left_work_area.width() - kWindowTilePixels * 2,
@@ -65,9 +64,9 @@
 
   { // 4:3 monitor case, 1024x768, taskbar on top
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, taskbar_top_work_area, gfx::Rect(),
-                          gfx::Rect(), gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, taskbar_top_work_area, gfx::Rect(), gfx::Rect(), gfx::Rect(),
+        DEFAULT, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels,
                         taskbar_top_work_area.y() + kWindowTilePixels,
                         1024 - kWindowTilePixels * 2,
@@ -77,9 +76,9 @@
 
   { // 4:3 monitor case, 1280x1024
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1280x1024, p1280x1024, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1280x1024, p1280x1024, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         WindowSizer::kWindowMaxDefaultWidth,
                         1024 - kWindowTilePixels * 2),
@@ -88,9 +87,9 @@
 
   { // 4:3 monitor case, 1600x1200
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1600x1200, p1600x1200, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         WindowSizer::kWindowMaxDefaultWidth,
                         1200 - kWindowTilePixels * 2),
@@ -109,9 +108,9 @@
         window_width / 2 - static_cast<int>(kWindowTilePixels * 1.5);
 #endif  // defined(OS_MACOSX)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1680x1050, p1680x1050, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1680x1050, p1680x1050, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         expected_window_width, 1050 - kWindowTilePixels * 2),
               window_bounds);
@@ -129,9 +128,9 @@
         window_width / 2 - static_cast<int>(kWindowTilePixels * 1.5);
 #endif  // defined(OS_MACOSX)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1920x1200, p1920x1200, gfx::Rect(), gfx::Rect(),
-                          gfx::Rect(), DEFAULT, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1920x1200, p1920x1200, gfx::Rect(),
+                                         gfx::Rect(), gfx::Rect(), DEFAULT,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(kWindowTilePixels, kWindowTilePixels,
                         expected_window_width, 1200 - kWindowTilePixels * 2),
               window_bounds);
@@ -143,7 +142,7 @@
 TEST(WindowSizerTest, LastWindowBoundsCase) {
   { // normal, in the middle of the screen somewhere.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 500, 400), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -153,7 +152,7 @@
 
   { // taskbar on top.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, taskbar_top_work_area, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 500, 400), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -165,7 +164,7 @@
 
   { // Too small to satisify the minimum visibility condition.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 29, 29), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -179,7 +178,7 @@
 
   { // Normal.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 500, 400), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -194,9 +193,9 @@
     gfx::Rect initial_bounds(kWindowTilePixels, kWindowTilePixels, 500, 400);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
@@ -204,9 +203,9 @@
     gfx::Rect initial_bounds(0, 0, 1024, 768);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(), initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
@@ -214,9 +213,9 @@
     gfx::Rect initial_bounds(-600, 10, 500, 400);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, left_s1024x768, initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, left_s1024x768,
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
@@ -224,9 +223,9 @@
     gfx::Rect initial_bounds(-1024, 0, 1024, 768);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, left_s1024x768, initial_bounds,
-                          gfx::Rect(), PERSISTED, NULL, gfx::Rect(),
-                          &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(p1024x768, p1024x768, left_s1024x768,
+                                         initial_bounds, gfx::Rect(), PERSISTED,
+                                         NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
@@ -236,9 +235,9 @@
     gfx::Rect initial_bounds(1074, 50, 600, 500);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(1024, 0, 800, 600),
-                          initial_bounds, right_s1024x768, PERSISTED, NULL,
-                          gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(1024, 0, 800, 600), initial_bounds,
+        right_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(initial_bounds.ToString(), window_bounds.ToString());
   }
 
@@ -248,9 +247,9 @@
     gfx::Rect initial_bounds(1274, 50, 600, 500);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(1024, 0, 800, 600),
-                          initial_bounds, right_s1024x768, PERSISTED, NULL,
-                          gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(1024, 0, 800, 600), initial_bounds,
+        right_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("1224,50 600x500", window_bounds.ToString());
   }
 
@@ -260,15 +259,15 @@
     gfx::Rect initial_bounds(1274, 50, 900, 700);
 
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(1024, 0, 800, 600),
-                          initial_bounds, right_s1024x768, PERSISTED, NULL,
-                          gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(1024, 0, 800, 600), initial_bounds,
+        right_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ("1024,0 800x600", window_bounds.ToString());
   }
 
   { // width and height too small
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 29, 29), gfx::Rect(),
         PERSISTED, NULL, gfx::Rect(), &window_bounds);
@@ -283,7 +282,7 @@
     // be moved higher than the menubar.  (Perhaps the user changed
     // resolution to something smaller before relaunching Chrome?)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, p1024x768, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 30, 5000), gfx::Rect(),
         PERSISTED, NULL, gfx::Rect(), &window_bounds);
@@ -303,7 +302,7 @@
   { // taskbar on left.  The new window overlaps slightly with the taskbar, so
     // it is moved to be flush with the left edge of the work area.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, taskbar_left_work_area, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 500, 400), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -313,9 +312,9 @@
 
   { // offset would put the new window offscreen at the bottom
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(10, 729, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(10, 729, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels,
                         0 /* not 729 + kWindowTilePixels */,
                         500, 400),
@@ -324,9 +323,9 @@
 
   { // offset would put the new window offscreen at the right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(985, 10, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(985, 10, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not 985 + kWindowTilePixels*/,
                         10 + kWindowTilePixels,
                         500, 400),
@@ -335,9 +334,9 @@
 
   { // offset would put the new window offscreen at the bottom right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(985, 729, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(985, 729, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not 985 + kWindowTilePixels*/,
                         0 /* not 729 + kWindowTilePixels*/,
                         500, 400),
@@ -348,141 +347,141 @@
 TEST(WindowSizerTest, PersistedWindowOffscreenWithAggressiveRepositioning) {
   { // off the left
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-471, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-471, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not -471 */, 50, 500, 400), window_bounds);
   }
 
   { // off the top
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, -370, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, -370, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 0, 500, 400), window_bounds);
   }
 
   { // off the right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(995, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(995, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not 995 */, 50, 500, 400), window_bounds);
   }
 
   { // off the bottom
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, 739, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, 739, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 0 /* not 739 */, 500, 400), window_bounds);
   }
 
   { // off the topleft
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-471, -371, 500, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-471, -371, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not -471 */, 0 /* not -371 */, 500, 400),
               window_bounds);
   }
 
   { // off the topright
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(995, -371, 500, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(995, -371, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not 995 */, 0 /* not -371 */, 500, 400),
                         window_bounds);
   }
 
   { // off the bottomleft
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-471, 739, 500, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-471, 739, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not -471 */, 0 /* not 739 */, 500, 400),
                         window_bounds);
   }
 
   { // off the bottomright
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(995, 739, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(995, 739, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not 995 */, 0 /* not 739 */, 500, 400),
                         window_bounds);
   }
 
   { // entirely off left
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-700, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-700, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not -700 */, 50, 500, 400), window_bounds);
   }
 
   { // entirely off left (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-700, 50, 500, 400), left_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-700, 50, 500, 400),
+        left_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0, 50, 500, 400), window_bounds);
   }
 
   { // entirely off top
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, -500, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, -500, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 0, 500, 400), window_bounds);
   }
 
   { // entirely off top (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, -500, 500, 400), top_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, -500, 500, 400),
+        top_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 0, 500, 400), window_bounds);
   }
 
   { // entirely off right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(1200, 50, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(1200, 50, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not 1200 */, 50, 500, 400), window_bounds);
   }
 
   { // entirely off right (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(1200, 50, 500, 400), right_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(1200, 50, 500, 400),
+        right_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(524 /* not 1200 */, 50, 500, 400), window_bounds);
   }
 
   { // entirely off bottom
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, 800, 500, 400), gfx::Rect(), PERSISTED,
-                          NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, 800, 500, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 0 /* not 800 */, 500, 400), window_bounds);
   }
 
   { // entirely off bottom (monitor was detached since last run)
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(50, 800, 500, 400), bottom_s1024x768,
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(50, 800, 500, 400),
+        bottom_s1024x768, PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(50, 368 /* not 800 */, 500, 400), window_bounds);
   }
 
   { // wider than the screen. off both the left and right
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(-100, 50, 2000, 400), gfx::Rect(),
-                          PERSISTED, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(-100, 50, 2000, 400),
+        gfx::Rect(), PERSISTED, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(0 /* not -100 */, 50, 2000, 400), window_bounds);
   }
 }
@@ -490,7 +489,7 @@
 TEST(WindowSizerTest, LastWindowOffscreenWithNonAggressiveRepositioning) {
   { // taskbar on left.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(
+    WindowSizerTestUtil::GetWindowBounds(
         p1024x768, taskbar_left_work_area, gfx::Rect(),
         gfx::Rect(kWindowTilePixels, kWindowTilePixels, 500, 400), gfx::Rect(),
         LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
@@ -503,9 +502,9 @@
   { // offset would put the new window offscreen at the bottom but the minimum
     // visibility condition is barely satisfied without relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(10, 728, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(10, 728, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels, 738,
                         500, 400), window_bounds);
   }
@@ -513,9 +512,9 @@
   { // offset would put the new window offscreen at the bottom and the minimum
     // visibility condition is satisified by relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(10, 729, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(10, 729, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(10 + kWindowTilePixels, 738 /* not 739 */, 500, 400),
               window_bounds);
   }
@@ -523,18 +522,18 @@
   { // offset would put the new window offscreen at the right but the minimum
     // visibility condition is barely satisfied without relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(984, 10, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(984, 10, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994, 10 + kWindowTilePixels, 500, 400), window_bounds);
   }
 
   { // offset would put the new window offscreen at the right and the minimum
     // visibility condition is satisified by relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(985, 10, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(985, 10, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */, 10 + kWindowTilePixels,
                         500, 400), window_bounds);
   }
@@ -542,9 +541,9 @@
   { // offset would put the new window offscreen at the bottom right and the
     // minimum visibility condition is satisified by relocation.
     gfx::Rect window_bounds;
-    util::GetWindowBounds(p1024x768, p1024x768, gfx::Rect(),
-                          gfx::Rect(985, 729, 500, 400), gfx::Rect(),
-                          LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
+    WindowSizerTestUtil::GetWindowBounds(
+        p1024x768, p1024x768, gfx::Rect(), gfx::Rect(985, 729, 500, 400),
+        gfx::Rect(), LAST_ACTIVE, NULL, gfx::Rect(), &window_bounds);
     EXPECT_EQ(gfx::Rect(994 /* not 995 */, 738 /* not 739 */, 500, 400),
               window_bounds);
   }
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index dcb8773..79d85fc 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -229,6 +229,7 @@
 
   public_deps = [
     ":accessibility_buildflags",
+    "//base/util/type-safety",
     "//ipc",
     "//media/mojo/interfaces:remoting",
     "//third_party/blink/public/mojom:embedded_frame_sink_mojo_bindings",
diff --git a/content/browser/download/save_types.h b/content/browser/download/save_types.h
index 20c8089..77fdf8c 100644
--- a/content/browser/download/save_types.h
+++ b/content/browser/download/save_types.h
@@ -13,16 +13,16 @@
 #include <vector>
 
 #include "base/files/file_path.h"
-#include "gpu/command_buffer/common/id_type.h"
+#include "base/util/type-safety/id_type.h"
 #include "url/gurl.h"
 
 namespace content {
 
 class SavePackage;
-using SavePackageId = gpu::IdType32<SavePackage>;
+using SavePackageId = util::IdType32<SavePackage>;
 
 class SaveItem;
-using SaveItemId = gpu::IdType32<SaveItem>;
+using SaveItemId = util::IdType32<SaveItem>;
 
 // Map from save_item_id into final file path.
 using FinalNamesMap =
diff --git a/content/browser/isolation_context.h b/content/browser/isolation_context.h
index e91a20b..82f69d0 100644
--- a/content/browser/isolation_context.h
+++ b/content/browser/isolation_context.h
@@ -6,14 +6,14 @@
 #define CONTENT_BROWSER_ISOLATION_CONTEXT_H_
 
 #include "base/optional.h"
+#include "base/util/type-safety/id_type.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/browser_or_resource_context.h"
-#include "gpu/command_buffer/common/id_type.h"
 
 namespace content {
 
 class BrowsingInstance;
-using BrowsingInstanceId = gpu::IdType32<BrowsingInstance>;
+using BrowsingInstanceId = util::IdType32<BrowsingInstance>;
 
 // This class is used to specify the context in which process model decisions
 // need to be made.  For example, dynamically added isolated origins only take
diff --git a/extensions/browser/api/storage/storage_frontend_unittest.cc b/extensions/browser/api/storage/storage_frontend_unittest.cc
index eb204de..3da66c8 100644
--- a/extensions/browser/api/storage/storage_frontend_unittest.cc
+++ b/extensions/browser/api/storage/storage_frontend_unittest.cc
@@ -24,7 +24,6 @@
 namespace extensions {
 
 namespace settings = settings_namespace;
-namespace util = settings_test_util;
 
 namespace {
 
@@ -84,10 +83,11 @@
 TEST_F(ExtensionSettingsFrontendTest, SettingsPreservedAcrossReconstruction) {
   const std::string id = "ext";
   scoped_refptr<const Extension> extension =
-      util::AddExtensionWithId(browser_context(), id, Manifest::TYPE_EXTENSION);
+      settings_test_util::AddExtensionWithId(browser_context(), id,
+                                             Manifest::TYPE_EXTENSION);
 
-  ValueStore* storage =
-      util::GetStorage(extension, settings::LOCAL, frontend_.get());
+  ValueStore* storage = settings_test_util::GetStorage(
+      extension, settings::LOCAL, frontend_.get());
 
   // The correctness of Get/Set/Remove/Clear is tested elsewhere so no need to
   // be too rigorous.
@@ -104,7 +104,8 @@
   }
 
   ResetFrontend();
-  storage = util::GetStorage(extension, settings::LOCAL, frontend_.get());
+  storage = settings_test_util::GetStorage(extension, settings::LOCAL,
+                                           frontend_.get());
 
   {
     ValueStore::ReadResult result = storage->Get();
@@ -115,11 +116,12 @@
 
 TEST_F(ExtensionSettingsFrontendTest, SettingsClearedOnUninstall) {
   const std::string id = "ext";
-  scoped_refptr<const Extension> extension = util::AddExtensionWithId(
-      browser_context(), id, Manifest::TYPE_LEGACY_PACKAGED_APP);
+  scoped_refptr<const Extension> extension =
+      settings_test_util::AddExtensionWithId(
+          browser_context(), id, Manifest::TYPE_LEGACY_PACKAGED_APP);
 
-  ValueStore* storage =
-      util::GetStorage(extension, settings::LOCAL, frontend_.get());
+  ValueStore* storage = settings_test_util::GetStorage(
+      extension, settings::LOCAL, frontend_.get());
 
   {
     base::Value bar("bar");
@@ -132,7 +134,8 @@
   content::RunAllTasksUntilIdle();
 
   // The storage area may no longer be valid post-uninstall, so re-request.
-  storage = util::GetStorage(extension, settings::LOCAL, frontend_.get());
+  storage = settings_test_util::GetStorage(extension, settings::LOCAL,
+                                           frontend_.get());
   {
     ValueStore::ReadResult result = storage->Get();
     ASSERT_TRUE(result.status().ok());
@@ -143,10 +146,11 @@
 TEST_F(ExtensionSettingsFrontendTest, LeveldbDatabaseDeletedFromDiskOnClear) {
   const std::string id = "ext";
   scoped_refptr<const Extension> extension =
-      util::AddExtensionWithId(browser_context(), id, Manifest::TYPE_EXTENSION);
+      settings_test_util::AddExtensionWithId(browser_context(), id,
+                                             Manifest::TYPE_EXTENSION);
 
-  ValueStore* storage =
-      util::GetStorage(extension, settings::LOCAL, frontend_.get());
+  ValueStore* storage = settings_test_util::GetStorage(
+      extension, settings::LOCAL, frontend_.get());
 
   {
     base::Value bar("bar");
@@ -176,15 +180,16 @@
        DISABLED_QuotaLimitsEnforcedCorrectlyForSyncAndLocal) {
   const std::string id = "ext";
   scoped_refptr<const Extension> extension =
-      util::AddExtensionWithId(browser_context(), id, Manifest::TYPE_EXTENSION);
+      settings_test_util::AddExtensionWithId(browser_context(), id,
+                                             Manifest::TYPE_EXTENSION);
 
-  ValueStore* sync_storage =
-      util::GetStorage(extension, settings::SYNC, frontend_.get());
-  ValueStore* local_storage =
-      util::GetStorage(extension, settings::LOCAL, frontend_.get());
+  ValueStore* sync_storage = settings_test_util::GetStorage(
+      extension, settings::SYNC, frontend_.get());
+  ValueStore* local_storage = settings_test_util::GetStorage(
+      extension, settings::LOCAL, frontend_.get());
 
   // Sync storage should run out after ~100K.
-  std::unique_ptr<base::Value> kilobyte = util::CreateKilobyte();
+  std::unique_ptr<base::Value> kilobyte = settings_test_util::CreateKilobyte();
   for (int i = 0; i < 100; ++i) {
     sync_storage->Set(DEFAULTS, base::NumberToString(i), *kilobyte);
   }
@@ -201,7 +206,7 @@
       local_storage->Set(DEFAULTS, "WontError", *kilobyte).status().ok());
 
   // Local storage should run out after ~5MB.
-  std::unique_ptr<base::Value> megabyte = util::CreateMegabyte();
+  std::unique_ptr<base::Value> megabyte = settings_test_util::CreateMegabyte();
   for (int i = 0; i < 5; ++i) {
     local_storage->Set(DEFAULTS, base::NumberToString(i), *megabyte);
   }
diff --git a/gpu/BUILD.gn b/gpu/BUILD.gn
index 91b97b6b..19ef376 100644
--- a/gpu/BUILD.gn
+++ b/gpu/BUILD.gn
@@ -363,7 +363,6 @@
     "command_buffer/common/gles2_cmd_format_test_autogen.h",
     "command_buffer/common/gles2_cmd_utils_unittest.cc",
     "command_buffer/common/id_allocator_test.cc",
-    "command_buffer/common/id_type_unittest.cc",
     "command_buffer/common/raster_cmd_format_test.cc",
     "command_buffer/common/raster_cmd_format_test_autogen.h",
     "command_buffer/common/unittest_main.cc",
diff --git a/gpu/command_buffer/common/BUILD.gn b/gpu/command_buffer/common/BUILD.gn
index 260d231..16b7de08 100644
--- a/gpu/command_buffer/common/BUILD.gn
+++ b/gpu/command_buffer/common/BUILD.gn
@@ -82,7 +82,6 @@
     "gpu_memory_buffer_support.h",
     "id_allocator.cc",
     "id_allocator.h",
-    "id_type.h",
     "mailbox.cc",
     "mailbox.h",
     "mailbox_holder.cc",
@@ -107,6 +106,7 @@
   configs += [ "//gpu:gpu_implementation" ]
 
   public_deps = [
+    "//base/util/type-safety",
     "//mojo/public/cpp/system",
     "//ui/gfx:memory_buffer",
     "//ui/gfx/geometry",
diff --git a/gpu/command_buffer/common/command_buffer_id.h b/gpu/command_buffer/common/command_buffer_id.h
index 99b5bb8..26a2995 100644
--- a/gpu/command_buffer/common/command_buffer_id.h
+++ b/gpu/command_buffer/common/command_buffer_id.h
@@ -5,12 +5,12 @@
 #ifndef GPU_COMMAND_BUFFER_COMMON_COMMAND_BUFFER_ID_H_
 #define GPU_COMMAND_BUFFER_COMMON_COMMAND_BUFFER_ID_H_
 
-#include "gpu/command_buffer/common/id_type.h"
+#include "base/util/type-safety/id_type.h"
 
 namespace gpu {
 
 class CommandBuffer;
-using CommandBufferId = gpu::IdTypeU64<CommandBuffer>;
+using CommandBufferId = util::IdTypeU64<CommandBuffer>;
 
 }  // namespace gpu
 
diff --git a/gpu/command_buffer/common/discardable_handle.h b/gpu/command_buffer/common/discardable_handle.h
index 33f2d85..33eda35 100644
--- a/gpu/command_buffer/common/discardable_handle.h
+++ b/gpu/command_buffer/common/discardable_handle.h
@@ -6,7 +6,7 @@
 #define GPU_COMMAND_BUFFER_COMMON_DISCARDABLE_HANDLE_H_
 
 #include "base/memory/ref_counted.h"
-#include "gpu/command_buffer/common/id_type.h"
+#include "base/util/type-safety/id_type.h"
 #include "gpu/gpu_export.h"
 
 namespace gpu {
@@ -83,7 +83,7 @@
 // handle (via the constructor), and can Lock an existing handle.
 class GPU_EXPORT ClientDiscardableHandle : public DiscardableHandleBase {
  public:
-  using Id = IdType32<ClientDiscardableHandle>;
+  using Id = util::IdType32<ClientDiscardableHandle>;
 
   ClientDiscardableHandle();  // Constructs an invalid handle.
   ClientDiscardableHandle(scoped_refptr<Buffer> buffer,
diff --git a/gpu/command_buffer/service/BUILD.gn b/gpu/command_buffer/service/BUILD.gn
index ffe8b4b0..1bf32ca 100644
--- a/gpu/command_buffer/service/BUILD.gn
+++ b/gpu/command_buffer/service/BUILD.gn
@@ -79,6 +79,7 @@
   ]
 
   public_deps = [
+    "//base/util/type-safety",
     "//gpu/command_buffer/common:common_sources",
     "//url:url",
   ]
@@ -282,6 +283,7 @@
   include_dirs = [ "//third_party/mesa_headers" ]
 
   public_deps = [
+    "//base/util/type-safety",
     "//cc/paint",
     "//gpu/command_buffer/common",
     "//gpu/command_buffer/common:gles2_sources",
diff --git a/gpu/command_buffer/service/sequence_id.h b/gpu/command_buffer/service/sequence_id.h
index a2302c2..7f8db99 100644
--- a/gpu/command_buffer/service/sequence_id.h
+++ b/gpu/command_buffer/service/sequence_id.h
@@ -5,12 +5,12 @@
 #ifndef GPU_COMMAND_BUFFER_SERVICE_SEQUENCE_ID_H_
 #define GPU_COMMAND_BUFFER_SERVICE_SEQUENCE_ID_H_
 
-#include "gpu/command_buffer/common/id_type.h"
+#include "base/util/type-safety/id_type.h"
 
 namespace gpu {
 
 class SyncPointOrderData;
-using SequenceId = gpu::IdTypeU32<SyncPointOrderData>;
+using SequenceId = util::IdTypeU32<SyncPointOrderData>;
 
 }  // namespace gpu
 
diff --git a/gpu/ipc/common/gpu_command_buffer_traits.h b/gpu/ipc/common/gpu_command_buffer_traits.h
index 1dc4008..5b1ff5c 100644
--- a/gpu/ipc/common/gpu_command_buffer_traits.h
+++ b/gpu/ipc/common/gpu_command_buffer_traits.h
@@ -5,7 +5,6 @@
 #ifndef GPU_IPC_COMMON_GPU_COMMAND_BUFFER_TRAITS_H_
 #define GPU_IPC_COMMON_GPU_COMMAND_BUFFER_TRAITS_H_
 
-#include "gpu/command_buffer/common/id_type.h"
 #include "gpu/gpu_export.h"
 #include "gpu/ipc/common/gpu_command_buffer_traits_multi.h"
 #include "ipc/ipc_message_utils.h"
@@ -60,26 +59,6 @@
   static void Log(const param_type& p, std::string* l);
 };
 
-template <typename TypeMarker, typename WrappedType, WrappedType kInvalidValue>
-struct ParamTraits<gpu::IdType<TypeMarker, WrappedType, kInvalidValue>> {
-  using param_type = gpu::IdType<TypeMarker, WrappedType, kInvalidValue>;
-  static void Write(base::Pickle* m, const param_type& p) {
-    WriteParam(m, p.GetUnsafeValue());
-  }
-  static bool Read(const base::Pickle* m,
-                   base::PickleIterator* iter,
-                   param_type* r) {
-    WrappedType value;
-    if (!ReadParam(m, iter, &value))
-      return false;
-    *r = param_type::FromUnsafeValue(value);
-    return true;
-  }
-  static void Log(const param_type& p, std::string* l) {
-    LogParam(p.GetUnsafeValue(), l);
-  }
-};
-
 }  // namespace IPC
 
 #endif  // GPU_IPC_COMMON_GPU_COMMAND_BUFFER_TRAITS_H_
diff --git a/ipc/BUILD.gn b/ipc/BUILD.gn
index cb7e4a2..92265228 100644
--- a/ipc/BUILD.gn
+++ b/ipc/BUILD.gn
@@ -7,8 +7,8 @@
 import("//ipc/features.gni")
 import("//mojo/public/tools/bindings/mojom.gni")
 import("//testing/test.gni")
-import("//tools/ipc_fuzzer/ipc_fuzzer.gni")
 import("//third_party/protobuf/proto_library.gni")
+import("//tools/ipc_fuzzer/ipc_fuzzer.gni")
 
 buildflag_header("ipc_buildflags") {
   header = "ipc_buildflags.h"
@@ -88,6 +88,7 @@
     ":mojom",
     ":native_handle_type_converters",
     ":param_traits",
+    "//base/util/type-safety",
     "//mojo/public/cpp/base",
     "//mojo/public/cpp/bindings",
     "//mojo/public/cpp/system",
diff --git a/ipc/ipc_message_utils.h b/ipc/ipc_message_utils.h
index a1b58cd..4e28d4b0 100644
--- a/ipc/ipc_message_utils.h
+++ b/ipc/ipc_message_utils.h
@@ -35,6 +35,7 @@
 #include "base/strings/string16.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
+#include "base/util/type-safety/id_type.h"
 #include "build/build_config.h"
 #include "ipc/ipc_message_start.h"
 #include "ipc/ipc_param_traits.h"
@@ -1032,6 +1033,28 @@
   }
 };
 
+// base/util types ParamTraits
+
+template <typename TypeMarker, typename WrappedType, WrappedType kInvalidValue>
+struct ParamTraits<util::IdType<TypeMarker, WrappedType, kInvalidValue>> {
+  using param_type = util::IdType<TypeMarker, WrappedType, kInvalidValue>;
+  static void Write(base::Pickle* m, const param_type& p) {
+    WriteParam(m, p.GetUnsafeValue());
+  }
+  static bool Read(const base::Pickle* m,
+                   base::PickleIterator* iter,
+                   param_type* r) {
+    WrappedType value;
+    if (!ReadParam(m, iter, &value))
+      return false;
+    *r = param_type::FromUnsafeValue(value);
+    return true;
+  }
+  static void Log(const param_type& p, std::string* l) {
+    LogParam(p.GetUnsafeValue(), l);
+  }
+};
+
 // IPC types ParamTraits -------------------------------------------------------
 
 // A ChannelHandle is basically a platform-inspecific wrapper around the
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json
index 83f1bde..0e56d85 100644
--- a/testing/buildbot/chromium.android.json
+++ b/testing/buildbot/chromium.android.json
@@ -766,6 +766,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "KTU84P",
+              "device_type": "hammerhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -3356,6 +3399,50 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "KTU84Z",
+              "device_type": "flo",
+              "os": "Android"
+            }
+          ],
+          "expiration": 10800,
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -5969,6 +6056,50 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "LMY48I",
+              "device_type": "hammerhead",
+              "os": "Android"
+            }
+          ],
+          "expiration": 10800,
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -8770,6 +8901,50 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "LMY49B",
+              "device_type": "flo",
+              "os": "Android"
+            }
+          ],
+          "expiration": 10800,
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -11425,6 +11600,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "MMB29Q",
+              "device_type": "bullhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -14168,6 +14386,50 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "MRA58Z",
+              "device_type": "flo",
+              "os": "Android"
+            }
+          ],
+          "expiration": 10800,
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -18832,6 +19094,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "KTU84P",
+              "device_type": "hammerhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -21520,6 +21825,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "MMB29Q",
+              "device_type": "bullhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
diff --git a/testing/buildbot/chromium.chrome.json b/testing/buildbot/chromium.chrome.json
index 253f7e6..1753530 100644
--- a/testing/buildbot/chromium.chrome.json
+++ b/testing/buildbot/chromium.chrome.json
@@ -153,6 +153,23 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "experiment_percentage": 100,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04",
+              "pool": "chrome.tests"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json
index cd60a9e..a61afa9 100644
--- a/testing/buildbot/chromium.chromiumos.json
+++ b/testing/buildbot/chromium.chromiumos.json
@@ -722,6 +722,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -2311,6 +2326,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json
index 195cb080..5be3748 100644
--- a/testing/buildbot/chromium.clang.json
+++ b/testing/buildbot/chromium.clang.json
@@ -91,6 +91,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -1435,6 +1450,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -3032,6 +3063,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -4557,6 +4604,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "KTU84P",
+              "device_type": "hammerhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -7224,6 +7314,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "MMB29Q",
+              "device_type": "bullhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -9776,6 +9909,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -11154,6 +11302,24 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -12729,6 +12895,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -14066,6 +14247,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -15421,6 +15617,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -16759,6 +16970,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -18114,6 +18340,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -19426,6 +19667,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -20425,6 +20676,19 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -21431,6 +21695,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -22421,6 +22695,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -23432,6 +23716,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -24443,6 +24737,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -25490,6 +25794,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -27071,6 +27391,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -28652,6 +28988,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -30197,6 +30549,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -31208,6 +31570,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -32219,6 +32591,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -33230,6 +33612,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -34241,6 +34633,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -35282,6 +35684,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -36634,6 +37051,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Windows-10"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index bfaf61d..b7baddf 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -56,6 +56,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -2421,6 +2431,16 @@
         "swarming": {
           "can_use_on_swarming_builders": false
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": false
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -5847,6 +5867,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -6526,6 +6561,24 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--enable-blink-features=HeapConcurrentMarking"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -7319,6 +7372,24 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--enable-blink-features=HeapUnifiedGarbageCollection"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -8103,6 +8174,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -8885,6 +8971,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -10468,6 +10570,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -12022,6 +12140,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -13661,6 +13794,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -19141,6 +19290,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -20802,6 +20966,23 @@
           ],
           "expiration": 21600
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "8086:0a2e",
+              "os": "Mac-10.14.5"
+            }
+          ],
+          "expiration": 21600
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json
index fa43d56..b1c22ed 100644
--- a/testing/buildbot/chromium.linux.json
+++ b/testing/buildbot/chromium.linux.json
@@ -50,6 +50,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -807,6 +822,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -2163,6 +2193,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -3807,6 +3852,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -5405,6 +5465,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -6923,6 +6998,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -8737,6 +8828,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-16.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json
index 8f2bdac7..f6602a4 100644
--- a/testing/buildbot/chromium.mac.json
+++ b/testing/buildbot/chromium.mac.json
@@ -91,6 +91,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.10"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -1579,6 +1595,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.11"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -3067,6 +3099,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "8086:0a2e",
+              "os": "Mac-10.12.6"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -4600,6 +4648,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -6123,6 +6187,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -7615,6 +7695,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "none",
+              "os": "Mac-10.13.6"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json
index 642300e..a3686805 100644
--- a/testing/buildbot/chromium.memory.json
+++ b/testing/buildbot/chromium.memory.json
@@ -142,6 +142,49 @@
             "--bucket",
             "chromium-result-details",
             "--test-name",
+            "base_util_unittests"
+          ],
+          "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "cipd_packages": [
+            {
+              "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
+              "location": "bin",
+              "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c"
+            }
+          ],
+          "dimension_sets": [
+            {
+              "device_os": "MMB29Q",
+              "device_type": "bullhead",
+              "os": "Android"
+            }
+          ],
+          "output_links": [
+            {
+              "link": [
+                "https://luci-logdog.appspot.com/v/?s",
+                "=android%2Fswarming%2Flogcats%2F",
+                "${TASK_ID}%2F%2B%2Funified_logcats"
+              ],
+              "name": "shard #${SHARD_INDEX} logcats"
+            }
+          ]
+        },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--gs-results-bucket=chromium-result-details",
+          "--recover-devices"
+        ],
+        "merge": {
+          "args": [
+            "--bucket",
+            "chromium-result-details",
+            "--test-name",
             "blink_common_unittests"
           ],
           "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
@@ -2754,6 +2797,24 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -4409,6 +4470,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -5823,6 +5899,24 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -7572,6 +7666,25 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -9351,6 +9464,25 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -10997,6 +11129,24 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -12509,6 +12659,19 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "args": [
+          "--test-launcher-print-test-stdio=always"
+        ],
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -13654,6 +13817,21 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json
index a185fa8..d9b8915 100644
--- a/testing/buildbot/chromium.win.json
+++ b/testing/buildbot/chromium.win.json
@@ -88,6 +88,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -1296,6 +1306,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -3077,6 +3103,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "cpu": "x86-64",
+              "os": "Windows-10-15063"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -4894,6 +4936,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
@@ -6079,6 +6131,16 @@
         "swarming": {
           "can_use_on_swarming_builders": true
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/testing/buildbot/gn_isolate_map.pyl b/testing/buildbot/gn_isolate_map.pyl
index d34bf44..e503a66 100644
--- a/testing/buildbot/gn_isolate_map.pyl
+++ b/testing/buildbot/gn_isolate_map.pyl
@@ -268,6 +268,10 @@
     "label": "//base:base_unittests",
     "type": "console_test_launcher",
   },
+  "base_util_unittests": {
+    "label": "//base/util:base_util_unittests",
+    "type": "console_test_launcher",
+  },
   "bdict_fuzzer": {
     "label": "//third_party/hunspell:bdict_fuzzer",
     "type": "fuzzer",
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl
index 3191f61..ecffa93 100644
--- a/testing/buildbot/test_suites.pyl
+++ b/testing/buildbot/test_suites.pyl
@@ -2150,6 +2150,7 @@
     'chromium_gtests': {
       'angle_unittests': {},
       'base_unittests': {},
+      'base_util_unittests': {},
       'blink_common_unittests': {},
       'blink_heap_unittests': {},
       'blink_platform_unittests': {},
diff --git a/testing/buildbot/tryserver.chromium.linux.json b/testing/buildbot/tryserver.chromium.linux.json
index 354605b..b7ee03b 100644
--- a/testing/buildbot/tryserver.chromium.linux.json
+++ b/testing/buildbot/tryserver.chromium.linux.json
@@ -97,6 +97,22 @@
             }
           ]
         },
+        "test": "base_util_unittests"
+      },
+      {
+        "isolate_coverage_data": true,
+        "merge": {
+          "args": [],
+          "script": "//testing/merge_scripts/standard_gtest_merge.py"
+        },
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-14.04"
+            }
+          ]
+        },
         "test": "blink_common_unittests"
       },
       {
diff --git a/tools/ipc_fuzzer/fuzzer/BUILD.gn b/tools/ipc_fuzzer/fuzzer/BUILD.gn
index a1363d1..cb39a9a 100644
--- a/tools/ipc_fuzzer/fuzzer/BUILD.gn
+++ b/tools/ipc_fuzzer/fuzzer/BUILD.gn
@@ -19,6 +19,7 @@
     "rand_util.h",
   ]
   deps = [
+    "//base/util/type-safety",
     "//tools/ipc_fuzzer/message_lib:ipc_message_lib",
   ]
   public_deps = [
diff --git a/tools/ipc_fuzzer/fuzzer/fuzzer.cc b/tools/ipc_fuzzer/fuzzer/fuzzer.cc
index 12d284e5..2ccefca 100644
--- a/tools/ipc_fuzzer/fuzzer/fuzzer.cc
+++ b/tools/ipc_fuzzer/fuzzer/fuzzer.cc
@@ -15,6 +15,7 @@
 #include "base/stl_util.h"
 #include "base/strings/string_util.h"
 #include "base/unguessable_token.h"
+#include "base/util/type-safety/id_type.h"
 #include "base/values.h"
 #include "build/build_config.h"
 #include "ipc/ipc_message.h"
@@ -947,8 +948,8 @@
 };
 
 template <typename TypeMarker, typename WrappedType, WrappedType kInvalidValue>
-struct FuzzTraits<gpu::IdType<TypeMarker, WrappedType, kInvalidValue>> {
-  using param_type = gpu::IdType<TypeMarker, WrappedType, kInvalidValue>;
+struct FuzzTraits<util::IdType<TypeMarker, WrappedType, kInvalidValue>> {
+  using param_type = util::IdType<TypeMarker, WrappedType, kInvalidValue>;
   static bool Fuzz(param_type* id, Fuzzer* fuzzer) {
     WrappedType raw_value = id->GetUnsafeValue();
     if (!FuzzParam(&raw_value, fuzzer))