diff --git a/DEPS b/DEPS index db62c6c..f6fc11fc 100644 --- a/DEPS +++ b/DEPS
@@ -133,11 +133,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'b75be23bc485b3f87c7a2d3574ad5ec57c09ad51', + 'skia_revision': '62b501499a648a495c2c3a4a0d500639777b2bca', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': 'ba0df1167f22ea47aff1aef9cc9ebc44320fbe8b', + 'v8_revision': 'ea50a032a6e5e9c796e408bf2dafc14b767d9896', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling swarming_client # and whatever else without interference from each other. @@ -145,11 +145,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': 'fc0be0494ee791c1fa914dcd260e1d64c4b726e5', + 'angle_revision': '3089f92e8a772ec675ea8f70ec1abca91b6b79ae', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. - 'swiftshader_revision': '390d846c3e6c44c5e78e936c07902b2c6b1665cf', + 'swiftshader_revision': 'ac3a4a49bde9fdf764d4c4db659ad6b6ebd81da2', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. @@ -200,7 +200,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': 'b931deacdf624e10e33f8789de28f05e3ac56438', + 'catapult_revision': '5a34ef7bdaf7e88601764c191f6ea7002b99a805', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -276,7 +276,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'quiche_revision': '6cf4d2ab35b79479428d43a65b5211c2814d8747', + 'quiche_revision': '82d12d19ed7a93a1fe491c25e6e78ae289d45b9c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ios_webkit # and whatever else without interference from each other. @@ -806,7 +806,7 @@ # Build tools for Chrome OS. Note: This depends on third_party/pyelftools. 'src/third_party/chromite': { - 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + 'db2f00ebdbd640cccdf8ddf91b9995c009cfdc70', + 'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '61aa9d9fcdcc2022297f828c06402127dc309ed3', 'condition': 'checkout_linux', }, @@ -831,7 +831,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '867e3c9511394f5bb2f51f09278e5ccc773adc36', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '020b429fbf42915482a97b437a67b6e8398ca9fa', 'src/third_party/devtools-node-modules': Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'), @@ -1184,7 +1184,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '4ff1283572dfd0d120ebd63eebe1189b442db23b', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '3cefa2e3358b3fc2b75d97ee435025633bb8fc45', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + 'ac0d98b5cee6c024b0cffeb4f8f45b6fc5ccdb78', @@ -1355,7 +1355,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '6f0b34abee8dba611c253738d955c59f703c147a', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '2bb3e4315d8732b612dcac5f42b34c3f4261ef08', + Var('webrtc_git') + '/src.git' + '@' + 'a0421d3d0cd7fac9e178900cbd59f5a2006615a2', 'src/third_party/xdg-utils': { 'url': Var('chromium_git') + '/chromium/deps/xdg-utils.git' + '@' + 'd80274d5869b17b8c9067a1022e4416ee7ed5e0d', @@ -1396,7 +1396,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@754d7b73cd0385866900e072289aa6d6ffd17e13', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@37691666204f287346e6a6dc50e4182b29940c39', 'condition': 'checkout_src_internal', },
diff --git a/android_webview/browser/aw_web_contents_delegate.cc b/android_webview/browser/aw_web_contents_delegate.cc index 67de4ea..36fbb09b 100644 --- a/android_webview/browser/aw_web_contents_delegate.cc +++ b/android_webview/browser/aw_web_contents_delegate.cc
@@ -30,7 +30,7 @@ #include "content/public/browser/render_widget_host.h" #include "content/public/browser/web_contents.h" #include "jni/AwWebContentsDelegate_jni.h" -#include "net/base/escape.h" +#include "net/base/filename_util.h" #include "third_party/blink/public/common/mediastream/media_stream_request.h" using base::android::AttachCurrentThread; @@ -356,13 +356,13 @@ GURL url(file_path_str[i]); if (!url.is_valid()) continue; - base::FilePath path( - url.SchemeIsFile() - ? net::UnescapeURLComponent( - url.path(), net::UnescapeRule::SPACES | - net::UnescapeRule:: - URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS) - : file_path_str[i]); + base::FilePath path; + if (url.SchemeIsFile()) { + if (!net::FileURLToFilePath(url, &path)) + continue; + } else { + path = base::FilePath(file_path_str[i]); + } auto file_info = blink::mojom::NativeFileInfo::New(); file_info->file_path = path; if (!display_name_str[i].empty())
diff --git a/android_webview/browser/renderer_host/auto_login_parser.cc b/android_webview/browser/renderer_host/auto_login_parser.cc index 2dcd715..3d613e4 100644 --- a/android_webview/browser/renderer_host/auto_login_parser.cc +++ b/android_webview/browser/renderer_host/auto_login_parser.cc
@@ -54,10 +54,8 @@ ++it) { const std::string& key = it->first; const std::string& value = it->second; - std::string unescaped_value(net::UnescapeURLComponent( - value, - net::UnescapeRule::PATH_SEPARATORS | - net::UnescapeRule::URL_SPECIAL_CHARS_EXCEPT_PATH_SEPARATORS)); + std::string unescaped_value; + net::UnescapeBinaryURLComponent(value, &unescaped_value); if (key == "realm") { if (!MatchRealm(unescaped_value, realm_restriction)) return false;
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java b/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java index 7564020..adfa29c 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContentsClientBridge.java
@@ -280,7 +280,7 @@ String url, boolean isMainFrame, boolean hasUserGesture, boolean isRendererInitiated, String method, String[] requestHeaderNames, String[] requestHeaderValues, // WebResourceError - int errorCode, String description, boolean safebrowsingHit) { + @NetError int errorCode, String description, boolean safebrowsingHit) { AwContentsClient.AwWebResourceRequest request = new AwContentsClient.AwWebResourceRequest( url, isMainFrame, hasUserGesture, method, requestHeaderNames, requestHeaderValues); AwContentsClient.AwWebResourceError error = new AwContentsClient.AwWebResourceError();
diff --git a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java index 2c41a03..5870cf4 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java +++ b/android_webview/java/src/org/chromium/android_webview/AwWebContentsObserver.java
@@ -70,7 +70,7 @@ @Override public void didFailLoad( - boolean isMainFrame, int errorCode, String description, String failingUrl) { + boolean isMainFrame, @NetError int errorCode, String description, String failingUrl) { AwContentsClient client = mAwContentsClient.get(); if (client == null) return; String unreachableWebDataUrl = AwContentsStatics.getUnreachableWebDataUrl();
diff --git a/android_webview/java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java b/android_webview/java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java index 87c9ebe..e086b65 100644 --- a/android_webview/java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java +++ b/android_webview/java/src/org/chromium/android_webview/ErrorCodeConversionHelper.java
@@ -48,7 +48,7 @@ // Request was identified as a bad url by safebrowsing. public static final int ERROR_UNSAFE_RESOURCE = WebViewClient.ERROR_UNSAFE_RESOURCE; - static int convertErrorCode(int netError) { + static int convertErrorCode(@NetError int netError) { // Note: many NetError.Error constants don't have an obvious mapping. // These will be handled by the default case, ERROR_UNKNOWN. switch (netError) {
diff --git a/android_webview/java/src/org/chromium/android_webview/SslUtil.java b/android_webview/java/src/org/chromium/android_webview/SslUtil.java index 7355cbd2..d90270bd 100644 --- a/android_webview/java/src/org/chromium/android_webview/SslUtil.java +++ b/android_webview/java/src/org/chromium/android_webview/SslUtil.java
@@ -22,7 +22,8 @@ /** * Creates an SslError object from a chromium net error code. */ - public static SslError sslErrorFromNetErrorCode(int error, SslCertificate cert, String url) { + public static SslError sslErrorFromNetErrorCode( + @NetError int error, SslCertificate cert, String url) { assert (error >= NetError.ERR_CERT_END && error <= NetError.ERR_CERT_COMMON_NAME_INVALID); switch(error) { case NetError.ERR_CERT_COMMON_NAME_INVALID:
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 733ab4e..f03ec4e 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -1322,6 +1322,7 @@ "//ash/assistant/ui", "//ash/assistant/ui:constants", "//ash/assistant/util", + "//ash/autotest", "//ash/components/cursor", "//ash/components/fast_ink", "//ash/components/shortcut_viewer/public/mojom", @@ -1461,6 +1462,7 @@ ] allow_circular_includes_from = [ + "//ash/autotest", "//components/exo", "//components/exo/wayland", ]
diff --git a/ash/autotest/BUILD.gn b/ash/autotest/BUILD.gn new file mode 100644 index 0000000..25d4d7d --- /dev/null +++ b/ash/autotest/BUILD.gn
@@ -0,0 +1,19 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Only include files that are needed for JS autotest / integration tests. + +assert(is_chromeos) + +source_set("autotest") { + sources = [ + "shelf_integration_test_api.cc", + "shelf_integration_test_api.h", + ] + + deps = [ + "//ash/public/cpp", + "//base", + ] +}
diff --git a/ash/autotest/README.md b/ash/autotest/README.md new file mode 100644 index 0000000..110c07e --- /dev/null +++ b/ash/autotest/README.md
@@ -0,0 +1,6 @@ +Autotest +-------- +This directory contains files that are needed for JS autotest APIs, and/or any +other integration tests. +These files are part of release builds, but the API / Mojo service is only +enabled if the "--use-test-config" switch is passed to Chrome.
diff --git a/ash/autotest/shelf_integration_test_api.cc b/ash/autotest/shelf_integration_test_api.cc new file mode 100644 index 0000000..bf0057a --- /dev/null +++ b/ash/autotest/shelf_integration_test_api.cc
@@ -0,0 +1,72 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/autotest/shelf_integration_test_api.h" + +#include <memory> +#include <utility> + +#include "ash/root_window_controller.h" +#include "ash/shelf/shelf.h" +#include "ash/shell.h" +#include "mojo/public/cpp/bindings/strong_binding.h" + +namespace ash { + +namespace { + +// Returns the Shelf instance for the display with the given |display_id|. +Shelf* GetShelfForDisplay(int64_t display_id) { + // The controller may be null for invalid ids or for displays being removed. + RootWindowController* root_window_controller = + Shell::GetRootWindowControllerWithDisplayId(display_id); + return root_window_controller ? root_window_controller->shelf() : nullptr; +} +} // namespace + +ShelfIntegrationTestApi::ShelfIntegrationTestApi() = default; +ShelfIntegrationTestApi::~ShelfIntegrationTestApi() = default; + +// static +void ShelfIntegrationTestApi::BindRequest( + mojom::ShelfIntegrationTestApiRequest request) { + mojo::MakeStrongBinding(std::make_unique<ShelfIntegrationTestApi>(), + std::move(request)); +} + +void ShelfIntegrationTestApi::GetAutoHideBehavior( + int64_t display_id, + GetAutoHideBehaviorCallback callback) { + Shelf* shelf = GetShelfForDisplay(display_id); + DCHECK(shelf); + std::move(callback).Run(shelf->auto_hide_behavior()); +} + +void ShelfIntegrationTestApi::SetAutoHideBehavior( + int64_t display_id, + ShelfAutoHideBehavior behavior, + SetAutoHideBehaviorCallback callback) { + Shelf* shelf = GetShelfForDisplay(display_id); + DCHECK(shelf); + shelf->SetAutoHideBehavior(behavior); + std::move(callback).Run(); +} + +void ShelfIntegrationTestApi::GetAlignment(int64_t display_id, + GetAlignmentCallback callback) { + Shelf* shelf = GetShelfForDisplay(display_id); + DCHECK(shelf); + std::move(callback).Run(shelf->alignment()); +} + +void ShelfIntegrationTestApi::SetAlignment(int64_t display_id, + ShelfAlignment alignment, + SetAlignmentCallback callback) { + Shelf* shelf = GetShelfForDisplay(display_id); + DCHECK(shelf); + shelf->SetAlignment(alignment); + std::move(callback).Run(); +} + +} // namespace ash
diff --git a/ash/autotest/shelf_integration_test_api.h b/ash/autotest/shelf_integration_test_api.h new file mode 100644 index 0000000..07bef13 --- /dev/null +++ b/ash/autotest/shelf_integration_test_api.h
@@ -0,0 +1,42 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_AUTOTEST_SHELF_INTEGRATION_TEST_API_H_ +#define ASH_AUTOTEST_SHELF_INTEGRATION_TEST_API_H_ + +#include "ash/ash_export.h" +#include "ash/public/interfaces/shelf_integration_test_api.mojom.h" +#include "base/macros.h" + +namespace ash { + +// Allows tests to access private state of the shelf. +class ASH_EXPORT ShelfIntegrationTestApi + : public mojom::ShelfIntegrationTestApi { + public: + // Binds the mojom::ShelfIntegrationTestApiRequest interface request to this + // object. + static void BindRequest(mojom::ShelfIntegrationTestApiRequest request); + + ShelfIntegrationTestApi(); + ~ShelfIntegrationTestApi() override; + + // mojom::ShelfIntegrationTestApi: + void GetAutoHideBehavior(int64_t display_id, + GetAutoHideBehaviorCallback callback) override; + void SetAutoHideBehavior(int64_t display_id, + ShelfAutoHideBehavior behavior, + SetAutoHideBehaviorCallback callback) override; + void GetAlignment(int64_t display_id, GetAlignmentCallback callback) override; + void SetAlignment(int64_t display_id, + ShelfAlignment behavior, + SetAlignmentCallback callback) override; + + private: + DISALLOW_COPY_AND_ASSIGN(ShelfIntegrationTestApi); +}; + +} // namespace ash + +#endif // ASH_AUTOTEST_SHELF_INTEGRATION_TEST_API_H_
diff --git a/ash/login/login_screen_test_api.cc b/ash/login/login_screen_test_api.cc index 27229acb..b2018b1f 100644 --- a/ash/login/login_screen_test_api.cc +++ b/ash/login/login_screen_test_api.cc
@@ -213,6 +213,12 @@ std::move(callback).Run(view && view->SimulateAddUserButtonForTesting()); } +void LoginScreenTestApi::ClickGuestButton(ClickGuestButtonCallback callback) { + LoginShelfView* view = GetLoginShelfView(); + + std::move(callback).Run(view && view->SimulateGuestButtonForTesting()); +} + void LoginScreenTestApi::WaitForUiUpdate(int64_t previous_update_count, WaitForUiUpdateCallback callback) { LoginShelfView* view = GetLoginShelfView();
diff --git a/ash/login/login_screen_test_api.h b/ash/login/login_screen_test_api.h index 88fdfe9..249141d 100644 --- a/ash/login/login_screen_test_api.h +++ b/ash/login/login_screen_test_api.h
@@ -37,6 +37,7 @@ void LaunchApp(const std::string& app_id, LaunchAppCallback callback) override; void ClickAddUserButton(ClickAddUserButtonCallback callback) override; + void ClickGuestButton(ClickGuestButtonCallback callback) override; // This blocks until UI update number becomes greater than the // |previous_update_count|. Where |previous_update_count| presumably is // coming from GetUiUpdateCount(). This way test remembers the "current" UI
diff --git a/ash/mojo_interface_factory.cc b/ash/mojo_interface_factory.cc index f113ad3b..1add1f15 100644 --- a/ash/mojo_interface_factory.cc +++ b/ash/mojo_interface_factory.cc
@@ -15,6 +15,7 @@ #include "ash/assistant/assistant_notification_controller.h" #include "ash/assistant/assistant_screen_context_controller.h" #include "ash/assistant/assistant_setup_controller.h" +#include "ash/autotest/shelf_integration_test_api.h" #include "ash/cast_config_controller.h" #include "ash/custom_tab/arc_custom_tab_controller.h" #include "ash/display/ash_display_controller.h" @@ -51,9 +52,11 @@ #include "ash/wm/splitview/split_view_controller.h" #include "ash/wm/tablet_mode/tablet_mode_controller.h" #include "base/bind.h" +#include "base/command_line.h" #include "base/lazy_instance.h" #include "base/single_thread_task_runner.h" #include "chromeos/constants/chromeos_switches.h" +#include "services/ws/common/switches.h" #include "ui/keyboard/keyboard_controller.h" namespace ash { @@ -235,6 +238,11 @@ Shell::Get()->shelf_controller()->BindRequest(std::move(request)); } +void BindShelfIntegrationTestApiRequestOnMainThread( + mojom::ShelfIntegrationTestApiRequest request) { + ShelfIntegrationTestApi::BindRequest(std::move(request)); +} + void BindShutdownControllerRequestOnMainThread( mojom::ShutdownControllerRequest request) { Shell::Get()->shutdown_controller()->BindRequest(std::move(request)); @@ -404,6 +412,13 @@ registry->AddInterface(base::BindRepeating(&BindSplitViewRequestOnMainThread), main_thread_task_runner); + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + ws::switches::kUseTestConfig)) { + registry->AddInterface( + base::BindRepeating(&BindShelfIntegrationTestApiRequestOnMainThread), + main_thread_task_runner); + } + // Inject additional optional interfaces. if (g_register_interfaces_callback.Get()) { std::move(g_register_interfaces_callback.Get())
diff --git a/ash/public/cpp/manifest.cc b/ash/public/cpp/manifest.cc index 902003e..8e0d3ade 100644 --- a/ash/public/cpp/manifest.cc +++ b/ash/public/cpp/manifest.cc
@@ -34,6 +34,7 @@ #include "ash/public/interfaces/process_creation_time_recorder.mojom.h" #include "ash/public/interfaces/session_controller.mojom.h" #include "ash/public/interfaces/shelf.mojom.h" +#include "ash/public/interfaces/shelf_integration_test_api.mojom.h" #include "ash/public/interfaces/shutdown.mojom.h" #include "ash/public/interfaces/split_view.mojom.h" #include "ash/public/interfaces/system_tray.mojom.h" @@ -105,6 +106,8 @@ .ExposeCapability("display", service_manager::Manifest::InterfaceList< mojom::AshDisplayController, mojom::DisplayOutputProtection>()) + .ExposeCapability("test", service_manager::Manifest::InterfaceList< + mojom::ShelfIntegrationTestApi>()) .RequireCapability("*", "accessibility") .RequireCapability("*", "app") .RequireCapability(prefs::mojom::kLocalStateServiceName,
diff --git a/ash/public/cpp/shelf_integration_test_api_struct_mojom_traits.h b/ash/public/cpp/shelf_integration_test_api_struct_mojom_traits.h new file mode 100644 index 0000000..b045ad4b --- /dev/null +++ b/ash/public/cpp/shelf_integration_test_api_struct_mojom_traits.h
@@ -0,0 +1,88 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef ASH_PUBLIC_CPP_SHELF_INTEGRATION_TEST_API_STRUCT_MOJOM_TRAITS_H_ +#define ASH_PUBLIC_CPP_SHELF_INTEGRATION_TEST_API_STRUCT_MOJOM_TRAITS_H_ + +#include "ash/public/interfaces/shelf_integration_test_api.mojom-shared.h" + +namespace mojo { +template <> +struct EnumTraits<ash::mojom::ShelfAutoHideBehavior, + ash::ShelfAutoHideBehavior> { + static ash::mojom::ShelfAutoHideBehavior ToMojom( + ash::ShelfAutoHideBehavior input) { + switch (input) { + case ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS: + return ash::mojom::ShelfAutoHideBehavior:: + SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; + case ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER: + return ash::mojom::ShelfAutoHideBehavior:: + SHELF_AUTO_HIDE_BEHAVIOR_NEVER; + case ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN: + return ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; + } + NOTREACHED(); + return ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; + } + + static bool FromMojom(ash::mojom::ShelfAutoHideBehavior input, + ash::ShelfAutoHideBehavior* out) { + switch (input) { + case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS: + *out = ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; + return true; + case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_NEVER: + *out = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER; + return true; + case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN: + *out = ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; + return true; + } + NOTREACHED(); + return false; + } +}; + +template <> +struct EnumTraits<ash::mojom::ShelfAlignment, ash::ShelfAlignment> { + static ash::mojom::ShelfAlignment ToMojom(ash::ShelfAlignment input) { + switch (input) { + case ash::SHELF_ALIGNMENT_BOTTOM: + return ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM; + case ash::SHELF_ALIGNMENT_LEFT: + return ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_LEFT; + case ash::SHELF_ALIGNMENT_RIGHT: + return ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_RIGHT; + case ash::SHELF_ALIGNMENT_BOTTOM_LOCKED: + return ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM_LOCKED; + } + NOTREACHED(); + return ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM; + } + + static bool FromMojom(ash::mojom::ShelfAlignment input, + ash::ShelfAlignment* out) { + switch (input) { + case ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM: + *out = ash::SHELF_ALIGNMENT_BOTTOM; + return true; + case ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_LEFT: + *out = ash::SHELF_ALIGNMENT_LEFT; + return true; + case ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_RIGHT: + *out = ash::SHELF_ALIGNMENT_RIGHT; + return true; + case ash::mojom::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM_LOCKED: + *out = ash::SHELF_ALIGNMENT_BOTTOM_LOCKED; + return true; + } + NOTREACHED(); + return false; + } +}; + +} // namespace mojo + +#endif // ASH_PUBLIC_CPP_SHELF_INTEGRATION_TEST_API_STRUCT_MOJOM_TRAITS_H_
diff --git a/ash/public/cpp/shelf_struct_mojom_traits.h b/ash/public/cpp/shelf_struct_mojom_traits.h index 4760c56..093f9e8 100644 --- a/ash/public/cpp/shelf_struct_mojom_traits.h +++ b/ash/public/cpp/shelf_struct_mojom_traits.h
@@ -189,43 +189,6 @@ }; template <> -struct EnumTraits<ash::mojom::ShelfAutoHideBehavior, - ash::ShelfAutoHideBehavior> { - static ash::mojom::ShelfAutoHideBehavior ToMojom( - ash::ShelfAutoHideBehavior input) { - switch (input) { - case ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS: - return ash::mojom::ShelfAutoHideBehavior:: - SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; - case ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER: - return ash::mojom::ShelfAutoHideBehavior:: - SHELF_AUTO_HIDE_BEHAVIOR_NEVER; - case ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN: - return ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; - } - NOTREACHED(); - return ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; - } - - static bool FromMojom(ash::mojom::ShelfAutoHideBehavior input, - ash::ShelfAutoHideBehavior* out) { - switch (input) { - case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS: - *out = ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; - return true; - case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_NEVER: - *out = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER; - return true; - case ash::mojom::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN: - *out = ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; - return true; - } - NOTREACHED(); - return false; - } -}; - -template <> struct ASH_PUBLIC_EXPORT StructTraits<ash::mojom::ShelfIDDataView, ash::ShelfID> { static const std::string& app_id(const ash::ShelfID& i) { return i.app_id; }
diff --git a/ash/public/interfaces/BUILD.gn b/ash/public/interfaces/BUILD.gn index 9ed9614..608f881 100644 --- a/ash/public/interfaces/BUILD.gn +++ b/ash/public/interfaces/BUILD.gn
@@ -57,6 +57,7 @@ "process_creation_time_recorder.mojom", "session_controller.mojom", "shelf.mojom", + "shelf_integration_test_api.mojom", "shutdown.mojom", "split_view.mojom", "system_tray.mojom",
diff --git a/ash/public/interfaces/login_screen_test_api.test-mojom b/ash/public/interfaces/login_screen_test_api.test-mojom index 9bd2fb2c..eeab1ae1 100644 --- a/ash/public/interfaces/login_screen_test_api.test-mojom +++ b/ash/public/interfaces/login_screen_test_api.test-mojom
@@ -43,6 +43,10 @@ // Returns true if request was successful. ClickAddUserButton() => (bool success); + // Simulate click on the guest login button. + // Returns whether the request was succesful. + ClickGuestButton() => (bool success); + // Blocks until UI update counter is greated than |previous_update_count|. // Returns true on success, false on error. WaitForUiUpdate(int64 previous_update_count) => (bool success);
diff --git a/ash/public/interfaces/shelf.mojom b/ash/public/interfaces/shelf.mojom index 9ca03f8..b048e03 100644 --- a/ash/public/interfaces/shelf.mojom +++ b/ash/public/interfaces/shelf.mojom
@@ -9,13 +9,6 @@ import "ui/events/mojo/event.mojom"; import "ui/gfx/image/mojo/image.mojom"; -// These values match ash::ShelfAutoHideBehavior. -enum ShelfAutoHideBehavior { - SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, // Always auto-hide. - SHELF_AUTO_HIDE_BEHAVIOR_NEVER, // Never auto-hide. - SHELF_AUTO_HIDE_ALWAYS_HIDDEN, // Always hide. -}; - // The actions that may be performed when a shelf item is selected. // These values match ash::ShelfAction. enum ShelfAction { @@ -82,17 +75,6 @@ UpdateShelfItem(ShelfItem item); // Sets the |delegate| for the item with |id|. SetShelfItemDelegate(ShelfID id, ShelfItemDelegate delegate); - // Returns the auto hide behavior. For testing only. - // |display_id| represents the display that contains the shelf. |display_id| - // must be valid. - GetAutoHideBehaviorForTesting(int64 display_id) - => (ShelfAutoHideBehavior behavior); - // Sets the auto hide behavior. For testing only. - // |display_id| represents the display that contains the shelf. |display_id| - // must be valid. - // |behavior| is the new behavior. - SetAutoHideBehaviorForTesting(int64 display_id, - ShelfAutoHideBehavior behavior) => (); }; // A Shelf observer, used to persist profile settings and cache a ShelfModel.
diff --git a/ash/public/interfaces/shelf.typemap b/ash/public/interfaces/shelf.typemap index fd6161b..e25b71e 100644 --- a/ash/public/interfaces/shelf.typemap +++ b/ash/public/interfaces/shelf.typemap
@@ -17,8 +17,6 @@ ] type_mappings = [ "ash.mojom.ShelfAction=ash::ShelfAction", - "ash.mojom.ShelfAlignment=ash::ShelfAlignment", - "ash.mojom.ShelfAutoHideBehavior=ash::ShelfAutoHideBehavior", "ash.mojom.ShelfID=ash::ShelfID", "ash.mojom.ShelfItem=ash::ShelfItem", "ash.mojom.ShelfItemStatus=ash::ShelfItemStatus",
diff --git a/ash/public/interfaces/shelf_integration_test_api.mojom b/ash/public/interfaces/shelf_integration_test_api.mojom new file mode 100644 index 0000000..43bf312 --- /dev/null +++ b/ash/public/interfaces/shelf_integration_test_api.mojom
@@ -0,0 +1,50 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module ash.mojom; + +// These values match ash::ShelfAutoHideBehavior. +enum ShelfAutoHideBehavior { + SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, // Always auto-hide. + SHELF_AUTO_HIDE_BEHAVIOR_NEVER, // Never auto-hide. + SHELF_AUTO_HIDE_ALWAYS_HIDDEN, // Always hide. +}; + +// These values match ash::ShelfAlignment. +enum ShelfAlignment { + SHELF_ALIGNMENT_BOTTOM, // Bottom alignment. + SHELF_ALIGNMENT_LEFT, // Left alignment. + SHELF_ALIGNMENT_RIGHT, // Right alignment. + SHELF_ALIGNMENT_BOTTOM_LOCKED, // Bottom alignment, set temporarily and not + // saved to preferences. +}; + +// Test interface used to interact with the Shelf from integration tests. +// Note this interface applies the shelf properties from the call +// arguments and might be lost if tests do something that triggers +// applying shelf properties from prefs, such as switching user, +// entering/exiting tablet mode, changing display config, etc. +interface ShelfIntegrationTestApi { + // Returns the auto hide behavior. + // |display_id| represents the display that contains the shelf. |display_id| + // must be valid. + GetAutoHideBehavior(int64 display_id) => (ShelfAutoHideBehavior behavior); + + // Sets the auto hide behavior. + // |display_id| represents the display that contains the shelf. |display_id| + // must be valid. + // |behavior| is the new behavior. + SetAutoHideBehavior(int64 display_id, ShelfAutoHideBehavior behavior) => (); + + // Sets the alignment. + // |display_id| represents the display that contains the shelf. |display_id| + // must be valid. + // |alignment| is the new alignment. + SetAlignment(int64 display_id, ShelfAlignment alignment) => (); + + // Returns the alignment. + // |display_id| represents the display that contains the shelf. |display_id| + // must be valid. + GetAlignment(int64 display_id) => (ShelfAlignment alignment); +};
diff --git a/ash/public/interfaces/shelf_integration_test_api.typemap b/ash/public/interfaces/shelf_integration_test_api.typemap new file mode 100644 index 0000000..b0af960 --- /dev/null +++ b/ash/public/interfaces/shelf_integration_test_api.typemap
@@ -0,0 +1,13 @@ +# Copyright 2019 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +mojom = "//ash/public/interfaces/shelf_integration_test_api.mojom" +public_headers = [ "//ash/public/cpp/shelf_types.h" ] +traits_headers = + [ "//ash/public/cpp/shelf_integration_test_api_struct_mojom_traits.h" ] + +type_mappings = [ + "ash.mojom.ShelfAlignment=ash::ShelfAlignment", + "ash.mojom.ShelfAutoHideBehavior=ash::ShelfAutoHideBehavior", +]
diff --git a/ash/public/interfaces/typemaps.gni b/ash/public/interfaces/typemaps.gni index b02bb8a..548ac84 100644 --- a/ash/public/interfaces/typemaps.gni +++ b/ash/public/interfaces/typemaps.gni
@@ -7,6 +7,7 @@ "//ash/public/interfaces/menu.typemap", "//ash/public/interfaces/session_controller.typemap", "//ash/public/interfaces/shelf.typemap", + "//ash/public/interfaces/shelf_integration_test_api.typemap", "//ash/public/interfaces/user_info.typemap", "//ash/public/interfaces/wallpaper.typemap", ]
diff --git a/ash/shelf/login_shelf_view.cc b/ash/shelf/login_shelf_view.cc index 810561c..c3332b4 100644 --- a/ash/shelf/login_shelf_view.cc +++ b/ash/shelf/login_shelf_view.cc
@@ -532,6 +532,15 @@ return true; } +bool LoginShelfView::SimulateGuestButtonForTesting() { + views::View* guest_login_button = GetViewByID(kBrowseAsGuest); + if (!guest_login_button->enabled()) + return false; + + Shell::Get()->login_screen_controller()->LoginAsGuest(); + return true; +} + void LoginShelfView::InstallTestUiUpdateDelegate( std::unique_ptr<TestUiUpdateDelegate> delegate) { DCHECK(!test_ui_update_delegate_.get());
diff --git a/ash/shelf/login_shelf_view.h b/ash/shelf/login_shelf_view.h index 716f81b4..c48a073 100644 --- a/ash/shelf/login_shelf_view.h +++ b/ash/shelf/login_shelf_view.h
@@ -118,6 +118,7 @@ // clickable). bool LaunchAppForTesting(const std::string& app_id); bool SimulateAddUserButtonForTesting(); + bool SimulateGuestButtonForTesting(); // Adds test delegate. Delegate will become owned by LoginShelfView. void InstallTestUiUpdateDelegate(
diff --git a/ash/shelf/shelf_controller.cc b/ash/shelf/shelf_controller.cc index 8b4360b..a6326d4 100644 --- a/ash/shelf/shelf_controller.cc +++ b/ash/shelf/shelf_controller.cc
@@ -266,24 +266,6 @@ model_.SetShelfItemDelegate(id, nullptr); } -void ShelfController::GetAutoHideBehaviorForTesting( - int64_t display_id, - GetAutoHideBehaviorForTestingCallback callback) { - Shelf* shelf = GetShelfForDisplay(display_id); - DCHECK(shelf); - std::move(callback).Run(shelf->auto_hide_behavior()); -} - -void ShelfController::SetAutoHideBehaviorForTesting( - int64_t display_id, - ShelfAutoHideBehavior behavior, - SetAutoHideBehaviorForTestingCallback callback) { - Shelf* shelf = GetShelfForDisplay(display_id); - DCHECK(shelf); - shelf->SetAutoHideBehavior(behavior); - std::move(callback).Run(); -} - void ShelfController::ShelfItemAdded(int index) { if (applying_remote_shelf_model_changes_) return;
diff --git a/ash/shelf/shelf_controller.h b/ash/shelf/shelf_controller.h index 4afe6b1..7413a325 100644 --- a/ash/shelf/shelf_controller.h +++ b/ash/shelf/shelf_controller.h
@@ -62,14 +62,6 @@ void UpdateShelfItem(const ShelfItem& item) override; void SetShelfItemDelegate(const ShelfID& id, mojom::ShelfItemDelegatePtr delegate) override; - void GetAutoHideBehaviorForTesting( - int64_t display_id, - GetAutoHideBehaviorForTestingCallback callback) override; - void SetAutoHideBehaviorForTesting( - int64_t display_id, - ShelfAutoHideBehavior behavior, - SetAutoHideBehaviorForTestingCallback callback) override; - // ShelfModelObserver: void ShelfItemAdded(int index) override; void ShelfItemRemoved(int index, const ShelfItem& old_item) override;
diff --git a/base/BUILD.gn b/base/BUILD.gn index 535677d..631f415c 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn
@@ -2273,6 +2273,19 @@ } } +source_set("base_stack_sampling_profiler_test_util") { + testonly = true + sources = [ + "profiler/stack_sampling_profiler_test_util.cc", + "profiler/stack_sampling_profiler_test_util.h", + ] + deps = [ + ":base", + "//base/test:test_support", + "//testing/gtest", + ] +} + bundle_data("base_unittests_bundle_data") { testonly = true sources = [ @@ -2730,6 +2743,7 @@ deps = [ ":base", + ":base_stack_sampling_profiler_test_util", ":base_unittests_tasktraits", ":i18n", ":sanitizer_buildflags",
diff --git a/base/android/java/src/org/chromium/base/FileUtils.java b/base/android/java/src/org/chromium/base/FileUtils.java index 1858b220..5ceded4 100644 --- a/base/android/java/src/org/chromium/base/FileUtils.java +++ b/base/android/java/src/org/chromium/base/FileUtils.java
@@ -5,10 +5,15 @@ package org.chromium.base; import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; +import android.os.ParcelFileDescriptor; +import android.support.annotation.Nullable; import java.io.BufferedOutputStream; import java.io.File; +import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -152,4 +157,30 @@ if (index == -1) return ""; return file.substring(index + 1).toLowerCase(Locale.US); } + + /** Queries and decodes bitmap from content provider. */ + @Nullable + public static Bitmap queryBitmapFromContentProvider(Context context, Uri uri) { + try (ParcelFileDescriptor parcelFileDescriptor = + context.getContentResolver().openFileDescriptor(uri, "r")) { + if (parcelFileDescriptor == null) { + Log.w(TAG, "Null ParcelFileDescriptor from uri " + uri); + return null; + } + FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); + if (fileDescriptor == null) { + Log.w(TAG, "Null FileDescriptor from uri " + uri); + return null; + } + Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor); + if (bitmap == null) { + Log.w(TAG, "Failed to decode image from uri " + uri); + return null; + } + return bitmap; + } catch (IOException e) { + Log.w(TAG, "IO exception when reading uri " + uri); + } + return null; + } }
diff --git a/base/profiler/stack_sampling_profiler_test_util.cc b/base/profiler/stack_sampling_profiler_test_util.cc new file mode 100644 index 0000000..d0fbaf7 --- /dev/null +++ b/base/profiler/stack_sampling_profiler_test_util.cc
@@ -0,0 +1,240 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/profiler/stack_sampling_profiler_test_util.h" + +#include "base/callback.h" +#include "base/compiler_specific.h" +#include "base/location.h" +#include "base/profiler/stack_sampling_profiler.h" +#include "base/strings/stringprintf.h" +#include "base/test/bind_test_util.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace base { + +namespace { + +// A profile builder for test use that expects to receive exactly one sample. +class TestProfileBuilder : public ProfileBuilder { + public: + // The callback is passed the last sample recorded. + using CompletedCallback = OnceCallback<void(std::vector<Frame>)>; + + TestProfileBuilder(ModuleCache* module_cache, CompletedCallback callback) + : module_cache_(module_cache), callback_(std::move(callback)) {} + + ~TestProfileBuilder() override = default; + + TestProfileBuilder(const TestProfileBuilder&) = delete; + TestProfileBuilder& operator=(const TestProfileBuilder&) = delete; + + // ProfileBuilder: + ModuleCache* GetModuleCache() override { return module_cache_; } + void RecordMetadata() override {} + + void OnSampleCompleted(std::vector<Frame> sample) override { + EXPECT_TRUE(sample_.empty()); + sample_ = std::move(sample); + } + + void OnProfileCompleted(TimeDelta profile_duration, + TimeDelta sampling_period) override { + EXPECT_FALSE(sample_.empty()); + std::move(callback_).Run(std::move(sample_)); + } + + private: + ModuleCache* const module_cache_; + CompletedCallback callback_; + std::vector<Frame> sample_; +}; + +} // namespace + +TargetThread::TargetThread(const Closure& to_run) : to_run_(to_run) {} + +TargetThread::~TargetThread() = default; + +void TargetThread::ThreadMain() { + id_ = PlatformThread::CurrentId(); + to_run_.Run(); +} + +UnwindScenario::UnwindScenario(const SetupFunction& setup_function) + : setup_function_(setup_function) {} + +UnwindScenario::~UnwindScenario() = default; + +FunctionAddressRange UnwindScenario::GetWaitForSampleAddressRange() const { + return WaitForSample(nullptr); +} + +FunctionAddressRange UnwindScenario::GetSetupFunctionAddressRange() const { + return setup_function_.Run(Closure()); +} + +FunctionAddressRange UnwindScenario::GetOuterFunctionAddressRange() const { + return InvokeSetupFunction(SetupFunction(), nullptr); +} + +void UnwindScenario::Execute(SampleEvents* events) { + InvokeSetupFunction(setup_function_, events); +} + +// static +// Disable inlining for this function so that it gets its own stack frame. +NOINLINE FunctionAddressRange +UnwindScenario::InvokeSetupFunction(const SetupFunction& setup_function, + SampleEvents* events) { + const void* start_program_counter = GetProgramCounter(); + + if (!setup_function.is_null()) { + const auto wait_for_sample_closure = + BindLambdaForTesting([&]() { UnwindScenario::WaitForSample(events); }); + setup_function.Run(wait_for_sample_closure); + } + + // Volatile to prevent a tail call to GetProgramCounter(). + const void* volatile end_program_counter = GetProgramCounter(); + return {start_program_counter, end_program_counter}; +} + +// static +// Disable inlining for this function so that it gets its own stack frame. +NOINLINE FunctionAddressRange +UnwindScenario::WaitForSample(SampleEvents* events) { + const void* start_program_counter = GetProgramCounter(); + + if (events) { + events->ready_for_sample.Signal(); + events->sample_finished.Wait(); + } + + // Volatile to prevent a tail call to GetProgramCounter(). + const void* volatile end_program_counter = GetProgramCounter(); + return {start_program_counter, end_program_counter}; +} + +// Disable inlining for this function so that it gets its own stack frame. +NOINLINE FunctionAddressRange +CallWithPlainFunction(const Closure& wait_for_sample) { + const void* start_program_counter = GetProgramCounter(); + + if (!wait_for_sample.is_null()) + wait_for_sample.Run(); + + // Volatile to prevent a tail call to GetProgramCounter(). + const void* volatile end_program_counter = GetProgramCounter(); + return {start_program_counter, end_program_counter}; +} + +void WithTargetThread(UnwindScenario* scenario, + ProfileCallback profile_callback) { + UnwindScenario::SampleEvents events; + TargetThread target_thread( + BindLambdaForTesting([&]() { scenario->Execute(&events); })); + + PlatformThreadHandle target_thread_handle; + EXPECT_TRUE(PlatformThread::Create(0, &target_thread, &target_thread_handle)); + + events.ready_for_sample.Wait(); + + std::move(profile_callback).Run(target_thread.id()); + + events.sample_finished.Signal(); + + PlatformThread::Join(target_thread_handle); +} + +std::vector<Frame> SampleScenario(UnwindScenario* scenario, + ModuleCache* module_cache) { + StackSamplingProfiler::SamplingParams params; + params.sampling_interval = TimeDelta::FromMilliseconds(0); + params.samples_per_profile = 1; + + std::vector<Frame> sample; + WithTargetThread( + scenario, BindLambdaForTesting([&](PlatformThreadId target_thread_id) { + WaitableEvent sampling_thread_completed( + WaitableEvent::ResetPolicy::MANUAL, + WaitableEvent::InitialState::NOT_SIGNALED); + StackSamplingProfiler profiler( + target_thread_id, params, + std::make_unique<TestProfileBuilder>( + module_cache, + BindLambdaForTesting([&sample, &sampling_thread_completed]( + std::vector<Frame> result_sample) { + sample = std::move(result_sample); + sampling_thread_completed.Signal(); + }))); + profiler.Start(); + sampling_thread_completed.Wait(); + })); + + return sample; +} + +std::string FormatSampleForDiagnosticOutput(const std::vector<Frame>& sample) { + std::string output; + for (const auto& frame : sample) { + output += StringPrintf( + "0x%p %s\n", reinterpret_cast<const void*>(frame.instruction_pointer), + frame.module ? frame.module->GetDebugBasename().AsUTF8Unsafe().c_str() + : "null module"); + } + return output; +} + +void ExpectStackContains(const std::vector<Frame>& stack, + const std::vector<FunctionAddressRange>& functions) { + auto frame_it = stack.begin(); + auto function_it = functions.begin(); + for (; frame_it != stack.end() && function_it != functions.end(); + ++frame_it) { + if (frame_it->instruction_pointer >= + reinterpret_cast<uintptr_t>(function_it->start) && + frame_it->instruction_pointer <= + reinterpret_cast<uintptr_t>(function_it->end)) { + ++function_it; + } + } + + EXPECT_EQ(function_it, functions.end()) + << "Function in position " << function_it - functions.begin() << " at " + << function_it->start << " was not found in stack " + << "(or did not appear in the expected order):\n" + << FormatSampleForDiagnosticOutput(stack); +} + +void ExpectStackDoesNotContain( + const std::vector<Frame>& stack, + const std::vector<FunctionAddressRange>& functions) { + struct FunctionAddressRangeCompare { + bool operator()(const FunctionAddressRange& a, + const FunctionAddressRange& b) const { + return std::make_pair(a.start, a.end) < std::make_pair(b.start, b.end); + } + }; + + std::set<FunctionAddressRange, FunctionAddressRangeCompare> seen_functions; + for (const auto frame : stack) { + for (const auto function : functions) { + if (frame.instruction_pointer >= + reinterpret_cast<uintptr_t>(function.start) && + frame.instruction_pointer <= + reinterpret_cast<uintptr_t>(function.end)) { + seen_functions.insert(function); + } + } + } + + for (const auto function : seen_functions) { + ADD_FAILURE() << "Function at " << function.start + << " was unexpectedly found in stack:\n" + << FormatSampleForDiagnosticOutput(stack); + } +} + +} // namespace base
diff --git a/base/profiler/stack_sampling_profiler_test_util.h b/base/profiler/stack_sampling_profiler_test_util.h new file mode 100644 index 0000000..b9c0a41 --- /dev/null +++ b/base/profiler/stack_sampling_profiler_test_util.h
@@ -0,0 +1,119 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_PROFILER_STACK_SAMPLING_PROFILER_TEST_UTIL_H_ +#define BASE_PROFILER_STACK_SAMPLING_PROFILER_TEST_UTIL_H_ + +#include <vector> + +#include "base/callback.h" +#include "base/profiler/frame.h" +#include "base/synchronization/waitable_event.h" +#include "base/threading/platform_thread.h" + +namespace base { + +// A thread to target for profiling that will run the supplied closure. +class TargetThread : public PlatformThread::Delegate { + public: + TargetThread(const Closure& to_run); + ~TargetThread() override; + + // PlatformThread::Delegate: + void ThreadMain() override; + + PlatformThreadId id() const { return id_; } + + private: + PlatformThreadId id_ = 0; + Closure to_run_; + + DISALLOW_COPY_AND_ASSIGN(TargetThread); +}; + +// Addresses near the start and end of a function. +struct FunctionAddressRange { + const void* start; + const void* end; +}; + +// Represents a stack unwind scenario to be sampled by the +// StackSamplingProfiler. +class UnwindScenario { + public: + // A callback provided by the caller that sets up the unwind scenario, then + // calls into the passed closure to wait for a sample to be taken. Returns the + // address range of the function that sets up the unwind scenario. The passed + // closure will be null when invoked solely to obtain the address range. + using SetupFunction = RepeatingCallback<FunctionAddressRange(const Closure&)>; + + // Events to coordinate the sampling. + struct SampleEvents { + WaitableEvent ready_for_sample; + WaitableEvent sample_finished; + }; + + explicit UnwindScenario(const SetupFunction& setup_function); + ~UnwindScenario(); + + UnwindScenario(const UnwindScenario&) = delete; + UnwindScenario& operator=(const UnwindScenario&) = delete; + + // The address range of the innermost function that waits for the sample. + FunctionAddressRange GetWaitForSampleAddressRange() const; + + // The address range of the provided setup function. + FunctionAddressRange GetSetupFunctionAddressRange() const; + + // The address range of the outer function that indirectly invokes the setup + // function. + FunctionAddressRange GetOuterFunctionAddressRange() const; + + // Executes the scenario. + void Execute(SampleEvents* events); + + private: + static FunctionAddressRange InvokeSetupFunction( + const SetupFunction& setup_function, + SampleEvents* events); + + static FunctionAddressRange WaitForSample(SampleEvents* events); + + const SetupFunction setup_function_; +}; + +// UnwindScenario setup function that calls into |wait_for_sample| without doing +// any special unwinding setup, to exercise the "normal" unwind scenario. +FunctionAddressRange CallWithPlainFunction(const Closure& wait_for_sample); + +// The callback to perform profiling on the provided thread. +using ProfileCallback = OnceCallback<void(PlatformThreadId)>; + +// Executes |profile_callback| while running |scenario| on the target +// thread. Performs all necessary target thread startup and shutdown work before +// and afterward. +void WithTargetThread(UnwindScenario* scenario, + ProfileCallback profile_callback); + +// Returns the sample seen when taking one sample of |scenario|. +std::vector<Frame> SampleScenario(UnwindScenario* scenario, + ModuleCache* module_cache); + +// Formats a sample into a string that can be output for test diagnostics. +std::string FormatSampleForDiagnosticOutput(const std::vector<Frame>& sample); + +// Expects that the stack contains the functions with the specified address +// ranges, in the specified order. +void ExpectStackContains(const std::vector<Frame>& stack, + const std::vector<FunctionAddressRange>& functions); + +// Expects that the stack does not contain the functions with the specified +// address ranges. +void ExpectStackDoesNotContain( + const std::vector<Frame>& stack, + const std::vector<FunctionAddressRange>& functions); + +} // namespace base + +#endif // BASE_PROFILER_STACK_SAMPLING_PROFILER_TEST_UTIL_H_
diff --git a/base/profiler/stack_sampling_profiler_unittest.cc b/base/profiler/stack_sampling_profiler_unittest.cc index d030e438..fd94290 100644 --- a/base/profiler/stack_sampling_profiler_unittest.cc +++ b/base/profiler/stack_sampling_profiler_unittest.cc
@@ -16,22 +16,22 @@ #include "base/callback.h" #include "base/compiler_specific.h" #include "base/files/file_util.h" +#include "base/location.h" #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/native_library.h" #include "base/path_service.h" #include "base/profiler/stack_sampler.h" #include "base/profiler/stack_sampling_profiler.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" #include "base/profiler/unwinder.h" #include "base/run_loop.h" #include "base/scoped_native_library.h" #include "base/stl_util.h" -#include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" #include "base/test/bind_test_util.h" -#include "base/threading/platform_thread.h" #include "base/threading/simple_thread.h" #include "base/time/time.h" #include "build/build_config.h" @@ -51,10 +51,6 @@ #define STACK_SAMPLING_PROFILER_SUPPORTED 1 #endif -#if defined(OS_WIN) -#pragma intrinsic(_ReturnAddress) -#endif - namespace base { #if defined(STACK_SAMPLING_PROFILER_SUPPORTED) @@ -68,152 +64,6 @@ namespace { -// Addresses near the start and end of a function. -struct FunctionAddressRange { - const void* start; - const void* end; -}; - -// Disable inlining for this function so that it gets its own stack frame. -NOINLINE const void* GetProgramCounter() { - // Saving to a volatile prevents clang from assuming it can reuse the return - // value across multiple calls to GetProgramCounter(). -#if defined(OS_WIN) - const void* volatile program_counter = _ReturnAddress(); -#else - const void* volatile program_counter = __builtin_return_address(0); -#endif - return program_counter; -} - -// Represents a stack unwind scenario to be sampled by the -// StackSamplingProfiler. -class UnwindScenario { - public: - // A callback provided by the caller that sets up the unwind scenario, then - // calls into the passed closure to wait for a sample to be taken. Returns the - // address range of the function that sets up the unwind scenario. The passed - // closure will be null when invoked solely to obtain the address range. - using SetupFunction = RepeatingCallback<FunctionAddressRange(const Closure&)>; - - // Events to coordinate the sampling. - struct SampleEvents { - WaitableEvent ready_for_sample; - WaitableEvent sample_finished; - }; - - explicit UnwindScenario(const SetupFunction& setup_function) - : setup_function_(setup_function) {} - - UnwindScenario(const UnwindScenario&) = delete; - UnwindScenario& operator=(const UnwindScenario&) = delete; - - FunctionAddressRange GetWaitForSampleAddressRange() const; - FunctionAddressRange GetSetupFunctionAddressRange() const; - FunctionAddressRange GetOuterFunctionAddressRange() const; - - void Execute(SampleEvents* events); - - private: - static FunctionAddressRange InvokeSetupFunction( - const SetupFunction& setup_function, - SampleEvents* events); - - static FunctionAddressRange WaitForSample(SampleEvents* events); - - const SetupFunction setup_function_; -}; - -FunctionAddressRange UnwindScenario::GetWaitForSampleAddressRange() const { - return WaitForSample(nullptr); -} - -FunctionAddressRange UnwindScenario::GetSetupFunctionAddressRange() const { - return setup_function_.Run(Closure()); -} - -FunctionAddressRange UnwindScenario::GetOuterFunctionAddressRange() const { - return InvokeSetupFunction(SetupFunction(), nullptr); -} - -void UnwindScenario::Execute(SampleEvents* events) { - InvokeSetupFunction(setup_function_, events); -} - -// static -// Disable inlining for this function so that it gets its own stack frame. -NOINLINE FunctionAddressRange -UnwindScenario::InvokeSetupFunction(const SetupFunction& setup_function, - SampleEvents* events) { - const void* start_program_counter = GetProgramCounter(); - - if (!setup_function.is_null()) { - const auto wait_for_sample_closure = - BindLambdaForTesting([&]() { UnwindScenario::WaitForSample(events); }); - setup_function.Run(wait_for_sample_closure); - } - - // Volatile to prevent a tail call to GetProgramCounter(). - const void* volatile end_program_counter = GetProgramCounter(); - return {start_program_counter, end_program_counter}; -} - -// static -// Disable inlining for this function so that it gets its own stack frame. -NOINLINE FunctionAddressRange -UnwindScenario::WaitForSample(SampleEvents* events) { - const void* start_program_counter = GetProgramCounter(); - - if (events) { - events->ready_for_sample.Signal(); - events->sample_finished.Wait(); - } - - // Volatile to prevent a tail call to GetProgramCounter(). - const void* volatile end_program_counter = GetProgramCounter(); - return {start_program_counter, end_program_counter}; -} - -// A thread to target for profiling, whose stack is guaranteed to contain -// SignalAndWaitUntilSignaled() when coordinated with the main thread. -class TargetThread : public PlatformThread::Delegate { - public: - TargetThread(const Closure& to_run); - - // PlatformThread::Delegate: - void ThreadMain() override; - - PlatformThreadId id() const { return id_; } - - private: - PlatformThreadId id_ = 0; - Closure to_run_; - - DISALLOW_COPY_AND_ASSIGN(TargetThread); -}; - -TargetThread::TargetThread(const Closure& to_run) : to_run_(to_run) {} - -void TargetThread::ThreadMain() { - id_ = PlatformThread::CurrentId(); - to_run_.Run(); -} - -// Calls into |wait_for_sample| without doing any special unwinding setup, to -// test the "normal" unwind scenario. -// Disable inlining for this function so that it gets its own stack frame. -NOINLINE FunctionAddressRange -CallWithPlainFunction(const Closure& wait_for_sample) { - const void* start_program_counter = GetProgramCounter(); - - if (!wait_for_sample.is_null()) - wait_for_sample.Run(); - - // Volatile to prevent a tail call to GetProgramCounter(). - const void* volatile end_program_counter = GetProgramCounter(); - return {start_program_counter, end_program_counter}; -} - // Calls into |wait_for_sample| after using alloca(), to test unwinding with a // frame pointer. // Disable inlining for this function so that it gets its own stack frame. @@ -274,72 +124,6 @@ return {start_program_counter, end_program_counter}; } -// Formats a sample into a string that can be output for test diagnostics. -std::string FormatSampleForDiagnosticOutput(const std::vector<Frame>& sample) { - std::string output; - for (const auto& frame : sample) { - output += StringPrintf( - "0x%p %s\n", reinterpret_cast<const void*>(frame.instruction_pointer), - frame.module ? frame.module->GetDebugBasename().AsUTF8Unsafe().c_str() - : "null module"); - } - return output; -} - -// Expects that the stack contains the functions with the specified address -// ranges, in the specified order. -void ExpectStackContains(const std::vector<Frame>& stack, - const std::vector<FunctionAddressRange>& functions) { - auto frame_it = stack.begin(); - auto function_it = functions.begin(); - for (; frame_it != stack.end() && function_it != functions.end(); - ++frame_it) { - if (frame_it->instruction_pointer >= - reinterpret_cast<uintptr_t>(function_it->start) && - frame_it->instruction_pointer <= - reinterpret_cast<uintptr_t>(function_it->end)) { - ++function_it; - } - } - - EXPECT_EQ(function_it, functions.end()) - << "Function in position " << function_it - functions.begin() << " at " - << function_it->start << " was not found in stack " - << "(or did not appear in the expected order):\n" - << FormatSampleForDiagnosticOutput(stack); -} - -// Expects that the stack does not contain the functions with the specified -// address ranges. -void ExpectStackDoesNotContain( - const std::vector<Frame>& stack, - const std::vector<FunctionAddressRange>& functions) { - struct FunctionAddressRangeCompare { - bool operator()(const FunctionAddressRange& a, - const FunctionAddressRange& b) const { - return std::make_pair(a.start, a.end) < std::make_pair(b.start, b.end); - } - }; - - std::set<FunctionAddressRange, FunctionAddressRangeCompare> seen_functions; - for (const auto frame : stack) { - for (const auto function : functions) { - if (frame.instruction_pointer >= - reinterpret_cast<uintptr_t>(function.start) && - frame.instruction_pointer <= - reinterpret_cast<uintptr_t>(function.end)) { - seen_functions.insert(function); - } - } - } - - for (const auto function : seen_functions) { - ADD_FAILURE() << "Function at " << function.start - << " was unexpectedly found in stack:\n" - << FormatSampleForDiagnosticOutput(stack); - } -} - // Profile consists of a set of samples and other sampling information. struct Profile { Profile() = default; @@ -480,65 +264,11 @@ #endif } -// The callback to perform profiling on the provided thread. -using ProfileCallback = OnceCallback<void(PlatformThreadId)>; - -// Executes |profile_callback| while running |scenario| on the target -// thread. Performs all necessary target thread startup and shutdown work before -// and afterward. -void WithTargetThread(UnwindScenario* scenario, - ProfileCallback profile_callback) { - UnwindScenario::SampleEvents events; - TargetThread target_thread( - BindLambdaForTesting([&]() { scenario->Execute(&events); })); - - PlatformThreadHandle target_thread_handle; - EXPECT_TRUE(PlatformThread::Create(0, &target_thread, &target_thread_handle)); - - events.ready_for_sample.Wait(); - - std::move(profile_callback).Run(target_thread.id()); - - events.sample_finished.Signal(); - - PlatformThread::Join(target_thread_handle); -} - void WithTargetThread(ProfileCallback profile_callback) { UnwindScenario scenario(BindRepeating(&CallWithPlainFunction)); WithTargetThread(&scenario, std::move(profile_callback)); } -// Returns the sample seen when taking one sample of |scenario|. -std::vector<Frame> SampleScenario(UnwindScenario* scenario, - ModuleCache* module_cache) { - SamplingParams params; - params.sampling_interval = TimeDelta::FromMilliseconds(0); - params.samples_per_profile = 1; - - Profile profile; - WithTargetThread( - scenario, BindLambdaForTesting([&](PlatformThreadId target_thread_id) { - WaitableEvent sampling_thread_completed( - WaitableEvent::ResetPolicy::MANUAL, - WaitableEvent::InitialState::NOT_SIGNALED); - StackSamplingProfiler profiler( - target_thread_id, params, - std::make_unique<TestProfileBuilder>( - module_cache, - BindLambdaForTesting([&profile, &sampling_thread_completed]( - Profile result_profile) { - profile = std::move(result_profile); - sampling_thread_completed.Signal(); - }))); - profiler.Start(); - sampling_thread_completed.Wait(); - })); - - CHECK_EQ(1u, profile.samples.size()); - return profile.samples[0]; -} - struct TestProfilerInfo { TestProfilerInfo(PlatformThreadId thread_id, const SamplingParams& params,
diff --git a/build/config/fuchsia/testing_sandbox_policy b/build/config/fuchsia/testing_sandbox_policy index 322af440..aa45137 100644 --- a/build/config/fuchsia/testing_sandbox_policy +++ b/build/config/fuchsia/testing_sandbox_policy
@@ -15,6 +15,7 @@ "fuchsia.sys.Environment", "fuchsia.sys.Launcher", "fuchsia.sys.Loader", + "fuchsia.sysmem.Allocator", "fuchsia.ui.input.ImeService", "fuchsia.ui.input.ImeVisibilityService", "fuchsia.ui.policy.Presenter",
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn index b51701c..5c1f067 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn
@@ -1459,7 +1459,6 @@ group("child_dependencies") { public_deps = [ - "//chrome/browser/devtools", "//chrome/child", "//chrome/common", "//chrome/gpu", @@ -1481,6 +1480,14 @@ if (enable_gwp_asan_malloc) { public_deps += [ "//components/gwp_asan/client" ] } + + if (!is_component_build) { + assert_no_deps = [ + # Browser code should not be used in child processes. In component builds, + # this is OK because all of content is linked into one library. + "//content/browser", + ] + } } if (is_win) {
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni index 6917ac9a..c2ad824 100644 --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni
@@ -1658,6 +1658,7 @@ "java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java", "java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHostSignature.java", "java/src/org/chromium/chrome/browser/webapps/GooglePlayWebApkInstallDelegate.java", + "java/src/org/chromium/chrome/browser/webapps/ProvidedByWebApkSplashDelegate.java", "java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java", "java/src/org/chromium/chrome/browser/metrics/SameActivityWebappUmaCache.java", "java/src/org/chromium/chrome/browser/webapps/SameTaskWebApkActivity.java",
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java index a777fa501..6f2063e4 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -8,7 +8,6 @@ import android.support.annotation.Nullable; import android.view.View; -import org.chromium.base.metrics.RecordUserAction; import org.chromium.chrome.browser.UrlConstants; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver; @@ -163,7 +162,6 @@ private View.OnClickListener getCollapseButtonClickListener() { return view -> { - RecordUserAction.record("TabGroup.DialogMinimizedFromGrid"); mModel.set(TabGridSheetProperties.IS_DIALOG_VISIBLE, false); }; } @@ -179,8 +177,6 @@ mTabCreatorManager.getTabCreator(currentTab.isIncognito()) .createNewTab(new LoadUrlParams(UrlConstants.NTP_URL), TabLaunchType.FROM_CHROME_UI, parentTabToAttach); - RecordUserAction.record( - "MobileNewTabOpened." + TabGridDialogCoordinator.COMPONENT_NAME); }; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsClientFileProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsClientFileProcessor.java index 81a966c..c22ff34c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsClientFileProcessor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsClientFileProcessor.java
@@ -8,20 +8,16 @@ import android.content.Context; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; -import android.os.ParcelFileDescriptor; import android.support.annotation.WorkerThread; import android.support.customtabs.CustomTabsService; import android.support.customtabs.CustomTabsSessionToken; +import org.chromium.base.FileUtils; import org.chromium.base.Log; import org.chromium.chrome.browser.browserservices.trustedwebactivityui.splashscreen.SplashImageHolder; -import java.io.FileDescriptor; -import java.io.IOException; - import javax.inject.Inject; import javax.inject.Named; import javax.inject.Singleton; @@ -67,29 +63,12 @@ } private boolean receiveTwaSplashImage(CustomTabsSessionToken sessionToken, Uri uri) { - try(ParcelFileDescriptor parcelFileDescriptor = - mContext.getContentResolver().openFileDescriptor(uri, "r")) { - if (parcelFileDescriptor == null) { - Log.w(TAG, "Null ParcelFileDescriptor from uri " + uri); - return false; - } - FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); - if (fileDescriptor == null) { - Log.w(TAG, "Null FileDescriptor from uri " + uri); - return false; - } - Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor); - if (bitmap == null) { - Log.w(TAG, "Failed to decode image from uri " + uri); - return false; - } - mTwaSplashImageHolder.get().putImage(sessionToken, bitmap); - mTwaSplashImageHolderCreated = true; - return true; - } catch (IOException e) { - Log.w(TAG, "IO exception when reading uri " + uri); - return false; - } + Bitmap bitmap = FileUtils.queryBitmapFromContentProvider(mContext, uri); + if (bitmap == null) return false; + + mTwaSplashImageHolder.get().putImage(sessionToken, bitmap); + mTwaSplashImageHolderCreated = true; + return true; } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java index 4a7c1fc..ecaf288 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/dynamicmodule/DynamicModuleNavigationEventObserver.java
@@ -23,6 +23,7 @@ import org.chromium.chrome.browser.tabmodel.TabSelectionType; import org.chromium.components.security_state.ConnectionSecurityLevel; import org.chromium.content_public.browser.NavigationEntry; +import org.chromium.net.NetError; import java.util.ArrayList; import java.util.List; @@ -31,9 +32,6 @@ * An observer for firing navigation events to the CCT dynamic module. */ public class DynamicModuleNavigationEventObserver extends EmptyTabObserver { - // An operation was aborted (due to user action). Should match the value in net_error_list.h. - private static final int NET_ERROR_ABORTED = -3; - @VisibleForTesting public static final String URL_KEY = "urlInfo"; @@ -106,8 +104,9 @@ } @Override - public void onPageLoadFailed(Tab tab, int errorCode) { - int navigationEvent = errorCode == NET_ERROR_ABORTED ? CustomTabsCallback.NAVIGATION_ABORTED + public void onPageLoadFailed(Tab tab, @NetError int errorCode) { + int navigationEvent = errorCode == NetError.ERR_ABORTED + ? CustomTabsCallback.NAVIGATION_ABORTED : CustomTabsCallback.NAVIGATION_FAILED; notifyOnNavigationEvent(navigationEvent, getExtrasBundleForNavigationEvent(tab)); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java index a1196ca..84daf15d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/DownloadProgressInfoBar.java
@@ -132,7 +132,7 @@ return; } - mAnimatedDrawable = AnimatedVectorDrawableCompat.create(getContext(), mInfo.icon); + mAnimatedDrawable = AnimatedVectorDrawableCompat.create(layout.getContext(), mInfo.icon); mAnimatedDrawable.registerAnimationCallback(new Animatable2Compat.AnimationCallback() { @Override public void onAnimationEnd(Drawable drawable) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor.java index 96e81476..67730e2 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/BasicSuggestionProcessor.java
@@ -118,7 +118,8 @@ suggestionIcon = SuggestionIcon.GLOBE; if (suggestion.isStarred()) { suggestionIcon = SuggestionIcon.BOOKMARK; - } else if (suggestionType == OmniboxSuggestionType.HISTORY_URL) { + } else if (!mEnableSuggestionFavicons + && suggestionType == OmniboxSuggestionType.HISTORY_URL) { suggestionIcon = SuggestionIcon.HISTORY; } boolean urlHighlighted = false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java index 3534ea7..382f6aa 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/EmptyTabObserver.java
@@ -14,6 +14,7 @@ import org.chromium.content_public.browser.NavigationHandle; import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.common.BrowserControlsState; +import org.chromium.net.NetError; /** * An implementation of the {@link TabObserver} which has empty implementations of all methods. @@ -50,7 +51,7 @@ public void onPageLoadFinished(Tab tab, String url) {} @Override - public void onPageLoadFailed(Tab tab, int errorCode) { } + public void onPageLoadFailed(Tab tab, @NetError int errorCode) {} @Override public void onRestoreStarted(Tab tab) {}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUma.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUma.java index d2f546c..72e2cea 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUma.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUma.java
@@ -148,8 +148,8 @@ * @param perceivedTime The perceived time taken to perform the tab restore. * @param errorCode The error code, on failure (as denoted by the |succeeded| parameter). */ - private void recordTabRestoreResult(boolean succeeded, long time, long perceivedTime, - int errorCode) { + private void recordTabRestoreResult( + boolean succeeded, long time, long perceivedTime, @NetError int errorCode) { if (succeeded) { RecordHistogram.recordEnumeratedHistogram( "Tab.RestoreResult", TAB_RESTORE_RESULT_SUCCESS, TAB_RESTORE_RESULT_COUNT);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController.java index 3310a28..b8af033 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarButtonInProductHelpController.java
@@ -12,6 +12,7 @@ import org.chromium.base.Callback; import org.chromium.base.task.PostTask; import org.chromium.chrome.R; +import org.chromium.chrome.browser.ActivityTabProvider.ActivityTabTabObserver; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.appmenu.AppMenuHandler; @@ -22,7 +23,6 @@ import org.chromium.chrome.browser.ntp.NewTabPage; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; -import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; import org.chromium.chrome.browser.util.FeatureUtilities; import org.chromium.chrome.browser.widget.ViewHighlighter; import org.chromium.chrome.browser.widget.textbubble.TextBubble; @@ -38,7 +38,7 @@ * to be able to split up the build target for toolbar which can be a base construct. */ public class ToolbarButtonInProductHelpController implements Destroyable { - private final TabModelSelectorTabObserver mPageLoadObserver; + private final ActivityTabTabObserver mPageLoadObserver; private final ChromeActivity mActivity; /** @@ -55,8 +55,7 @@ private ToolbarButtonInProductHelpController(final ChromeActivity activity) { mActivity = activity; - // TODO(jinsukkim): Consider switching to ActivityTabProvider and its TabObserver. - mPageLoadObserver = new TabModelSelectorTabObserver(activity.getTabModelSelector()) { + mPageLoadObserver = new ActivityTabTabObserver(activity.getActivityTabProvider()) { /** * Stores total data saved at the start of a page load. Used to calculate delta at the * end of page load, which is just an estimate of the data saved for the current page @@ -65,31 +64,26 @@ * user at a time (i.e. not since the user started using Chrome). */ private long mDataSavedOnStartPageLoad; - private Tab mPageLoadTab; @Override public void onPageLoadStarted(Tab tab, String url) { - if (tab != activity.getActivityTabProvider().get()) return; mDataSavedOnStartPageLoad = DataReductionProxySettings.getInstance() .getContentLengthSavedInHistorySummary(); - mPageLoadTab = tab; } @Override public void onPageLoadFinished(Tab tab, String url) { - if (mPageLoadTab != tab) return; long dataSaved = DataReductionProxySettings.getInstance() .getContentLengthSavedInHistorySummary() - mDataSavedOnStartPageLoad; Tracker tracker = TrackerFactory.getTrackerForProfile(Profile.getLastUsedProfile()); if (dataSaved > 0L) tracker.notifyEvent(EventConstants.DATA_SAVED_ON_PAGE_LOAD); if (tab.isPreview()) tracker.notifyEvent(EventConstants.PREVIEWS_PAGE_LOADED); - if (tab == activity.getActivityTabProvider().get() && tab.isUserInteractable()) { + if (tab.isUserInteractable()) { maybeShowDataSaverDetail(activity); - maybeShowDataSaverMilestonePromo(activity); - maybeShowPreviewVerboseStatus(activity); + if (dataSaved > 0L) maybeShowDataSaverMilestonePromo(activity); + if (tab.isPreview()) maybeShowPreviewVerboseStatus(activity); } - mPageLoadTab = null; } }; } @@ -136,8 +130,6 @@ // Attempts to show an IPH text bubble for page in preview mode. private static void maybeShowPreviewVerboseStatus(ChromeActivity activity) { - if (!activity.getActivityTabProvider().get().isPreview()) return; - final View anchorView = activity.getToolbarManager().getSecurityIconView(); if (anchorView == null) return; @@ -292,9 +284,10 @@ private static boolean canShowNTPButtonIPH(ChromeActivity activity) { View homeButton = activity.findViewById(R.id.home_button); + Tab tab = activity.getActivityTabProvider().get(); return FeatureUtilities.isNewTabPageButtonEnabled() - && !activity.getCurrentTabModel().isIncognito() && activity.getActivityTab() != null - && !NewTabPage.isNTPUrl(activity.getActivityTab().getUrl()) && homeButton != null + && !activity.getCurrentTabModel().isIncognito() && tab != null + && !NewTabPage.isNTPUrl(tab.getUrl()) && homeButton != null && homeButton.getVisibility() == View.VISIBLE; } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java index 8e98f70..741f03ad 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java
@@ -60,6 +60,9 @@ mTokenTracker = new TokenTracker(mBridge); mPageViewObservers = new ArrayList<>(); + mSuspensionTracker.getAllSuspendedWebsites().then( + (suspendedSites) -> { notifyObserversOfSuspensions(suspendedSites, true); }); + mOptInState = getOptInState(); mClient = AppHooks.get().createDigitalWellbeingClient(); } @@ -146,14 +149,7 @@ */ public Promise<Void> setWebsitesSuspendedAsync(List<String> fqdns, boolean suspended) { ThreadUtils.assertOnUiThread(); - for (WeakReference<PageViewObserver> observerRef : mPageViewObservers) { - PageViewObserver observer = observerRef.get(); - if (observer != null) { - for (String fqdn : fqdns) { - observer.notifySiteSuspensionChanged(fqdn, suspended); - } - } - } + notifyObserversOfSuspensions(fqdns, suspended); return mSuspensionTracker.setWebsitesSuspended(fqdns, suspended); } @@ -218,4 +214,15 @@ public List<String> getAllSuspendedWebsites() { return new ArrayList<>(); } + + private void notifyObserversOfSuspensions(List<String> fqdns, boolean suspended) { + for (WeakReference<PageViewObserver> observerRef : mPageViewObservers) { + PageViewObserver observer = observerRef.get(); + if (observer != null) { + for (String fqdn : fqdns) { + observer.notifySiteSuspensionChanged(fqdn, suspended); + } + } + } + } } \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/ProvidedByWebApkSplashDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ProvidedByWebApkSplashDelegate.java new file mode 100644 index 0000000..507a32a --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/ProvidedByWebApkSplashDelegate.java
@@ -0,0 +1,72 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.webapps; + +import android.content.Context; +import android.graphics.Bitmap; +import android.net.Uri; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import org.chromium.base.ApiCompatibilityUtils; +import org.chromium.base.ContextUtils; +import org.chromium.base.FileUtils; +import org.chromium.base.StrictModeContext; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.util.ColorUtils; +import org.chromium.webapk.lib.common.WebApkCommonUtils; + +/** Delegate which uses splash screen screenshot from the WebAPK's content provider. */ +public class ProvidedByWebApkSplashDelegate implements SplashDelegate { + private ViewGroup mParentView; + private ImageView mSplashView; + + @Override + public void showSplash(ViewGroup parentView, WebappInfo webappInfo) { + mParentView = parentView; + + Context appContext = ContextUtils.getApplicationContext(); + mSplashView = new ImageView(appContext); + int backgroundColor = + ColorUtils.getOpaqueColor(webappInfo.backgroundColor(ApiCompatibilityUtils.getColor( + appContext.getResources(), R.color.webapp_default_bg))); + mSplashView.setBackgroundColor(backgroundColor); + + Bitmap splashBitmap = null; + try (StrictModeContext smc = StrictModeContext.allowDiskReads()) { + splashBitmap = FileUtils.queryBitmapFromContentProvider(appContext, + Uri.parse(WebApkCommonUtils.generateSplashContentProviderUri( + webappInfo.webApkPackageName()))); + } + if (splashBitmap != null) { + mSplashView.setScaleType(ImageView.ScaleType.FIT_CENTER); + mSplashView.setImageBitmap(splashBitmap); + } + + parentView.addView(mSplashView); + } + + @Override + public void hideSplash(Tab tab, Runnable finishedHidingCallback) { + // TODO(pkotwicz) implement. + } + + @Override + public boolean isSplashVisible() { + return true; + } + + @Override + public View getSplashViewIfChildOf(ViewGroup parent) { + return (mParentView == parent) ? mSplashView : null; + } + + @Override + public boolean shouldWaitForSubsequentPageLoadToHideSplash() { + return false; + } +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java index 0d0acf89..5c6b49c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SameActivityWebappSplashDelegate.java
@@ -165,7 +165,7 @@ } @Override - public ViewGroup getSplashViewIfChildOf(ViewGroup parent) { + public View getSplashViewIfChildOf(ViewGroup parent) { return (mParentView == parent) ? mSplashScreen : null; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashController.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashController.java index e6300ba..a8568266 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashController.java
@@ -6,6 +6,7 @@ import android.os.SystemClock; import android.support.annotation.IntDef; +import android.view.View; import android.view.ViewGroup; import org.chromium.base.ObserverList; @@ -72,7 +73,7 @@ * splashscreen on top. */ public void setViewHierarchyBelowSplashscreen(ViewGroup viewHierarchy) { - ViewGroup splashView = mDelegate.getSplashViewIfChildOf(mParentView); + View splashView = mDelegate.getSplashViewIfChildOf(mParentView); WarmupManager.transferViewHeirarchy(viewHierarchy, mParentView); if (splashView != null) { mParentView.bringChildToFront(splashView); @@ -80,7 +81,7 @@ } @VisibleForTesting - ViewGroup getSplashScreenForTests() { + View getSplashScreenForTests() { if (mDelegate == null) return null; return mDelegate.getSplashViewIfChildOf(mParentView); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashDelegate.java index cc98721..fbd9505 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/SplashDelegate.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.webapps; +import android.view.View; import android.view.ViewGroup; import org.chromium.chrome.browser.tab.Tab; @@ -20,10 +21,10 @@ boolean isSplashVisible(); /** - * Returns the {@link ViewGroup} containing the splash screen if it is a direct child of + * Returns the {@link View} containing the splash screen if it is a direct child of * the passed-in view. */ - ViewGroup getSplashViewIfChildOf(ViewGroup parent); + View getSplashViewIfChildOf(ViewGroup parent); /** Returns whether to wait for a subsequent page load to hide the splash screen. */ boolean shouldWaitForSubsequentPageLoadToHideSplash();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInfo.java index 10ded2da..cd953f56 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInfo.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkInfo.java
@@ -7,6 +7,7 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.Bitmap; @@ -26,6 +27,7 @@ import org.chromium.chrome.browser.ShortcutSource; import org.chromium.chrome.browser.util.IntentUtils; import org.chromium.content_public.common.ScreenOrientationValues; +import org.chromium.webapk.lib.common.WebApkCommonUtils; import org.chromium.webapk.lib.common.WebApkConstants; import org.chromium.webapk.lib.common.WebApkMetaDataKeys; import org.chromium.webapk.lib.common.WebApkMetaDataUtils; @@ -181,12 +183,23 @@ } } } - boolean isSplashProvidedByWebApk = Build.VERSION.SDK_INT >= Build.VERSION_CODES.M - && IntentUtils.safeGetBooleanExtra( - intent, WebApkConstants.EXTRA_SPLASH_PROVIDED_BY_WEBAPK, false); + boolean canUseSplashFromContentProvider = IntentUtils.safeGetBooleanExtra( + intent, WebApkConstants.EXTRA_SPLASH_PROVIDED_BY_WEBAPK, false); - return create(webApkPackageName, url, source, forceNavigation, isSplashProvidedByWebApk, - shareData); + return create(webApkPackageName, url, source, forceNavigation, + canUseSplashFromContentProvider, shareData); + } + + /** + * Returns whether the WebAPK has a content provider which provides an image to use for the + * splash screen. + */ + private static boolean hasContentProviderForSplash(String webApkPackageName) { + PackageManager packageManager = ContextUtils.getApplicationContext().getPackageManager(); + ProviderInfo providerInfo = packageManager.resolveContentProvider( + WebApkCommonUtils.generateSplashContentProviderAuthority(webApkPackageName), 0); + return (providerInfo != null + && TextUtils.equals(providerInfo.packageName, webApkPackageName)); } private static @WebApkDistributor int getDistributor(Bundle bundle, String packageName) { @@ -214,13 +227,12 @@ * @param source Source that the WebAPK was launched from. * @param forceNavigation Whether the WebAPK should navigate to {@link url} if it is already * running. - * @param isSplashProvidedByWebApk Whether the WebAPK provides a splash screen activity which - * should be launched to hide the web contents while the page is - * loading. + * @param canUseSplashFromContentProvider Whether the WebAPK's content provider can be + * queried for a screenshot of the splash screen. * @param shareData Shared information from the share intent. */ public static WebApkInfo create(String webApkPackageName, String url, int source, - boolean forceNavigation, boolean isSplashProvidedByWebApk, ShareData shareData) { + boolean forceNavigation, boolean canUseSplashFromContentProvider, ShareData shareData) { // Unlike non-WebAPK web apps, WebAPK ids are predictable. A malicious actor may send an // intent with a valid start URL and arbitrary other data. Only use the start URL, the // package name and the ShortcutSource from the launch intent and extract the remaining data @@ -282,6 +294,10 @@ Bitmap splashIcon = decodeBitmapFromDrawable(res, splashIconId); ShareTarget shareTarget = extractAndMergeShareTargets(webApkPackageName); + boolean isSplashProvidedByWebApk = + (canUseSplashFromContentProvider && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M + && hasContentProviderForSplash(webApkPackageName)); + return create(WebApkConstants.WEBAPK_ID_PREFIX + webApkPackageName, url, scope, new Icon(primaryIcon), new Icon(badgeIcon), new Icon(splashIcon), name, shortName, displayMode, orientation, source, themeColor, backgroundColor, webApkPackageName, @@ -318,9 +334,9 @@ * @param shareTarget Data about WebAPK's share intent handlers. * @param forceNavigation Whether the WebAPK should navigate to {@link url} if the * WebAPK is already open. - * @param isSplashProvidedByWebApk Whether the WebAPK provides a splash screen activity which - * should be launched to hide the web contents while the page is - * loading. + * @param isSplashProvidedByWebApk Whether the WebAPK (1) launches an internal activity to + * display the splash screen and (2) has a content provider + * which provides a screenshot of the splash screen. * @param shareData Shared information from the share intent. */ public static WebApkInfo create(String id, String url, String scope, Icon primaryIcon,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkSplashNetworkErrorObserver.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkSplashNetworkErrorObserver.java index 335d8b8..47f3f7d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkSplashNetworkErrorObserver.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebApkSplashNetworkErrorObserver.java
@@ -21,9 +21,6 @@ * start URL. */ public class WebApkSplashNetworkErrorObserver extends EmptyTabObserver { - // No error. - public static final int ERROR_OK = 0; - private Activity mActivity; private WebApkOfflineDialog mOfflineDialog; private String mWebApkName; @@ -47,7 +44,7 @@ if (!navigation.isInMainFrame()) return; switch (navigation.errorCode()) { - case ERROR_OK: + case NetError.OK: if (mOfflineDialog != null) { mOfflineDialog.cancel(); mOfflineDialog = null; @@ -74,7 +71,7 @@ mAllowReloads = false; } - private void onNetworkError(final Tab tab, int errorCode) { + private void onNetworkError(final Tab tab, @NetError int errorCode) { // Do not show the network error dialog more than once (e.g. if the user backed out of // the dialog). if (mDidShowNetworkErrorDialog) return; @@ -100,7 +97,7 @@ } /** Generates network error dialog message for the given error code. */ - private String generateNetworkErrorWebApkDialogMessage(int errorCode) { + private String generateNetworkErrorWebApkDialogMessage(@NetError int errorCode) { Context context = ContextUtils.getApplicationContext(); switch (errorCode) { case NetError.ERR_INTERNET_DISCONNECTED:
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java index 5b55ad9..cb87a24 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappActivity.java
@@ -854,7 +854,7 @@ } @VisibleForTesting - ViewGroup getSplashScreenForTests() { + View getSplashScreenForTests() { return mSplashController.getSplashScreenForTests(); } @@ -889,8 +889,11 @@ protected void showSplash() { try (TraceEvent te = TraceEvent.scoped("WebappActivity.showSplash")) { ViewGroup contentView = (ViewGroup) findViewById(android.R.id.content); - SplashDelegate delegate = new SameActivityWebappSplashDelegate( - this, getLifecycleDispatcher(), mTabObserverRegistrar); + SplashDelegate delegate = mWebappInfo.isSplashProvidedByWebApk() + ? new ProvidedByWebApkSplashDelegate() + : new SameActivityWebappSplashDelegate( + this, getLifecycleDispatcher(), mTabObserverRegistrar); + mSplashController.showSplash(delegate, contentView, mWebappInfo); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java index 5224351..9f829f9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappInfo.java
@@ -380,9 +380,8 @@ } /** - * Returns whether the WebappInfo is for a WebAPK and the WebAPK provides a splash screen - * activity that should be launched on top of the web contents in order to hide the web - * contents while the page is loading. + * Returns Whether the WebAPK (1) launches an internal activity to display the splash screen + * and (2) has a content provider which provides a screenshot of the splash screen. */ public boolean isSplashProvidedByWebApk() { return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java index f52121f..c4632d4 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappLauncherActivity.java
@@ -188,10 +188,9 @@ // WebappActivity is launched without going through WebappLauncherActivity first. WebappActivity.addWebappInfo(webappInfo.id(), webappInfo); - Intent[] launchIntents = - createIntentsToLaunchForWebapp(intent, webappInfo, createTimestamp); - launchingActivity.startActivities(launchIntents); - if (IntentUtils.isIntentForNewTaskOrNewDocument(launchIntents[0])) { + Intent launchIntent = createIntentToLaunchForWebapp(intent, webappInfo, createTimestamp); + IntentUtils.safeStartActivity(launchingActivity, launchIntent); + if (IntentUtils.isIntentForNewTaskOrNewDocument(launchIntent)) { ApiCompatibilityUtils.finishAndRemoveTask(launchingActivity); } else { launchingActivity.finish(); @@ -326,11 +325,8 @@ } } - /** - * Returns intents to launch for the web app. The output array should be sorted in the order - * that the intents should be dispatched with the intent to be dispatched first at index 0. - */ - private static Intent[] createIntentsToLaunchForWebapp( + /** Returns intent to launch for the web app. */ + private static Intent createIntentToLaunchForWebapp( Intent intent, @NonNull WebappInfo webappInfo, long createTimestamp) { String launchActivityClassName = selectWebappActivitySubclass(webappInfo); @@ -338,29 +334,19 @@ // crbug.com/702998. finishIfReusingActivity(launchActivityClassName, webappInfo.id()); - Intent showSplashIntent = null; - if (webappInfo.isSplashProvidedByWebApk()) { - showSplashIntent = new Intent(WebApkConstants.ACTION_SHOW_SPLASH); - showSplashIntent.setPackage(webappInfo.webApkPackageName()); - showSplashIntent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - } - - Intent webappActivityLaunchIntent = new Intent(); - webappActivityLaunchIntent.setClassName( - ContextUtils.getApplicationContext(), launchActivityClassName); - webappInfo.setWebappIntentExtras(webappActivityLaunchIntent); - webappActivityLaunchIntent.setAction(Intent.ACTION_VIEW); + Intent launchIntent = new Intent(); + launchIntent.setClassName(ContextUtils.getApplicationContext(), launchActivityClassName); + webappInfo.setWebappIntentExtras(launchIntent); + launchIntent.setAction(Intent.ACTION_VIEW); // On L+, firing intents with the exact same data should relaunch a particular // Activity. - webappActivityLaunchIntent.setData( - Uri.parse(WebappActivity.WEBAPP_SCHEME + "://" + webappInfo.id())); + launchIntent.setData(Uri.parse(WebappActivity.WEBAPP_SCHEME + "://" + webappInfo.id())); - IntentHandler.addTimestampToIntent(webappActivityLaunchIntent, createTimestamp); + IntentHandler.addTimestampToIntent(launchIntent, createTimestamp); // Pass through WebAPK shell launch timestamp to the new intent. long shellLaunchTimestamp = IntentHandler.getWebApkShellLaunchTimestampFromIntent(intent); - IntentHandler.addShellLaunchTimestampToIntent( - webappActivityLaunchIntent, shellLaunchTimestamp); + IntentHandler.addShellLaunchTimestampToIntent(launchIntent, shellLaunchTimestamp); // Setting FLAG_ACTIVITY_CLEAR_TOP handles 2 edge cases: // - If a legacy PWA is launching from a notification, we want to ensure that the URL being @@ -373,17 +359,15 @@ // CustomTabActivity activity and go back to the WebAPK activity. It is intentional that // Custom Tab will not be reachable with a back button. if (webappInfo.isSplashProvidedByWebApk()) { - webappActivityLaunchIntent.setFlags( + launchIntent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_ANIMATION); } else { - webappActivityLaunchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | ApiCompatibilityUtils.getActivityNewDocumentFlag() | Intent.FLAG_ACTIVITY_CLEAR_TOP); } - return (showSplashIntent == null) - ? new Intent[] {webappActivityLaunchIntent} - : new Intent[] {webappActivityLaunchIntent, showSplashIntent}; + return launchIntent; } /** Tries to create WebappInfo/WebApkInfo for the intent. */
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java index 3b091d6d..f5063d9 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ItemChooserDialogTest.java
@@ -23,6 +23,7 @@ import org.junit.runner.RunWith; import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.RetryOnFailure; import org.chromium.chrome.R; import org.chromium.chrome.test.ChromeActivityTestRule; @@ -472,6 +473,7 @@ @Test @LargeTest + @DisabledTest(message = "crbug.com/958558") public void testSimpleItemSelection() { Dialog dialog = mChooserDialog.getDialogForTesting(); Assert.assertTrue(dialog.isShowing());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java index 28a183e..dce4a9d8 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java
@@ -10,6 +10,7 @@ import android.net.Uri; import android.support.customtabs.TrustedWebUtils; import android.support.test.InstrumentationRegistry; +import android.view.View; import android.view.ViewGroup; import org.junit.Assert; @@ -221,18 +222,24 @@ // we are waiting for WebappActivity#getActivityTab() to be non-null because we want // to ensure that native has been loaded. // We also wait till the splash screen has finished initializing. - ViewGroup splashScreen = getActivity().getSplashScreenForTests(); - return getActivity().getActivityTab() != null && splashScreen != null - && splashScreen.getChildCount() > 0; + if (getActivity().getActivityTab() == null) return false; + + View splashScreen = getActivity().getSplashScreenForTests(); + if (splashScreen == null) return false; + + return (!(splashScreen instanceof ViewGroup) + || ((ViewGroup) splashScreen).getChildCount() > 0); } }, STARTUP_TIMEOUT, CriteriaHelper.DEFAULT_POLLING_INTERVAL); InstrumentationRegistry.getInstrumentation().waitForIdleSync(); - ViewGroup splashScreen = getActivity().getSplashScreenForTests(); + View splashScreen = getActivity().getSplashScreenForTests(); if (splashScreen == null) { Assert.fail("No splash screen available."); } - return splashScreen; + // TODO(pkotwicz): Change return type in order to accommodate new-style WebAPKs. + // (crbug.com/958288) + return (splashScreen instanceof ViewGroup) ? (ViewGroup) splashScreen : null; } /**
diff --git a/chrome/android/profiles/newest.txt b/chrome/android/profiles/newest.txt index 4db5b6f..f4a6d896 100644 --- a/chrome/android/profiles/newest.txt +++ b/chrome/android/profiles/newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-76.0.3781.0_rc-r1-merged.afdo.bz2 \ No newline at end of file +chromeos-chrome-amd64-76.0.3782.0_rc-r1-merged.afdo.bz2 \ No newline at end of file
diff --git a/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkCommonUtils.java b/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkCommonUtils.java index 20397322..6043a80 100644 --- a/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkCommonUtils.java +++ b/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkCommonUtils.java
@@ -14,4 +14,21 @@ public static String getRuntimeDexName(int version) { return "webapk" + version + ".dex"; } + + /** + * Returns authority of the content provider which provides the splash screen for the given + * WebAPK. + */ + public static String generateSplashContentProviderAuthority(String webApkPackageName) { + return webApkPackageName + ".SplashContentProvider"; + } + + /** + * Returns the URI of the content provider which provides the splash screen for the given + * WebAPK. + */ + public static String generateSplashContentProviderUri(String webApkPackageName) { + return "content://" + generateSplashContentProviderAuthority(webApkPackageName) + + "/cached_splash_image"; + } }
diff --git a/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkConstants.java b/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkConstants.java index 65a3ac3..037a9b0 100644 --- a/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkConstants.java +++ b/chrome/android/webapk/libs/common/src/org/chromium/webapk/lib/common/WebApkConstants.java
@@ -41,11 +41,4 @@ /** Name of the shared preferences file. */ public static final String PREF_PACKAGE = "org.chromium.webapk.shell_apk"; - - /** - * Action used by host browser to launch splash screen activity to hide web contents while the - * page is loading. - */ - public static final String ACTION_SHOW_SPLASH = - "org.chromium.webapk.shell_apk.ACTION_SHOW_SPLASH"; }
diff --git a/chrome/android/webapk/shell_apk/AndroidManifest.xml b/chrome/android/webapk/shell_apk/AndroidManifest.xml index 076d97fa..b280718 100644 --- a/chrome/android/webapk/shell_apk/AndroidManifest.xml +++ b/chrome/android/webapk/shell_apk/AndroidManifest.xml
@@ -50,7 +50,7 @@ [[#use_new_splash]] <activity android:name="org.chromium.webapk.shell_apk.h2o.H2OOpaqueMainActivity" - android:theme="@style/EarlySplashTheme" + android:theme="@style/SplashTheme" android:relinquishTaskIdentity="true" android:excludeFromRecents="true" android:enabled="false" @@ -61,18 +61,12 @@ </intent-filter> </activity> <activity android:name="org.chromium.webapk.shell_apk.h2o.SplashActivity" - android:theme="@style/EarlySplashTheme" - android:launchMode="singleTask" - android:configChanges="orientation"> + android:theme="@style/SplashTheme" + android:launchMode="singleTask"> </activity> - <activity android:name="org.chromium.webapk.shell_apk.h2o.OverlaySplashActivity" - android:theme="@style/OverlaySplashTheme" - android:exported="true"> - <intent-filter> - <action android:name="org.chromium.webapk.shell_apk.ACTION_SHOW_SPLASH"></action> - <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> + <provider android:name="org.chromium.webapk.shell_apk.h2o.SplashContentProvider" + android:authorities="{{manifest_package}}.SplashContentProvider" + android:exported="true" /> [[/use_new_splash]] <activity android:name="org.chromium.webapk.shell_apk.[[#use_new_splash]]h2o.H2O[[/use_new_splash]]MainActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"
diff --git a/chrome/android/webapk/shell_apk/BUILD.gn b/chrome/android/webapk/shell_apk/BUILD.gn index 848fe00..58194d4 100644 --- a/chrome/android/webapk/shell_apk/BUILD.gn +++ b/chrome/android/webapk/shell_apk/BUILD.gn
@@ -61,8 +61,9 @@ "src/org/chromium/webapk/shell_apk/h2o/H2OMainActivity.java", "src/org/chromium/webapk/shell_apk/h2o/H2OOpaqueMainActivity.java", "src/org/chromium/webapk/shell_apk/h2o/H2OTransparentLauncherActivity.java", - "src/org/chromium/webapk/shell_apk/h2o/OverlaySplashActivity.java", "src/org/chromium/webapk/shell_apk/h2o/SplashActivity.java", + "src/org/chromium/webapk/shell_apk/h2o/SplashContentProvider.java", + "src/org/chromium/webapk/shell_apk/h2o/SplashUtils.java", ] deps += [ "//chrome/android/webapk/libs/common:splash_java" ] } @@ -306,10 +307,12 @@ android_library("shell_apk_javatests") { testonly = true - java_files = - [ "javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java" ] + java_files = [ + "javatests/src/org/chromium/webapk/shell_apk/DexLoaderTest.java", + "javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java", + ] deps = [ - ":webapk_generated_webapk_java", + ":new_splash_webapk_generated_webapk_java", "//base:base_java", "//base:base_java_test_support", "//chrome/android/webapk/libs/common:common_java",
diff --git a/chrome/android/webapk/shell_apk/current_version/current_version.gni b/chrome/android/webapk/shell_apk/current_version/current_version.gni index 9d55305..cb0ba68 100644 --- a/chrome/android/webapk/shell_apk/current_version/current_version.gni +++ b/chrome/android/webapk/shell_apk/current_version/current_version.gni
@@ -12,4 +12,4 @@ # //chrome/android/webapk/shell_apk:webapk is changed. This includes # Java files, Android resource files and AndroidManifest.xml. Does not affect # Chrome.apk -current_shell_apk_version = 87 +current_shell_apk_version = 88
diff --git a/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java b/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java new file mode 100644 index 0000000..9b79553 --- /dev/null +++ b/chrome/android/webapk/shell_apk/javatests/src/org/chromium/webapk/shell_apk/h2o/SplashUtilsTest.java
@@ -0,0 +1,58 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.webapk.shell_apk.h2o; + +import android.graphics.Bitmap; +import android.support.test.InstrumentationRegistry; +import android.support.test.filters.SmallTest; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.chromium.base.test.BaseJUnit4ClassRunner; + +/** Tests for {@link SplashUtils} */ +@RunWith(BaseJUnit4ClassRunner.class) +public class SplashUtilsTest { + /** + * Tests that {@link SplashUtils#createAndImmediatelyScreenshotSplashView{}} returns a non-blank + * bitmap. + */ + @Test + @SmallTest + public void testCreateAndImmediatelyScreenshotSplashView() { + // Request large splash screen so that icon does not take up all of the space. + final int requestedSplashWidth = 1000; + final int requestedSplashHeight = 1000; + Bitmap screenshot = SplashUtils.createAndImmediatelyScreenshotSplashView( + InstrumentationRegistry.getTargetContext(), requestedSplashWidth, + requestedSplashHeight, 1024 * 1024 * 4 /* maxSizeBytes */); + Assert.assertNotNull(screenshot); + Assert.assertEquals(requestedSplashWidth, screenshot.getWidth()); + Assert.assertEquals(requestedSplashHeight, screenshot.getHeight()); + + // Check that the screenshot is non-blank. + Assert.assertTrue(!allPixelsHaveSameColor(screenshot)); + } + + private boolean allPixelsHaveSameColor(Bitmap bitmap) { + int width = bitmap.getWidth(); + int height = bitmap.getHeight(); + if (width == 0 || height == 0) return true; + + int[] pixels = new int[width * height]; + try { + bitmap.getPixels(pixels, 0, width, 0, 0, width, height); + } catch (Exception e) { + Assert.fail(); + } + int firstColor = pixels[0]; + for (int i = 1; i < pixels.length; ++i) { + if (pixels[i] != firstColor) return false; + } + return true; + } +}
diff --git a/chrome/android/webapk/shell_apk/res_h2o/values-v17/styles.xml b/chrome/android/webapk/shell_apk/res_h2o/values-v17/styles.xml index d99aaaf..cf80bab7 100644 --- a/chrome/android/webapk/shell_apk/res_h2o/values-v17/styles.xml +++ b/chrome/android/webapk/shell_apk/res_h2o/values-v17/styles.xml
@@ -9,16 +9,4 @@ <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@color/background_color</item> </style> - - <!-- Must not be translucent so that background color is shown right when the - WebAPK is launched. --> - <style name="EarlySplashTheme" parent="SplashTheme"> - <item name="android:windowIsTranslucent">false</item> - </style> - - <!-- Must be translucent so that host browser loads page while splash screen - is up. --> - <style name="OverlaySplashTheme" parent="SplashTheme"> - <item name="android:windowIsTranslucent">true</item> - </style> </resources>
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkSharedPreferences.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkSharedPreferences.java index 0ef7f74..6d41de04 100644 --- a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkSharedPreferences.java +++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/WebApkSharedPreferences.java
@@ -31,6 +31,12 @@ public static final String PREF_REQUEST_HOST_BROWSER_RELAUNCH_TIMESTAMP = "org.chromium.webapk.shell_apk.request_host_browser_relaunch_timestamp"; + /** Width of splash screen during previous WebAPK launch. */ + public static final String PREF_SPLASH_WIDTH = "org.chromium.webapk.shell_apk.splash_width"; + + /** Height of splash screen during previous WebAPK launch. */ + public static final String PREF_SPLASH_HEIGHT = "org.chromium.webapk.shell_apk.splash_height"; + public static SharedPreferences getPrefs(Context context) { return context.getSharedPreferences(PREF_PACKAGE, Context.MODE_PRIVATE); }
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/OverlaySplashActivity.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/OverlaySplashActivity.java deleted file mode 100644 index 4959c858..0000000 --- a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/OverlaySplashActivity.java +++ /dev/null
@@ -1,54 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package org.chromium.webapk.shell_apk.h2o; - -import android.app.Activity; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Color; -import android.os.Bundle; -import android.widget.FrameLayout; - -import org.chromium.webapk.lib.common.WebApkMetaDataKeys; -import org.chromium.webapk.lib.common.WebApkMetaDataUtils; -import org.chromium.webapk.lib.common.splash.SplashLayout; -import org.chromium.webapk.shell_apk.R; -import org.chromium.webapk.shell_apk.WebApkUtils; - -/** - * Splash screen activity which is launched on top of host browser and stays - * up till the host browser draws a non empty frame. - */ -public class OverlaySplashActivity extends Activity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - showSplashScreen(); - } - - // TODO(pkotwicz): Make SplashActivity and OverlaySplashActivity share code. - private void showSplashScreen() { - Bundle metadata = WebApkUtils.readMetaData(this); - Resources resources = getResources(); - - Bitmap icon = WebApkUtils.decodeBitmapFromDrawable(resources, R.drawable.splash_icon); - @SplashLayout.IconClassification - int iconClassification = SplashLayout.classifyIcon(resources, icon, false); - - FrameLayout layout = new FrameLayout(this); - setContentView(layout); - - int backgroundColor = WebApkUtils.getColor(resources, R.color.background_color); - SplashLayout.createLayout(this, layout, icon, false /* isIconAdaptive */, - iconClassification, resources.getString(R.string.name), - WebApkUtils.shouldUseLightForegroundOnBackground(backgroundColor)); - - int themeColor = (int) WebApkMetaDataUtils.getLongFromMetaData( - metadata, WebApkMetaDataKeys.THEME_COLOR, Color.BLACK); - WebApkUtils.setStatusBarColor( - getWindow(), WebApkUtils.getDarkenedColorForStatusBar(themeColor)); - } -}
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashActivity.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashActivity.java index 6db22a1..bdd873f 100644 --- a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashActivity.java +++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashActivity.java
@@ -9,26 +9,36 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; -import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Color; import android.os.Bundle; import android.os.SystemClock; -import android.widget.FrameLayout; +import android.view.View; +import android.view.ViewTreeObserver; import org.chromium.webapk.lib.common.WebApkMetaDataKeys; import org.chromium.webapk.lib.common.WebApkMetaDataUtils; -import org.chromium.webapk.lib.common.splash.SplashLayout; import org.chromium.webapk.shell_apk.HostBrowserLauncher; import org.chromium.webapk.shell_apk.HostBrowserLauncherParams; import org.chromium.webapk.shell_apk.LaunchHostBrowserSelector; -import org.chromium.webapk.shell_apk.R; import org.chromium.webapk.shell_apk.WebApkUtils; +import java.io.ByteArrayOutputStream; +import java.io.IOException; + /** Displays splash screen. */ public class SplashActivity extends Activity { private static final String SAVED_INSTANCE_STATE_WAS_BROWSER_LAUNCHED = "wasBrowserLaunched"; + /** Whether {@link mSplashView} was laid out. */ + private boolean mSplashViewLaidOut; + + /** Task to screenshot and encode splash. */ + @SuppressWarnings("NoAndroidAsyncTaskCheck") + private android.os.AsyncTask mScreenshotSplashTask; + + private View mSplashView; + private HostBrowserLauncherParams mParams; private boolean mWasBrowserLaunched; private boolean mFinishOnResume; @@ -73,6 +83,16 @@ } @Override + public void onDestroy() { + SplashContentProvider.clearCache(); + if (mScreenshotSplashTask != null) { + mScreenshotSplashTask.cancel(false); + mScreenshotSplashTask = null; + } + super.onDestroy(); + } + + @Override public void onSaveInstanceState(Bundle outState) { outState.putBoolean(SAVED_INSTANCE_STATE_WAS_BROWSER_LAUNCHED, mWasBrowserLaunched); } @@ -98,20 +118,6 @@ private void showSplashScreen() { Bundle metadata = WebApkUtils.readMetaData(this); - Resources resources = getResources(); - - Bitmap icon = WebApkUtils.decodeBitmapFromDrawable(resources, R.drawable.splash_icon); - @SplashLayout.IconClassification - int iconClassification = SplashLayout.classifyIcon(resources, icon, false); - - FrameLayout layout = new FrameLayout(this); - setContentView(layout); - - int backgroundColor = WebApkUtils.getColor(resources, R.color.background_color); - SplashLayout.createLayout(this, layout, icon, false /* isIconAdaptive */, - iconClassification, resources.getString(R.string.name), - WebApkUtils.shouldUseLightForegroundOnBackground(backgroundColor)); - int themeColor = (int) WebApkMetaDataUtils.getLongFromMetaData( metadata, WebApkMetaDataKeys.THEME_COLOR, Color.BLACK); WebApkUtils.setStatusBarColor( @@ -121,6 +127,20 @@ if (orientation != ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) { setRequestedOrientation(orientation); } + + mSplashView = SplashUtils.createSplashView(this); + mSplashView.getViewTreeObserver().addOnGlobalLayoutListener( + new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + if (mSplashView.getWidth() == 0 || mSplashView.getHeight() == 0) return; + + mSplashView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + mSplashViewLaidOut = true; + maybeScreenshotSplash(); + } + }); + setContentView(mSplashView); } /** Called once the host browser has been selected. */ @@ -141,7 +161,67 @@ return; } + mParams = params; + maybeScreenshotSplash(); + } + + /** + * Screenshots {@link mSplashView} if: + * - host browser was selected + * AND + * - splash view was laid out + */ + private void maybeScreenshotSplash() { + if (mParams == null || !mSplashViewLaidOut) return; + + screenshotAndEncodeSplashInBackground(); + } + + /** + * Launches the host browser on top of {@link SplashActivity}. + * @param splashPngEncoded PNG-encoded screenshot of {@link mSplashView}. + */ + private void launch(byte[] splashPngEncoded) { + SplashContentProvider.cache( + this, splashPngEncoded, mSplashView.getWidth(), mSplashView.getHeight()); mWasBrowserLaunched = true; - H2OLauncher.launch(this, params); + H2OLauncher.launch(this, mParams); + mParams = null; + } + + /** + * Screenshots and PNG-encodes {@link mSplashView} on a background thread. + */ + @SuppressWarnings("NoAndroidAsyncTaskCheck") + private void screenshotAndEncodeSplashInBackground() { + final Bitmap bitmap = SplashUtils.screenshotView( + mSplashView, SplashContentProvider.MAX_TRANSFER_SIZE_BYTES); + if (bitmap == null) { + launch(null); + return; + } + + mScreenshotSplashTask = + new android.os + .AsyncTask<Void, Void, byte[]>() { + @Override + protected byte[] doInBackground(Void... args) { + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); + return out.toByteArray(); + } catch (IOException e) { + } + return null; + } + + @Override + protected void onPostExecute(byte[] splashPngEncoded) { + mScreenshotSplashTask = null; + launch(splashPngEncoded); + } + + // Do nothing if task was cancelled. + } + .executeOnExecutor(android.os.AsyncTask.THREAD_POOL_EXECUTOR); } }
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashContentProvider.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashContentProvider.java new file mode 100644 index 0000000..1700de3a --- /dev/null +++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashContentProvider.java
@@ -0,0 +1,175 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.webapk.shell_apk.h2o; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.content.Context; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.ParcelFileDescriptor; + +import org.chromium.webapk.lib.common.WebApkCommonUtils; +import org.chromium.webapk.shell_apk.WebApkSharedPreferences; + +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.util.concurrent.atomic.AtomicReference; + +/** ContentProvider for screenshot of splash screen. */ +public class SplashContentProvider + extends ContentProvider implements ContentProvider.PipeDataWriter<Void> { + /** Holds value which gets cleared after {@link ExpiringData#CLEAR_DATA_INTERVAL_MS}. */ + private static class ExpiringData { + /** Time in milliseconds after constructing the object to clear the cached data. */ + private static final int CLEAR_CACHED_DATA_INTERVAL_MS = 10000; + + private byte[] mCachedData; + private Handler mHandler; + + public ExpiringData(byte[] cachedData, Runnable expiryTask) { + mCachedData = cachedData; + mHandler = new Handler(); + mHandler.postDelayed(expiryTask, CLEAR_CACHED_DATA_INTERVAL_MS); + } + + public byte[] getCachedData() { + return mCachedData; + } + + public void removeCallbacks() { + mHandler.removeCallbacksAndMessages(null); + } + } + + /** + * Maximum size in bytes of screenshot to transfer to browser. The screenshot should be + * downsampled to fit. Capping the maximum size of the screenshot decreases bitmap encoding + * time and image transfer time. + */ + public static final int MAX_TRANSFER_SIZE_BYTES = 1024 * 1024 * 4; + + /** Mime type of transferred screenshot. */ + private static final String SPLASH_MIME_TYPE = "image/png"; + + private static AtomicReference<ExpiringData> sCachedSplashPngBytes = new AtomicReference<>(); + + /** The URI handled by this content provider. */ + private String mContentProviderUri; + + /** + * Temporarily caches the passed-in splash screen screenshot. To preserve memory, the cached + * data is cleared after a delay. + */ + public static void cache( + Context context, byte[] splashPngBytes, int splashWidth, int splashHeight) { + SharedPreferences.Editor editor = WebApkSharedPreferences.getPrefs(context).edit(); + editor.putInt(WebApkSharedPreferences.PREF_SPLASH_WIDTH, splashWidth); + editor.putInt(WebApkSharedPreferences.PREF_SPLASH_HEIGHT, splashHeight); + editor.apply(); + + getAndSetCachedData(splashPngBytes); + } + + public static void clearCache() { + getAndSetCachedData(null); + } + + /** + * Sets the cached splash screen screenshot and returns the old one. + * Thread safety: Can be called from any thread. + */ + private static byte[] getAndSetCachedData(byte[] newSplashPngBytes) { + ExpiringData newData = null; + if (newSplashPngBytes != null) { + newData = new ExpiringData(newSplashPngBytes, SplashContentProvider::clearCache); + } + ExpiringData oldCachedData = sCachedSplashPngBytes.getAndSet(newData); + if (oldCachedData == null) return null; + + oldCachedData.removeCallbacks(); + return oldCachedData.getCachedData(); + } + + @Override + public boolean onCreate() { + mContentProviderUri = + WebApkCommonUtils.generateSplashContentProviderUri(getContext().getPackageName()); + return true; + } + + @Override + public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + if (uri != null && uri.toString().equals(mContentProviderUri)) { + return openPipeHelper(null, null, null, null, this); + } + return null; + } + + @Override + public void writeDataToPipe( + ParcelFileDescriptor output, Uri uri, String mimeType, Bundle opts, Void unused) { + try (OutputStream out = new FileOutputStream(output.getFileDescriptor())) { + byte[] cachedSplashPngBytes = getAndSetCachedData(null); + if (cachedSplashPngBytes != null) { + out.write(cachedSplashPngBytes); + } else { + // One way that this case gets hit is when the WebAPK is brought to the foreground + // via Android Recents after the Android OOM killer has killed the host browser but + // not SplashActivity. + Bitmap splashScreenshot = recreateAndScreenshotSplash(); + if (splashScreenshot != null) { + splashScreenshot.compress(Bitmap.CompressFormat.PNG, 100, out); + } + } + out.flush(); + } catch (Exception e) { + } + } + + @Override + public String getType(Uri uri) { + if (uri != null && uri.toString().equals(mContentProviderUri)) { + return SPLASH_MIME_TYPE; + } + return null; + } + + @Override + public int update(Uri uri, ContentValues values, String where, String[] whereArgs) { + throw new UnsupportedOperationException(); + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + throw new UnsupportedOperationException(); + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + throw new UnsupportedOperationException(); + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + throw new UnsupportedOperationException(); + } + + /** Builds splashscreen at size that it was last displayed and screenshots it. */ + private Bitmap recreateAndScreenshotSplash() { + Context context = getContext().getApplicationContext(); + SharedPreferences prefs = WebApkSharedPreferences.getPrefs(context); + int splashWidth = prefs.getInt(WebApkSharedPreferences.PREF_SPLASH_WIDTH, -1); + int splashHeight = prefs.getInt(WebApkSharedPreferences.PREF_SPLASH_HEIGHT, -1); + return SplashUtils.createAndImmediatelyScreenshotSplashView( + context, splashWidth, splashHeight, MAX_TRANSFER_SIZE_BYTES); + } +}
diff --git a/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashUtils.java b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashUtils.java new file mode 100644 index 0000000..06716b3 --- /dev/null +++ b/chrome/android/webapk/shell_apk/src/org/chromium/webapk/shell_apk/h2o/SplashUtils.java
@@ -0,0 +1,73 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.webapk.shell_apk.h2o; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.view.View; +import android.widget.FrameLayout; + +import org.chromium.webapk.lib.common.splash.SplashLayout; +import org.chromium.webapk.shell_apk.R; +import org.chromium.webapk.shell_apk.WebApkUtils; + +/** Contains splash screen related utility methods. */ +public class SplashUtils { + /** Creates view with splash screen. */ + public static View createSplashView(Context context) { + Resources resources = context.getResources(); + Bitmap icon = WebApkUtils.decodeBitmapFromDrawable(resources, R.drawable.splash_icon); + @SplashLayout.IconClassification + int iconClassification = SplashLayout.classifyIcon(resources, icon, false); + int backgroundColor = WebApkUtils.getColor(resources, R.color.background_color); + + FrameLayout layout = new FrameLayout(context); + SplashLayout.createLayout(context, layout, icon, false /* isIconAdaptive */, + iconClassification, resources.getString(R.string.name), + WebApkUtils.shouldUseLightForegroundOnBackground(backgroundColor)); + return layout; + } + + /** + * Returns bitmap with screenshot of passed-in view. Downsamples screenshot so that it is + * no more than {@maxSizeInBytes}. + */ + public static Bitmap screenshotView(View view, int maxSizeBytes) { + // Implementation copied from Android shared element code - + // TransitionUtils#createViewBitmap(). + + int bitmapWidth = view.getWidth(); + int bitmapHeight = view.getHeight(); + if (bitmapWidth == 0 || bitmapHeight == 0) return null; + + float scale = Math.min(1f, ((float) maxSizeBytes) / (4 * bitmapWidth * bitmapHeight)); + bitmapWidth = Math.round(bitmapWidth * scale); + bitmapHeight = Math.round(bitmapHeight * scale); + + Matrix matrix = new Matrix(); + matrix.postScale(scale, scale); + + Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + canvas.concat(matrix); + view.draw(canvas); + return bitmap; + } + + /** Creates splash view with the passed-in dimensions and screenshots it. */ + public static Bitmap createAndImmediatelyScreenshotSplashView( + Context context, int splashWidth, int splashHeight, int maxSizeBytes) { + if (splashWidth <= 0 || splashHeight <= 0) return null; + + View splashView = createSplashView(context); + splashView.measure(View.MeasureSpec.makeMeasureSpec(splashWidth, View.MeasureSpec.EXACTLY), + View.MeasureSpec.makeMeasureSpec(splashHeight, View.MeasureSpec.EXACTLY)); + splashView.layout(0, 0, splashWidth, splashHeight); + return screenshotView(splashView, maxSizeBytes); + } +}
diff --git a/chrome/android/webapk/test/BUILD.gn b/chrome/android/webapk/test/BUILD.gn index a50cfc1..4cea7cd 100644 --- a/chrome/android/webapk/test/BUILD.gn +++ b/chrome/android/webapk/test/BUILD.gn
@@ -10,6 +10,7 @@ testonly = true java_files = [ "src/org/chromium/webapk/test/WebApkTestHelper.java" ] deps = [ + "//chrome/android/webapk/libs/common:common_java", "//third_party/mockito:mockito_java", "//third_party/robolectric:robolectric_all_java", ]
diff --git a/chrome/android/webapk/test/DEPS b/chrome/android/webapk/test/DEPS new file mode 100644 index 0000000..a8953d02 --- /dev/null +++ b/chrome/android/webapk/test/DEPS
@@ -0,0 +1,3 @@ +include_rules = [ + "+chrome/android/webapk/libs/common", +]
diff --git a/chrome/android/webapk/test/src/org/chromium/webapk/test/WebApkTestHelper.java b/chrome/android/webapk/test/src/org/chromium/webapk/test/WebApkTestHelper.java index 21c697f..48e00f2 100644 --- a/chrome/android/webapk/test/src/org/chromium/webapk/test/WebApkTestHelper.java +++ b/chrome/android/webapk/test/src/org/chromium/webapk/test/WebApkTestHelper.java
@@ -8,6 +8,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; +import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.os.Bundle; @@ -17,6 +18,8 @@ import org.robolectric.Shadows; import org.robolectric.shadows.ShadowPackageManager; +import org.chromium.webapk.lib.common.WebApkCommonUtils; + import java.net.URISyntaxException; /** @@ -87,21 +90,25 @@ ShadowPackageManager.resources.put(packageName, res); } - private static PackageInfo newPackageInfo(String packageName, Bundle metaData, + private static PackageInfo newPackageInfo(String webApkPackageName, Bundle metaData, String[] shareTargetActivityClassNames, Bundle[] shareTargetMetaData) { ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.metaData = metaData; PackageInfo packageInfo = new PackageInfo(); - packageInfo.packageName = packageName; + packageInfo.packageName = webApkPackageName; packageInfo.applicationInfo = applicationInfo; if (shareTargetMetaData != null) { packageInfo.activities = new ActivityInfo[shareTargetMetaData.length]; for (int i = 0; i < shareTargetMetaData.length; ++i) { - packageInfo.activities[i] = newActivityInfo( - packageName, shareTargetActivityClassNames[i], shareTargetMetaData[i]); + packageInfo.activities[i] = newActivityInfo(webApkPackageName, + shareTargetActivityClassNames[i], shareTargetMetaData[i]); } } + + packageInfo.providers = + new ProviderInfo[] {newSplashContentProviderInfo(webApkPackageName)}; + return packageInfo; } @@ -121,4 +128,12 @@ activityInfo.metaData = metaData; return activityInfo; } + + private static ProviderInfo newSplashContentProviderInfo(String webApkPackageName) { + ProviderInfo providerInfo = new ProviderInfo(); + providerInfo.authority = + WebApkCommonUtils.generateSplashContentProviderAuthority(webApkPackageName); + providerInfo.packageName = webApkPackageName; + return providerInfo; + } }
diff --git a/chrome/app/chrome_content_browser_overlay_manifest.cc b/chrome/app/chrome_content_browser_overlay_manifest.cc index ed1c9a10..0d61110 100644 --- a/chrome/app/chrome_content_browser_overlay_manifest.cc +++ b/chrome/app/chrome_content_browser_overlay_manifest.cc
@@ -144,6 +144,7 @@ safe_browsing::mojom::SafeBrowsing>()) .RequireCapability("apps", "app_service") .RequireCapability("ash", "system_ui") + // Used by ShelfTestApi and ShelfIntegrationTestApi .RequireCapability("ash", "test") .RequireCapability("ash", "display") // Only used in the classic Ash case
diff --git a/chrome/app/chrome_main_delegate.cc b/chrome/app/chrome_main_delegate.cc index 887c8fd..ee7eadb 100644 --- a/chrome/app/chrome_main_delegate.cc +++ b/chrome/app/chrome_main_delegate.cc
@@ -521,7 +521,8 @@ #if defined(OS_CHROMEOS) // The feature list depends on BrowserPolicyConnectorChromeOS which depends - // on DBus, so initialize it here. + // on DBus, so initialize it here. Some D-Bus clients may depend on feature + // list, so initialize them separately later at the end of this function. chromeos::InitializeDBus(); #endif @@ -536,6 +537,11 @@ LoadLocalState(chrome_feature_list_creator, is_running_tests); chrome_feature_list_creator->SetApplicationLocale(actual_locale); chrome_feature_list_creator->OverrideCachedUIStrings(); + +#if defined(OS_CHROMEOS) + // Initialize D-Bus clients that depend on feature list. + chromeos::InitializeFeatureListDependentDBus(); +#endif } bool ChromeMainDelegate::ShouldCreateFeatureList() {
diff --git a/chrome/app/chrome_packaged_service_manifests.cc b/chrome/app/chrome_packaged_service_manifests.cc index 4586233..b483065 100644 --- a/chrome/app/chrome_packaged_service_manifests.cc +++ b/chrome/app/chrome_packaged_service_manifests.cc
@@ -120,6 +120,7 @@ InstanceSharingPolicy::kSingleton) .Build()) .RequireCapability("network", "network_service") + .RequireCapability("device", "device:wake_lock") .Build()}; return *manifest; }
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index fcea933..7a37d87 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -1078,14 +1078,13 @@ "performance_manager/decorators/page_almost_idle_decorator.h", "performance_manager/graph/frame_node_impl.cc", "performance_manager/graph/frame_node_impl.h", - "performance_manager/graph/graph.cc", - "performance_manager/graph/graph.h", + "performance_manager/graph/graph_impl.cc", + "performance_manager/graph/graph_impl.h", "performance_manager/graph/node_attached_data.cc", "performance_manager/graph/node_attached_data.h", "performance_manager/graph/node_attached_data_impl.h", "performance_manager/graph/node_base.cc", "performance_manager/graph/node_base.h", - "performance_manager/graph/node_type.h", "performance_manager/graph/page_node_impl.cc", "performance_manager/graph/page_node_impl.h", "performance_manager/graph/process_node_impl.cc", @@ -1106,6 +1105,7 @@ "performance_manager/performance_manager_clock.h", "performance_manager/performance_manager_tab_helper.cc", "performance_manager/performance_manager_tab_helper.h", + "performance_manager/public/graph/node_type.h", "performance_manager/render_process_user_data.cc", "performance_manager/render_process_user_data.h", "performance_manager/web_contents_proxy.cc",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index e727a763..78854ed 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -3916,6 +3916,11 @@ autofill::features::kAutofillUseMobileLabelDisambiguation)}, #endif // defined(OS_ANDROID) + {"autofill-prune-suggestions", + flag_descriptions::kAutofillPruneSuggestionsName, + flag_descriptions::kAutofillPruneSuggestionsDescription, kOsAll, + FEATURE_VALUE_TYPE(autofill::features::kAutofillPruneSuggestions)}, + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/android/download/download_manager_service.cc b/chrome/browser/android/download/download_manager_service.cc index 7fab0bf4..4567806 100644 --- a/chrome/browser/android/download/download_manager_service.cc +++ b/chrome/browser/android/download/download_manager_service.cc
@@ -33,6 +33,7 @@ #include "components/download/public/common/download_item_impl.h" #include "components/download/public/common/download_url_loader_factory_getter_impl.h" #include "components/download/public/common/simple_download_manager_coordinator.h" +#include "components/download/public/common/url_download_handler_factory.h" #include "components/download/public/task/task_manager_impl.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/download_item_utils.h" @@ -248,6 +249,9 @@ content::BrowserContext* context) { if (in_progress_manager_) { DCHECK(!context->IsOffTheRecord()); + // We are no longer interested in listening to |in_progress_manager_|, + // remove this object from being the delegate. + in_progress_manager_->SetDelegate(nullptr); // Set |is_pending_downloads_loaded_| to false so that we need to wait for // download history to initialize before performing new download actions. is_pending_downloads_loaded_ = false; @@ -693,7 +697,7 @@ base::FilePath data_dir; base::android::GetDataDirectory(&data_dir); in_progress_manager_ = std::make_unique<download::InProgressDownloadManager>( - nullptr, data_dir.Append(chrome::kInitialProfile), + this, data_dir.Append(chrome::kInitialProfile), base::BindRepeating(&IgnoreOriginSecurityCheck), base::BindRepeating(&content::DownloadRequestUtils::IsURLSafe)); content::GetNetworkServiceFromConnector(service_binding_.GetConnector()); @@ -704,7 +708,6 @@ factory->Clone())); in_progress_manager_->set_download_start_observer( DownloadControllerBase::Get()); - in_progress_manager_->SetDelegate(this); } void DownloadManagerService::OnPendingDownloadsLoaded() { @@ -752,12 +755,17 @@ } void DownloadManagerService::OnDownloadsInitialized() { - // We are no longer interested in listening to |in_progress_manager_|, remove - // this object from being the delegate. - in_progress_manager_->SetDelegate(nullptr); OnPendingDownloadsLoaded(); } +std::unique_ptr<service_manager::Connector> +DownloadManagerService::GetServiceConnector() { + service_manager::Connector* connector = service_binding_.GetConnector(); + if (connector) + return connector->Clone(); // Clone for use on a different thread. + return nullptr; +} + content::DownloadManager* DownloadManagerService::GetDownloadManager( bool is_off_the_record) { Profile* profile = ProfileManager::GetActiveUserProfile();
diff --git a/chrome/browser/android/download/download_manager_service.h b/chrome/browser/android/download/download_manager_service.h index 9bb8fca..547fd5b 100644 --- a/chrome/browser/android/download/download_manager_service.h +++ b/chrome/browser/android/download/download_manager_service.h
@@ -239,6 +239,7 @@ // download::InProgressDownloadManager::Delegate implementations. void OnDownloadsInitialized() override; + std::unique_ptr<service_manager::Connector> GetServiceConnector() override; typedef base::Callback<void(bool)> ResumeCallback; void set_resume_callback_for_testing(const ResumeCallback& resume_cb) {
diff --git a/chrome/browser/android/vr/gvr_input_delegate.cc b/chrome/browser/android/vr/gvr_input_delegate.cc index 29a5f66..f340891 100644 --- a/chrome/browser/android/vr/gvr_input_delegate.cc +++ b/chrome/browser/android/vr/gvr_input_delegate.cc
@@ -6,6 +6,8 @@ #include <utility> +#include "base/strings/string16.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/android/vr/gl_browser_interface.h" #include "chrome/browser/android/vr/vr_controller.h" #include "chrome/browser/vr/input_event.h" @@ -16,8 +18,61 @@ namespace { constexpr gfx::Vector3dF kForwardVector = {0.0f, 0.0f, -1.0f}; + +// TODO(https://crbug.com/957806): Copies of this function live in device/vr and +// device/gamepad, which will be consolidated. Is there a way to also remove +// this duplicate even though this is in under chrome/browser instead of device? +void CopyToUString(const base::string16& src, + device::UChar* dest, + size_t dest_length) { + static_assert(sizeof(base::string16::value_type) == sizeof(device::UChar), + "Mismatched string16/UChar size."); + + const size_t copy_char_count = std::min(src.size(), dest_length - 1); + src.copy(dest, copy_char_count); + std::fill(dest + copy_char_count, dest + dest_length, 0); } +device::Gamepad CreateGamepad(const device::GvrGamepadData& data) { + device::Gamepad gamepad; + + // Unless the controller state is updated on a different thread, + // data.connected should always be true when this function is called by + // GvrInputDelegate::GetInputSourceState. + gamepad.connected = data.connected; + + gamepad.timestamp = data.timestamp; + + // TODO(https://crbug.com/942201): Get correct ID string once WebXR spec issue + // #550 (https://github.com/immersive-web/webxr/issues/550) is resolved. + CopyToUString(base::UTF8ToUTF16("unknown"), gamepad.id, + base::size(gamepad.id)); + + gamepad.hand = data.right_handed ? device::GamepadHand::kRight + : device::GamepadHand::kLeft; + + bool pressed = data.controller_button_pressed; + bool touched = data.is_touching; + double value = pressed ? 1.0 : 0.0; + gamepad.buttons[gamepad.buttons_length++] = + device::GamepadButton(pressed, touched, value); + + if (touched) { + // data.touch_pos values are clamped to [0.0, 1.0], so normalize them to + // [-1.0, 1.0] + gamepad.axes[0] = (data.touch_pos.x() * 2.0) - 1.0; + gamepad.axes[1] = (data.touch_pos.y() * 2.0) - 1.0; + } else { + gamepad.axes[0] = 0.0; + gamepad.axes[1] = 0.0; + } + + gamepad.axes_length = 2; + + return gamepad; +} +} // namespace + namespace vr { GvrInputDelegate::GvrInputDelegate(gvr::GvrApi* gvr_api, @@ -147,6 +202,9 @@ gfx::Transform pointer; controller_->GetRelativePointerTransform(&pointer); state->description->pointer_offset = pointer; + + // This Gamepad data is used to expose touchpad position to WebXR. + state->gamepad = CreateGamepad(controller_->GetGamepadData()); } return state;
diff --git a/chrome/browser/chromeos/dbus/dbus_helper.cc b/chrome/browser/chromeos/dbus/dbus_helper.cc index 2ba9eb7..e51a78d 100644 --- a/chrome/browser/chromeos/dbus/dbus_helper.cc +++ b/chrome/browser/chromeos/dbus/dbus_helper.cc
@@ -58,7 +58,6 @@ InitializeDBusClient<ArcCameraClient>(bus); InitializeDBusClient<AuthPolicyClient>(bus); InitializeDBusClient<BiodClient>(bus); // For device::Fingerprint. - InitializeDBusClient<bluez::BluezDBusManager>(bus); InitializeDBusClient<CrasAudioClient>(bus); InitializeDBusClient<CryptohomeClient>(bus); InitializeDBusClient<CupsProxyClient>(bus); @@ -78,7 +77,17 @@ InstallAttributes::Initialize(); } +void InitializeFeatureListDependentDBus() { + dbus::Bus* bus = DBusThreadManager::Get()->GetSystemBus(); + InitializeDBusClient<bluez::BluezDBusManager>(bus); +} + void ShutdownDBus() { + // Feature list-dependent D-Bus clients are shut down first because we try to. + // shut down in reverse order of initialization (in case of dependencies). + bluez::BluezDBusManager::Shutdown(); + + // Other D-Bus clients are shut down, also in reverse order of initialization. UpstartClient::Shutdown(); SystemClockClient::Shutdown(); SessionManagerClient::Shutdown(); @@ -90,7 +99,6 @@ CupsProxyClient::Shutdown(); CryptohomeClient::Shutdown(); CrasAudioClient::Shutdown(); - bluez::BluezDBusManager::Shutdown(); BiodClient::Shutdown(); AuthPolicyClient::Shutdown(); ArcCameraClient::Shutdown();
diff --git a/chrome/browser/chromeos/dbus/dbus_helper.h b/chrome/browser/chromeos/dbus/dbus_helper.h index 232c56a0..4388177 100644 --- a/chrome/browser/chromeos/dbus/dbus_helper.h +++ b/chrome/browser/chromeos/dbus/dbus_helper.h
@@ -10,6 +10,10 @@ // Initializes the DBus thread manager and chrome DBus services. void InitializeDBus(); +// D-Bus clients may depend on feature list. This initializes only those clients +// and must be called after feature list initialization. +void InitializeFeatureListDependentDBus(); + // Shuts down the DBus thread manager and chrome DBus services. void ShutdownDBus();
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc index 9b8d9ea0..8c7035d 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -1181,7 +1181,8 @@ void AutotestPrivateGetPrinterListFunction::RespondWithTimeoutError() { if (did_respond()) return; - Respond(Error("Timeout occured before Enterprise printers were initialized")); + Respond( + Error("Timeout occurred before Enterprise printers were initialized")); } void AutotestPrivateGetPrinterListFunction::RespondWithSuccess() { @@ -1668,16 +1669,16 @@ service_manager::Connector* connector = content::ServiceManagerConnection::GetForProcess()->GetConnector(); - connector->BindInterface(ash::mojom::kServiceName, &shelf_controller_); + connector->BindInterface(ash::mojom::kServiceName, &shelf_test_api_); int64_t display_id; if (!base::StringToInt64(params->display_id, &display_id)) { - return RespondNow( - Error("Invalid display_id. Expected string with numbers only. got %s", - params->display_id)); + return RespondNow(Error(base::StrCat( + {"Invalid display_id; expected string with numbers only, got ", + params->display_id}))); } - shelf_controller_->GetAutoHideBehaviorForTesting( + shelf_test_api_->GetAutoHideBehavior( display_id, base::BindOnce(&AutotestPrivateGetShelfAutoHideBehaviorFunction:: OnGetShelfAutoHideBehaviorCompleted, @@ -1723,7 +1724,7 @@ service_manager::Connector* connector = content::ServiceManagerConnection::GetForProcess()->GetConnector(); - connector->BindInterface(ash::mojom::kServiceName, &shelf_controller_); + connector->BindInterface(ash::mojom::kServiceName, &shelf_test_api_); ash::ShelfAutoHideBehavior behavior; if (params->behavior == "always") { @@ -1733,18 +1734,18 @@ } else if (params->behavior == "hidden") { behavior = ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; } else { - return RespondNow(Error( - "Invalid argument: '%s'. Expected: 'always', 'never' or 'hidden'.", - params->behavior)); + return RespondNow(Error(base::StrCat( + {"Invalid behavior; expected 'always', 'never' or 'hidden', got ", + params->behavior}))); } int64_t display_id; if (!base::StringToInt64(params->display_id, &display_id)) { - return RespondNow( - Error("Invalid display_id. Expected string with numbers only. got %s", - params->display_id)); + return RespondNow(Error(base::StrCat( + {"Invalid display_id; expected string with numbers only, got ", + params->display_id}))); } - shelf_controller_->SetAutoHideBehaviorForTesting( + shelf_test_api_->SetAutoHideBehavior( display_id, behavior, base::BindOnce(&AutotestPrivateSetShelfAutoHideBehaviorFunction:: OnSetShelfAutoHideBehaviorCompleted, @@ -1758,6 +1759,128 @@ } /////////////////////////////////////////////////////////////////////////////// +// AutotestPrivateGetShelfAlignmentFunction +/////////////////////////////////////////////////////////////////////////////// + +AutotestPrivateGetShelfAlignmentFunction:: + AutotestPrivateGetShelfAlignmentFunction() = default; + +AutotestPrivateGetShelfAlignmentFunction:: + ~AutotestPrivateGetShelfAlignmentFunction() = default; + +ExtensionFunction::ResponseAction +AutotestPrivateGetShelfAlignmentFunction::Run() { + DVLOG(1) << "AutotestPrivateGetShelfAlignmentFunction"; + + std::unique_ptr<api::autotest_private::GetShelfAlignment::Params> params( + api::autotest_private::GetShelfAlignment::Params::Create(*args_)); + EXTENSION_FUNCTION_VALIDATE(params); + + service_manager::Connector* connector = + content::ServiceManagerConnection::GetForProcess()->GetConnector(); + connector->BindInterface(ash::mojom::kServiceName, &shelf_test_api_); + + int64_t display_id; + if (!base::StringToInt64(params->display_id, &display_id)) { + return RespondNow(Error(base::StrCat( + {"Invalid display_id; expected string with numbers only, got ", + params->display_id}))); + } + + shelf_test_api_->GetAlignment( + display_id, base::BindOnce(&AutotestPrivateGetShelfAlignmentFunction:: + OnGetShelfAlignmentCompleted, + this)); + return RespondLater(); +} + +void AutotestPrivateGetShelfAlignmentFunction::OnGetShelfAlignmentCompleted( + ash::ShelfAlignment alignment) { + api::autotest_private::ShelfAlignmentType alignment_type; + switch (alignment) { + case ash::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM: + alignment_type = api::autotest_private::ShelfAlignmentType:: + SHELF_ALIGNMENT_TYPE_BOTTOM; + break; + case ash::ShelfAlignment::SHELF_ALIGNMENT_LEFT: + alignment_type = + api::autotest_private::ShelfAlignmentType::SHELF_ALIGNMENT_TYPE_LEFT; + break; + case ash::ShelfAlignment::SHELF_ALIGNMENT_RIGHT: + alignment_type = + api::autotest_private::ShelfAlignmentType::SHELF_ALIGNMENT_TYPE_RIGHT; + break; + case ash::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM_LOCKED: + alignment_type = api::autotest_private::ShelfAlignmentType:: + SHELF_ALIGNMENT_TYPE_BOTTOMLOCKED; + break; + } + Respond(OneArgument(std::make_unique<base::Value>( + api::autotest_private::ToString(alignment_type)))); +} + +/////////////////////////////////////////////////////////////////////////////// +// AutotestPrivateSetShelfAlignmentFunction +/////////////////////////////////////////////////////////////////////////////// + +AutotestPrivateSetShelfAlignmentFunction:: + AutotestPrivateSetShelfAlignmentFunction() = default; + +AutotestPrivateSetShelfAlignmentFunction:: + ~AutotestPrivateSetShelfAlignmentFunction() = default; + +ExtensionFunction::ResponseAction +AutotestPrivateSetShelfAlignmentFunction::Run() { + DVLOG(1) << "AutotestPrivateSetShelfAlignmentFunction"; + + std::unique_ptr<api::autotest_private::SetShelfAlignment::Params> params( + api::autotest_private::SetShelfAlignment::Params::Create(*args_)); + EXTENSION_FUNCTION_VALIDATE(params); + + service_manager::Connector* connector = + content::ServiceManagerConnection::GetForProcess()->GetConnector(); + connector->BindInterface(ash::mojom::kServiceName, &shelf_test_api_); + + ash::ShelfAlignment alignment; + switch (params->alignment) { + case api::autotest_private::ShelfAlignmentType::SHELF_ALIGNMENT_TYPE_BOTTOM: + alignment = ash::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM; + break; + case api::autotest_private::ShelfAlignmentType::SHELF_ALIGNMENT_TYPE_LEFT: + alignment = ash::ShelfAlignment::SHELF_ALIGNMENT_LEFT; + break; + case api::autotest_private::ShelfAlignmentType::SHELF_ALIGNMENT_TYPE_RIGHT: + alignment = ash::ShelfAlignment::SHELF_ALIGNMENT_RIGHT; + break; + case api::autotest_private::ShelfAlignmentType:: + SHELF_ALIGNMENT_TYPE_BOTTOMLOCKED: + alignment = ash::ShelfAlignment::SHELF_ALIGNMENT_BOTTOM_LOCKED; + break; + case api::autotest_private::ShelfAlignmentType::SHELF_ALIGNMENT_TYPE_NONE: + return RespondNow( + Error("Unsupported None alignment; expected 'Bottom', 'Left', " + "'Right' or 'BottomLocked'")); + } + int64_t display_id; + if (!base::StringToInt64(params->display_id, &display_id)) { + return RespondNow(Error(base::StrCat( + {"Invalid display_id; expected string with numbers only, got ", + params->display_id}))); + } + + shelf_test_api_->SetAlignment( + display_id, alignment, + base::BindOnce(&AutotestPrivateSetShelfAlignmentFunction:: + OnSetShelfAlignmentCompleted, + this)); + return RespondLater(); +} + +void AutotestPrivateSetShelfAlignmentFunction::OnSetShelfAlignmentCompleted() { + Respond(NoArguments()); +} + +/////////////////////////////////////////////////////////////////////////////// // AutotestPrivateShowVirtualKeyboardIfEnabledFunction ///////////////////////////////////////////////////////////////////////////////
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h index 1626d5fb..f95a886 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
@@ -11,8 +11,9 @@ #include "ash/public/cpp/assistant/assistant_state_proxy.h" #include "ash/public/cpp/assistant/default_voice_interaction_observer.h" +#include "ash/public/cpp/shelf_types.h" #include "ash/public/interfaces/ash_message_center_controller.mojom.h" -#include "ash/public/interfaces/shelf.mojom.h" +#include "ash/public/interfaces/shelf_integration_test_api.mojom.h" #include "base/compiler_specific.h" #include "base/timer/timer.h" #include "chrome/browser/chromeos/printing/cups_printers_manager.h" @@ -658,7 +659,7 @@ ~AutotestPrivateGetShelfAutoHideBehaviorFunction() override; ResponseAction Run() override; - ash::mojom::ShelfControllerPtr shelf_controller_; + ash::mojom::ShelfIntegrationTestApiPtr shelf_test_api_; }; // Sets shelf autohide behavior. @@ -674,7 +675,39 @@ ~AutotestPrivateSetShelfAutoHideBehaviorFunction() override; ResponseAction Run() override; - ash::mojom::ShelfControllerPtr shelf_controller_; + ash::mojom::ShelfIntegrationTestApiPtr shelf_test_api_; +}; + +// Returns the shelf alignment. +class AutotestPrivateGetShelfAlignmentFunction + : public UIThreadExtensionFunction { + public: + AutotestPrivateGetShelfAlignmentFunction(); + DECLARE_EXTENSION_FUNCTION("autotestPrivate.getShelfAlignment", + AUTOTESTPRIVATE_GETSHELFALIGNMENT) + + private: + void OnGetShelfAlignmentCompleted(ash::ShelfAlignment alignment); + ~AutotestPrivateGetShelfAlignmentFunction() override; + ResponseAction Run() override; + + ash::mojom::ShelfIntegrationTestApiPtr shelf_test_api_; +}; + +// Sets shelf alignment. +class AutotestPrivateSetShelfAlignmentFunction + : public UIThreadExtensionFunction { + public: + AutotestPrivateSetShelfAlignmentFunction(); + DECLARE_EXTENSION_FUNCTION("autotestPrivate.setShelfAlignment", + AUTOTESTPRIVATE_SETSHELFALIGNMENT) + + private: + void OnSetShelfAlignmentCompleted(); + ~AutotestPrivateSetShelfAlignmentFunction() override; + ResponseAction Run() override; + + ash::mojom::ShelfIntegrationTestApiPtr shelf_test_api_; }; class AutotestPrivateShowVirtualKeyboardIfEnabledFunction
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc index f80de06..d47be4e 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_apitest.cc
@@ -15,6 +15,7 @@ #include "components/arc/session/connection_holder.h" #include "components/arc/test/connection_holder_util.h" #include "components/arc/test/fake_app_instance.h" +#include "services/ws/common/switches.h" namespace extensions { @@ -27,6 +28,8 @@ ExtensionApiTest::SetUpCommandLine(command_line); // Make ARC enabled for tests. arc::SetArcAvailableCommandLineForTesting(command_line); + // Enable certain Mojo services like ShelfIntegrationTestApi. + command_line->AppendSwitch(ws::switches::kUseTestConfig); } void SetUpInProcessBrowserTestFixture() override {
diff --git a/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc b/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc index 5d65bba3..65265be 100644 --- a/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc +++ b/chrome/browser/chromeos/login/auto_launched_kiosk_browsertest.cc
@@ -179,8 +179,7 @@ SessionManagerClient::InitializeFakeInMemory(); - FakeSessionManagerClient::Get()->set_supports_restart_to_apply_user_flags( - true); + FakeSessionManagerClient::Get()->set_supports_browser_restart(true); FakeSessionManagerClient::Get()->set_device_policy( device_policy_helper_.device_policy()->GetBlob()); FakeSessionManagerClient::Get()->set_device_local_account_policy(
diff --git a/chrome/browser/chromeos/login/chrome_restart_request.cc b/chrome/browser/chromeos/login/chrome_restart_request.cc index 19725f94..5db8229 100644 --- a/chrome/browser/chromeos/login/chrome_restart_request.cc +++ b/chrome/browser/chromeos/login/chrome_restart_request.cc
@@ -348,7 +348,7 @@ } restart_requested = true; - if (!base::SysInfo::IsRunningOnChromeOS()) { + if (!SessionManagerClient::Get()->SupportsBrowserRestart()) { // Do nothing when running as test on bots or a dev box. const base::CommandLine* current_command_line = base::CommandLine::ForCurrentProcess();
diff --git a/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc b/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc index cece5ff..2b85b51 100644 --- a/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc +++ b/chrome/browser/chromeos/login/demo_mode/demo_setup_browsertest.cc
@@ -107,25 +107,21 @@ // Returns query to access the content of the given OOBE |screen| or empty // string if the |screen| is not a part of Demo Mode setup flow. -std::string ScreenToContentQuery(OobeScreen screen) { - switch (screen) { - case OobeScreen::SCREEN_OOBE_DEMO_PREFERENCES: - return "$('demo-preferences-content')"; - case OobeScreen::SCREEN_OOBE_NETWORK: - return "$('oobe-network-md')"; - case OobeScreen::SCREEN_OOBE_EULA: - return "$('oobe-eula-md')"; - case OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE: - return "$('arc-tos-root')"; - case OobeScreen::SCREEN_OOBE_UPDATE: - return "$('oobe-update-md')"; - case OobeScreen::SCREEN_OOBE_DEMO_SETUP: - return "$('demo-setup-content')"; - default: { - NOTREACHED() << "This OOBE screen is not a part of Demo Mode setup flow"; - return std::string(); - } - } +std::string ScreenToContentQuery(OobeScreenId screen) { + if (screen == OobeScreen::SCREEN_OOBE_DEMO_PREFERENCES) + return "$('demo-preferences-content')"; + if (screen == OobeScreen::SCREEN_OOBE_NETWORK) + return "$('oobe-network-md')"; + if (screen == OobeScreen::SCREEN_OOBE_EULA) + return "$('oobe-eula-md')"; + if (screen == OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE) + return "$('arc-tos-root')"; + if (screen == OobeScreen::SCREEN_OOBE_UPDATE) + return "$('oobe-update-md')"; + if (screen == OobeScreen::SCREEN_OOBE_DEMO_SETUP) + return "$('demo-setup-content')"; + NOTREACHED() << "This OOBE screen is not a part of Demo Mode setup flow"; + return std::string(); } // Waits for js condition to be fulfilled. @@ -159,8 +155,8 @@ DisconnectAllNetworks(); } - bool IsScreenShown(OobeScreen screen) { - const std::string screen_name = GetOobeScreenName(screen); + bool IsScreenShown(OobeScreenId screen) { + const std::string screen_name = screen.name; const std::string query = base::StrCat( {"!!document.querySelector('#", screen_name, "') && !document.querySelector('#", screen_name, "').hidden"}); @@ -174,7 +170,7 @@ // TODO(michaelpg): Replace this with IsScreenDialogElementVisible, which is // more robust because it checks whether the element is actually rendered. // Do this after a branch in case it introduces flakiness. - bool IsScreenDialogElementShown(OobeScreen screen, + bool IsScreenDialogElementShown(OobeScreenId screen, DemoSetupDialog dialog, const std::string& element_selector) { const std::string element = base::StrCat( @@ -185,7 +181,7 @@ return test::OobeJS().GetBool(query); } - bool IsScreenDialogElementVisible(OobeScreen screen, + bool IsScreenDialogElementVisible(OobeScreenId screen, DemoSetupDialog dialog, const std::string& element_selector) { const std::string element = base::StrCat( @@ -196,7 +192,7 @@ return test::OobeJS().GetBool(query); } - bool IsScreenDialogElementEnabled(OobeScreen screen, + bool IsScreenDialogElementEnabled(OobeScreenId screen, DemoSetupDialog dialog, const std::string& element_selector) { const std::string element = base::StrCat( @@ -269,7 +265,7 @@ // Simulates |button| click on a specified OOBE |screen|. Can be used for // screens that consists of one oobe-dialog element. - void ClickOobeButton(OobeScreen screen, + void ClickOobeButton(OobeScreenId screen, OobeButton button, JSExecution execution) { ClickOobeButtonWithSelector(screen, ButtonToTag(button), execution); @@ -277,7 +273,7 @@ // Simulates click on a button with |button_selector| on specified OOBE // |screen|. Can be used for screens that consists of one oobe-dialog element. - void ClickOobeButtonWithSelector(OobeScreen screen, + void ClickOobeButtonWithSelector(OobeScreenId screen, const std::string& button_selector, JSExecution execution) { const std::string query = base::StrCat( @@ -297,7 +293,7 @@ // Simulates |button| click on a |dialog| of the specified OOBE |screen|. // Can be used for screens that consists of multiple oobe-dialog elements. - void ClickScreenDialogButton(OobeScreen screen, + void ClickScreenDialogButton(OobeScreenId screen, DemoSetupDialog dialog, OobeButton button, JSExecution execution) { @@ -308,7 +304,7 @@ // Simulates click on a button with |button_selector| on a |dialog| of the // specified OOBE |screen|. Can be used for screens that consist of multiple // oobe-dialog elements. - void ClickScreenDialogButtonWithSelector(OobeScreen screen, + void ClickScreenDialogButtonWithSelector(OobeScreenId screen, DemoSetupDialog dialog, const std::string& button_selector, JSExecution execution) { @@ -359,14 +355,14 @@ DemoSetupDialog::kError); } - void WaitForScreenDialog(OobeScreen screen, DemoSetupDialog dialog) { + void WaitForScreenDialog(OobeScreenId screen, DemoSetupDialog dialog) { const std::string query = base::StrCat({"!", ScreenToContentQuery(screen), ".$['", DialogToStringId(dialog), "'].hidden"}); WaitForJsCondition(query); } - void SkipToScreen(OobeScreen screen) { + void SkipToScreen(OobeScreenId screen) { auto* const wizard_controller = WizardController::default_controller(); wizard_controller->SimulateDemoModeSetupForTesting(); wizard_controller->AdvanceToScreen(screen);
diff --git a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen_view.h b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen_view.h index 72b475e1..8436f61 100644 --- a/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen_view.h +++ b/chrome/browser/chromeos/login/enrollment/auto_enrollment_check_screen_view.h
@@ -23,7 +23,7 @@ virtual void OnViewDestroyed(AutoEnrollmentCheckScreenView* view) = 0; }; - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK; virtual ~AutoEnrollmentCheckScreenView() {}
diff --git a/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h b/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h index d0ce52a9..aa26eb1 100644 --- a/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h +++ b/chrome/browser/chromeos/login/enrollment/enrollment_screen_view.h
@@ -47,7 +47,8 @@ const std::string& location) = 0; }; - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_ENROLLMENT; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_OOBE_ENROLLMENT; virtual ~EnrollmentScreenView() {}
diff --git a/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc b/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc index 05457cf..29d9200 100644 --- a/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc +++ b/chrome/browser/chromeos/login/enrollment/hands_off_enrollment_browsertest.cc
@@ -157,7 +157,7 @@ base::RunLoop().RunUntilIdle(); EXPECT_EQ( - OobeScreen::SCREEN_OOBE_ENROLLMENT, + OobeScreen::SCREEN_OOBE_ENROLLMENT.AsId(), WizardController::default_controller()->current_screen()->screen_id()); EXPECT_FALSE(ExistingUserController::current_controller()); EXPECT_FALSE(StartupUtils::IsOobeCompleted());
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc index b534ea4..2a4a5ba 100644 --- a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc +++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
@@ -261,7 +261,7 @@ session_manager_test_api.InjectStubUserContext(user_context); EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)).Times(1); EXPECT_CALL(*mock_login_display_host_, - StartWizard(OobeScreen::SCREEN_TERMS_OF_SERVICE)) + StartWizard(OobeScreenId(OobeScreen::SCREEN_TERMS_OF_SERVICE))) .Times(0); content::WindowedNotificationObserver profile_prepared_observer( @@ -427,7 +427,7 @@ // There may be in-session oobe or an initial login screen created from // --login-manager. EXPECT_CALL(*mock_login_display_host_, - StartWizard(OobeScreen::SCREEN_TERMS_OF_SERVICE)) + StartWizard(OobeScreen::SCREEN_TERMS_OF_SERVICE.AsId())) .Times(AnyNumber()); EXPECT_CALL(*mock_login_display_, SetUIEnabled(false)).Times(AnyNumber()); EXPECT_CALL(*mock_login_display_, SetUIEnabled(true)).Times(AnyNumber());
diff --git a/chrome/browser/chromeos/login/guest_login_browsertest.cc b/chrome/browser/chromeos/login/guest_login_browsertest.cc new file mode 100644 index 0000000..35e79fae --- /dev/null +++ b/chrome/browser/chromeos/login/guest_login_browsertest.cc
@@ -0,0 +1,93 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/mixin_based_in_process_browser_test.h" +#include "chrome/browser/chromeos/login/test/login_manager_mixin.h" +#include "chrome/browser/chromeos/login/test/login_screen_tester.h" +#include "chromeos/dbus/session_manager/fake_session_manager_client.h" +#include "components/user_manager/user_manager.h" + +namespace chromeos { + +// Tests guest user log in. +class GuestLoginTest : public MixinBasedInProcessBrowserTest { + public: + GuestLoginTest() { login_manager_.set_session_restore_enabled(); } + ~GuestLoginTest() override = default; + + // Test overrides can implement this to add login policy switches to login + // screen command line. + virtual void SetDefaultLoginSwitches() {} + + // MixinBaseInProcessBrowserTest: + void SetUp() override { + SetDefaultLoginSwitches(); + MixinBasedInProcessBrowserTest::SetUp(); + } + + void SetUpOnMainThread() override { + FakeSessionManagerClient::Get()->set_supports_browser_restart(true); + MixinBasedInProcessBrowserTest::SetUpOnMainThread(); + } + + protected: + LoginManagerMixin login_manager_{&mixin_host_, {}}; +}; + +class GuestLoginWithLoginSwitchesTest : public GuestLoginTest { + public: + GuestLoginWithLoginSwitchesTest() = default; + ~GuestLoginWithLoginSwitchesTest() override = default; + + // GuestLoginTest: + void SetDefaultLoginSwitches() override { + login_manager_.SetDefaultLoginSwitches( + {std::make_pair("test_switch_1", ""), + std::make_pair("test_switch_2", "test_switch_2_value")}); + } +}; + +IN_PROC_BROWSER_TEST_F(GuestLoginTest, PRE_Login) { + base::RunLoop restart_job_waiter; + FakeSessionManagerClient::Get()->set_restart_job_callback( + restart_job_waiter.QuitClosure()); + + ASSERT_TRUE(test::LoginScreenTester().ClickGuestButton()); + + restart_job_waiter.Run(); + EXPECT_TRUE(FakeSessionManagerClient::Get()->restart_job_argv().has_value()); +} + +IN_PROC_BROWSER_TEST_F(GuestLoginTest, Login) { + login_manager_.WaitForActiveSession(); + + user_manager::UserManager* user_manager = user_manager::UserManager::Get(); + EXPECT_TRUE(user_manager->IsLoggedInAsGuest()); +} + +IN_PROC_BROWSER_TEST_F(GuestLoginWithLoginSwitchesTest, PRE_Login) { + base::RunLoop restart_job_waiter; + FakeSessionManagerClient::Get()->set_restart_job_callback( + restart_job_waiter.QuitClosure()); + + ASSERT_TRUE(test::LoginScreenTester().ClickGuestButton()); + + restart_job_waiter.Run(); + EXPECT_TRUE(FakeSessionManagerClient::Get()->restart_job_argv().has_value()); +} + +// Verifies that login policy flags do not spill over to the guest session. +IN_PROC_BROWSER_TEST_F(GuestLoginWithLoginSwitchesTest, Login) { + login_manager_.WaitForActiveSession(); + + user_manager::UserManager* user_manager = user_manager::UserManager::Get(); + EXPECT_TRUE(user_manager->IsLoggedInAsGuest()); + + EXPECT_FALSE( + base::CommandLine::ForCurrentProcess()->HasSwitch("test_switch_1")); + EXPECT_FALSE( + base::CommandLine::ForCurrentProcess()->HasSwitch("test_switch_2")); +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/login_wizard.h b/chrome/browser/chromeos/login/login_wizard.h index c439078b..f7e7e18 100644 --- a/chrome/browser/chromeos/login/login_wizard.h +++ b/chrome/browser/chromeos/login/login_wizard.h
@@ -12,7 +12,7 @@ namespace chromeos { // Shows the Chrome OS out-of-box / login UI. -void ShowLoginWizard(OobeScreen start_screen); +void ShowLoginWizard(OobeScreenId start_screen); } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/oobe_screen.cc b/chrome/browser/chromeos/login/oobe_screen.cc index 60e0753..d6c7989 100644 --- a/chrome/browser/chromeos/login/oobe_screen.cc +++ b/chrome/browser/chromeos/login/oobe_screen.cc
@@ -4,84 +4,80 @@ #include "chrome/browser/chromeos/login/oobe_screen.h" -#include <vector> - -#include "base/command_line.h" -#include "base/logging.h" -#include "base/stl_util.h" -#include "base/strings/string_split.h" -#include "chromeos/constants/chromeos_switches.h" +#include <ostream> namespace chromeos { -namespace { -// These get mapped by the Screen enum ordinal values, so this has to be defined -// in the same order as the Screen enum. -const char* kScreenNames[] = { - "hid-detection", // SCREEN_OOBE_HID_DETECTION - "connect", // SCREEN_OOBE_WELCOME - "network-selection", // SCREEN_OOBE_NETWORK - "eula", // SCREEN_OOBE_EULA - "update", // SCREEN_OOBE_UPDATE - "debugging", // SCREEN_OOBE_ENABLE_DEBUGGING - "oauth-enrollment", // SCREEN_OOBE_ENROLLMENT - "reset", // SCREEN_OOBE_RESET - "gaia-signin", // SCREEN_GAIA_SIGNIN - "account-picker", // SCREEN_ACCOUNT_PICKER - "autolaunch", // SCREEN_KIOSK_AUTOLAUNCH - "kiosk-enable", // SCREEN_KIOSK_ENABLE - "error-message", // SCREEN_ERROR_MESSAGE - "tpm-error-message", // SCREEN_TPM_ERROR - "password-changed", // SCREEN_PASSWORD_CHANGED - "supervised-user-creation", // SCREEN_CREATE_SUPERVISED_USER_FLOW - "terms-of-service", // SCREEN_TERMS_OF_SERVICE - "arc-tos", // SCREEN_ARC_TERMS_OF_SERVICE - "wrong-hwid", // SCREEN_WRONG_HWID - "auto-enrollment-check", // SCREEN_AUTO_ENROLLMENT_CHECK - "app-launch-splash", // SCREEN_APP_LAUNCH_SPLASH - "arc-kiosk-splash", // SCREEN_ARC_KIOSK_SPLASH - "confirm-password", // SCREEN_CONFIRM_PASSWORD - "fatal-error", // SCREEN_FATAL_ERROR - "device-disabled", // SCREEN_DEVICE_DISABLED - "userBoard", // SCREEN_USER_SELECTION - "ad-password-change", // SCREEN_ACTIVE_DIRECTORY_PASSWORD_CHANGE - "encryption-migration", // SCREEN_ENCRYPTION_MIGRATION - "supervision-transition", // SCREEN_SUPERVISION_TRANSITION - "update-required", // SCREEN_UPDATE_REQUIRED - "assistant-optin-flow", // SCREEN_ASSISTANT_OPTIN_FLOW - "login", // SCREEN_SPECIAL_LOGIN - "oobe", // SCREEN_SPECIAL_OOBE - "test:nowindow", // SCREEN_TEST_NO_WINDOW - "sync-consent", // SCREEN_SYNC_CONSENT - "fingerprint-setup", // SCREEN_FINGERPRINT_SETUP - "demo-setup", // SCREEN_OOBE_DEMO_SETUP - "demo-preferences", // SCREEN_OOBE_DEMO_PREFERENCES - "recommend-apps", // SCREEN_RECOMMEND_APPS - "app-downloading", // SCREEN_APP_DOWNLOADING - "discover", // SCREEN_DISCOVER - "marketing-opt-in", // SCREEN_MARKETING_OPT_IN - "multidevice-setup", // SCREEN_MULTIDEVICE_SETUP - "unknown", // SCREEN_UNKNOWN -}; +OobeScreenId::OobeScreenId(const std::string& name) : name(name) {} -static_assert(static_cast<size_t>(OobeScreen::SCREEN_UNKNOWN) == - base::size(kScreenNames) - 1, - "Missing element in OobeScreen or kScreenNames"); +OobeScreenId::OobeScreenId(const StaticOobeScreenId& id) : name(id.name) {} -} // namespace - -std::string GetOobeScreenName(OobeScreen screen) { - DCHECK(screen <= OobeScreen::SCREEN_UNKNOWN); - return kScreenNames[static_cast<size_t>(screen)]; +bool OobeScreenId::operator==(const OobeScreenId& rhs) const { + return name == rhs.name; } -OobeScreen GetOobeScreenFromName(const std::string& name) { - for (size_t i = 0; i < base::size(kScreenNames); ++i) { - if (name == kScreenNames[i]) - return static_cast<OobeScreen>(i); - } - - return OobeScreen::SCREEN_UNKNOWN; +bool OobeScreenId::operator!=(const OobeScreenId& rhs) const { + return name != rhs.name; } +bool OobeScreenId::operator<(const OobeScreenId& rhs) const { + return name < rhs.name; +} + +std::ostream& operator<<(std::ostream& stream, const OobeScreenId& id) { + return stream << id.name; +} + +OobeScreenId StaticOobeScreenId::AsId() const { + return OobeScreenId(name); +} + +// static +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_HID_DETECTION; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_WELCOME; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_NETWORK; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_EULA; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_UPDATE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_ENABLE_DEBUGGING; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_ENROLLMENT; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_RESET; +constexpr StaticOobeScreenId OobeScreen::SCREEN_GAIA_SIGNIN; +constexpr StaticOobeScreenId OobeScreen::SCREEN_ACCOUNT_PICKER; +constexpr StaticOobeScreenId OobeScreen::SCREEN_KIOSK_AUTOLAUNCH; +constexpr StaticOobeScreenId OobeScreen::SCREEN_KIOSK_ENABLE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_ERROR_MESSAGE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_TPM_ERROR; +constexpr StaticOobeScreenId OobeScreen::SCREEN_PASSWORD_CHANGED; +constexpr StaticOobeScreenId + OobeScreen::SCREEN_CREATE_SUPERVISED_USER_FLOW_DEPRECATED; +constexpr StaticOobeScreenId OobeScreen::SCREEN_TERMS_OF_SERVICE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_WRONG_HWID; +constexpr StaticOobeScreenId OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK; +constexpr StaticOobeScreenId OobeScreen::SCREEN_APP_LAUNCH_SPLASH; +constexpr StaticOobeScreenId OobeScreen::SCREEN_ARC_KIOSK_SPLASH; +constexpr StaticOobeScreenId OobeScreen::SCREEN_CONFIRM_PASSWORD; +constexpr StaticOobeScreenId OobeScreen::SCREEN_FATAL_ERROR; +constexpr StaticOobeScreenId OobeScreen::SCREEN_DEVICE_DISABLED; +constexpr StaticOobeScreenId OobeScreen::SCREEN_USER_SELECTION; +constexpr StaticOobeScreenId + OobeScreen::SCREEN_ACTIVE_DIRECTORY_PASSWORD_CHANGE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_ENCRYPTION_MIGRATION; +constexpr StaticOobeScreenId OobeScreen::SCREEN_SUPERVISION_TRANSITION; +constexpr StaticOobeScreenId OobeScreen::SCREEN_UPDATE_REQUIRED; +constexpr StaticOobeScreenId OobeScreen::SCREEN_ASSISTANT_OPTIN_FLOW; +constexpr StaticOobeScreenId OobeScreen::SCREEN_SPECIAL_LOGIN; +constexpr StaticOobeScreenId OobeScreen::SCREEN_SPECIAL_OOBE; +constexpr StaticOobeScreenId OobeScreen::SCREEN_TEST_NO_WINDOW; +constexpr StaticOobeScreenId OobeScreen::SCREEN_SYNC_CONSENT; +constexpr StaticOobeScreenId OobeScreen::SCREEN_FINGERPRINT_SETUP; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_DEMO_SETUP; +constexpr StaticOobeScreenId OobeScreen::SCREEN_OOBE_DEMO_PREFERENCES; +constexpr StaticOobeScreenId OobeScreen::SCREEN_RECOMMEND_APPS; +constexpr StaticOobeScreenId OobeScreen::SCREEN_APP_DOWNLOADING; +constexpr StaticOobeScreenId OobeScreen::SCREEN_DISCOVER; +constexpr StaticOobeScreenId OobeScreen::SCREEN_MARKETING_OPT_IN; +constexpr StaticOobeScreenId OobeScreen::SCREEN_MULTIDEVICE_SETUP; +constexpr StaticOobeScreenId OobeScreen::SCREEN_UNKNOWN; + } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/oobe_screen.h b/chrome/browser/chromeos/login/oobe_screen.h index c2e626f..a3e1caa 100644 --- a/chrome/browser/chromeos/login/oobe_screen.h +++ b/chrome/browser/chromeos/login/oobe_screen.h
@@ -5,78 +5,107 @@ #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_SCREEN_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_OOBE_SCREEN_H_ +#include <iosfwd> #include <string> namespace chromeos { -// TODO(jdufault): Rename to LoginScreen or similar since this is not directly -// tied to Oobe. See crbug.com/678740. +struct StaticOobeScreenId; -// Different screens in the Oobe. If you update this enum, *make sure* to -// update kScreenNames in the cc file as well. -enum class OobeScreen : unsigned int { - SCREEN_OOBE_HID_DETECTION = 0, - SCREEN_OOBE_WELCOME, - SCREEN_OOBE_NETWORK, - SCREEN_OOBE_EULA, - SCREEN_OOBE_UPDATE, - SCREEN_OOBE_ENABLE_DEBUGGING, - SCREEN_OOBE_ENROLLMENT, - SCREEN_OOBE_RESET, - SCREEN_GAIA_SIGNIN, - SCREEN_ACCOUNT_PICKER, - SCREEN_KIOSK_AUTOLAUNCH, - SCREEN_KIOSK_ENABLE, - SCREEN_ERROR_MESSAGE, - SCREEN_TPM_ERROR, - SCREEN_PASSWORD_CHANGED, - SCREEN_CREATE_SUPERVISED_USER_FLOW_DEPRECATED, - SCREEN_TERMS_OF_SERVICE, - SCREEN_ARC_TERMS_OF_SERVICE, - SCREEN_WRONG_HWID, - SCREEN_AUTO_ENROLLMENT_CHECK, - SCREEN_APP_LAUNCH_SPLASH, - SCREEN_ARC_KIOSK_SPLASH, - SCREEN_CONFIRM_PASSWORD, - SCREEN_FATAL_ERROR, - SCREEN_DEVICE_DISABLED, - SCREEN_USER_SELECTION, - SCREEN_ACTIVE_DIRECTORY_PASSWORD_CHANGE, - SCREEN_ENCRYPTION_MIGRATION, - SCREEN_SUPERVISION_TRANSITION, - SCREEN_UPDATE_REQUIRED, - SCREEN_ASSISTANT_OPTIN_FLOW, +// Identifiers an OOBE screen. +struct OobeScreenId { + // Create an identifier from a string. + explicit OobeScreenId(const std::string& id); + // Create an identifier from a statically created identifier. This is implicit + // to make StaticOobeScreenId act more like OobeScreenId. + OobeScreenId(const StaticOobeScreenId& id); - // Special "first screen" that initiates login flow. - SCREEN_SPECIAL_LOGIN, - // Special "first screen" that initiates full OOBE flow. - SCREEN_SPECIAL_OOBE, - // Special test value that commands not to create any window yet. - SCREEN_TEST_NO_WINDOW, + // Name of the screen. + std::string name; - SCREEN_SYNC_CONSENT, - SCREEN_FINGERPRINT_SETUP, - SCREEN_OOBE_DEMO_SETUP, - SCREEN_OOBE_DEMO_PREFERENCES, - - SCREEN_RECOMMEND_APPS, - SCREEN_APP_DOWNLOADING, - SCREEN_DISCOVER, - - SCREEN_MARKETING_OPT_IN, - SCREEN_MULTIDEVICE_SETUP, - - SCREEN_UNKNOWN // This must always be the last element. + bool operator==(const OobeScreenId& rhs) const; + bool operator!=(const OobeScreenId& rhs) const; + bool operator<(const OobeScreenId& rhs) const; + friend std::ostream& operator<<(std::ostream& stream, const OobeScreenId& id); }; -// Returns the JS name for the given screen. -std::string GetOobeScreenName(OobeScreen screen); +// A static identifier. An OOBE screen often statically expresses its ID in +// code. Chrome-style bans static destructors so use a const char* to point to +// the data in the binary instead of std::string. +struct StaticOobeScreenId { + const char* name; -// Converts the JS name for the given sreen into a Screen instance. -OobeScreen GetOobeScreenFromName(const std::string& name); + OobeScreenId AsId() const; +}; -// Returns true if a command line argument requests |screen| to always be shown. -bool ForceShowOobeScreen(OobeScreen screen); +struct OobeScreen { + constexpr static StaticOobeScreenId SCREEN_OOBE_HID_DETECTION{ + "hid-detection"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_WELCOME{"connect"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_NETWORK{"network-selection"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_EULA{"eula"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_UPDATE{"update"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_ENABLE_DEBUGGING{"debugging"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_ENROLLMENT{ + "oauth-enrollment"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_RESET{"reset"}; + constexpr static StaticOobeScreenId SCREEN_GAIA_SIGNIN{"gaia-signin"}; + constexpr static StaticOobeScreenId SCREEN_ACCOUNT_PICKER{"account-picker"}; + constexpr static StaticOobeScreenId SCREEN_KIOSK_AUTOLAUNCH{"autolaunch"}; + constexpr static StaticOobeScreenId SCREEN_KIOSK_ENABLE{"kiosk-enable"}; + constexpr static StaticOobeScreenId SCREEN_ERROR_MESSAGE{"error-message"}; + constexpr static StaticOobeScreenId SCREEN_TPM_ERROR{"tpm-error-message"}; + constexpr static StaticOobeScreenId SCREEN_PASSWORD_CHANGED{ + "password-changed"}; + constexpr static StaticOobeScreenId + SCREEN_CREATE_SUPERVISED_USER_FLOW_DEPRECATED{"supervised-user-creation"}; + constexpr static StaticOobeScreenId SCREEN_TERMS_OF_SERVICE{ + "terms-of-service"}; + constexpr static StaticOobeScreenId SCREEN_ARC_TERMS_OF_SERVICE{"arc-tos"}; + constexpr static StaticOobeScreenId SCREEN_WRONG_HWID{"wrong-hwid"}; + constexpr static StaticOobeScreenId SCREEN_AUTO_ENROLLMENT_CHECK{ + "auto-enrollment-check"}; + constexpr static StaticOobeScreenId SCREEN_APP_LAUNCH_SPLASH{ + "app-launch-splash"}; + constexpr static StaticOobeScreenId SCREEN_ARC_KIOSK_SPLASH{ + "arc-kiosk-splash"}; + constexpr static StaticOobeScreenId SCREEN_CONFIRM_PASSWORD{ + "confirm-password"}; + constexpr static StaticOobeScreenId SCREEN_FATAL_ERROR{"fatal-error"}; + constexpr static StaticOobeScreenId SCREEN_DEVICE_DISABLED{"device-disabled"}; + constexpr static StaticOobeScreenId SCREEN_USER_SELECTION{"userBoard"}; + constexpr static StaticOobeScreenId SCREEN_ACTIVE_DIRECTORY_PASSWORD_CHANGE{ + "ad-password-change"}; + constexpr static StaticOobeScreenId SCREEN_ENCRYPTION_MIGRATION{ + "encryption-migration"}; + constexpr static StaticOobeScreenId SCREEN_SUPERVISION_TRANSITION{ + "supervision-transition"}; + constexpr static StaticOobeScreenId SCREEN_UPDATE_REQUIRED{"update-required"}; + constexpr static StaticOobeScreenId SCREEN_ASSISTANT_OPTIN_FLOW{ + "assistant-optin-flow"}; + + // Special "first screen" that initiates login flow. + constexpr static StaticOobeScreenId SCREEN_SPECIAL_LOGIN{"login"}; + // Special "first screen" that initiates full OOBE flow. + constexpr static StaticOobeScreenId SCREEN_SPECIAL_OOBE{"oobe"}; + // Special test value that commands not to create any window yet. + constexpr static StaticOobeScreenId SCREEN_TEST_NO_WINDOW{"test:nowindow"}; + + constexpr static StaticOobeScreenId SCREEN_SYNC_CONSENT{"sync-consent"}; + constexpr static StaticOobeScreenId SCREEN_FINGERPRINT_SETUP{ + "fingerprint-setup"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_DEMO_SETUP{"demo-setup"}; + constexpr static StaticOobeScreenId SCREEN_OOBE_DEMO_PREFERENCES{ + "demo-preferences"}; + constexpr static StaticOobeScreenId SCREEN_RECOMMEND_APPS{"recommend-apps"}; + constexpr static StaticOobeScreenId SCREEN_APP_DOWNLOADING{"app-downloading"}; + constexpr static StaticOobeScreenId SCREEN_DISCOVER{"discover"}; + constexpr static StaticOobeScreenId SCREEN_MARKETING_OPT_IN{ + "marketing-opt-in"}; + constexpr static StaticOobeScreenId SCREEN_MULTIDEVICE_SETUP{ + "multidevice-setup"}; + constexpr static StaticOobeScreenId SCREEN_UNKNOWN{"unknown"}; +}; } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screen_manager.cc b/chrome/browser/chromeos/login/screen_manager.cc index 83d68a0..d5b089ee 100644 --- a/chrome/browser/chromeos/login/screen_manager.cc +++ b/chrome/browser/chromeos/login/screen_manager.cc
@@ -20,14 +20,13 @@ screens_[screen->screen_id()] = std::move(screen); } -BaseScreen* ScreenManager::GetScreen(OobeScreen screen) { +BaseScreen* ScreenManager::GetScreen(OobeScreenId screen) { auto iter = screens_.find(screen); - DCHECK(iter != screens_.end()) - << "Failed to find screen " << GetOobeScreenName(screen); + DCHECK(iter != screens_.end()) << "Failed to find screen " << screen; return iter->second.get(); } -bool ScreenManager::HasScreen(OobeScreen screen) { +bool ScreenManager::HasScreen(OobeScreenId screen) { return screens_.count(screen) > 0; } @@ -38,7 +37,7 @@ screens_[id] = std::move(value); } -void ScreenManager::DeleteScreenForTesting(OobeScreen screen) { +void ScreenManager::DeleteScreenForTesting(OobeScreenId screen) { screens_[screen] = nullptr; }
diff --git a/chrome/browser/chromeos/login/screen_manager.h b/chrome/browser/chromeos/login/screen_manager.h index 12ce1cf..ba118b6 100644 --- a/chrome/browser/chromeos/login/screen_manager.h +++ b/chrome/browser/chromeos/login/screen_manager.h
@@ -27,16 +27,16 @@ void Init(std::vector<std::unique_ptr<BaseScreen>> screens); // Getter for screen. Does not create the screen. - BaseScreen* GetScreen(OobeScreen screen); + BaseScreen* GetScreen(OobeScreenId screen); - bool HasScreen(OobeScreen screen); + bool HasScreen(OobeScreenId screen); void SetScreenForTesting(std::unique_ptr<BaseScreen> value); - void DeleteScreenForTesting(OobeScreen screen); + void DeleteScreenForTesting(OobeScreenId screen); private: // Created screens. - std::map<OobeScreen, std::unique_ptr<BaseScreen>> screens_; + std::map<OobeScreenId, std::unique_ptr<BaseScreen>> screens_; DISALLOW_COPY_AND_ASSIGN(ScreenManager); };
diff --git a/chrome/browser/chromeos/login/screens/base_screen.cc b/chrome/browser/chromeos/login/screens/base_screen.cc index 3d16312..0702eff 100644 --- a/chrome/browser/chromeos/login/screens/base_screen.cc +++ b/chrome/browser/chromeos/login/screens/base_screen.cc
@@ -8,7 +8,7 @@ namespace chromeos { -BaseScreen::BaseScreen(OobeScreen screen_id) : screen_id_(screen_id) {} +BaseScreen::BaseScreen(OobeScreenId screen_id) : screen_id_(screen_id) {} BaseScreen::~BaseScreen() {}
diff --git a/chrome/browser/chromeos/login/screens/base_screen.h b/chrome/browser/chromeos/login/screens/base_screen.h index 8f33713a..976e500 100644 --- a/chrome/browser/chromeos/login/screens/base_screen.h +++ b/chrome/browser/chromeos/login/screens/base_screen.h
@@ -21,7 +21,7 @@ // method called just once. class BaseScreen { public: - explicit BaseScreen(OobeScreen screen_id); + explicit BaseScreen(OobeScreenId screen_id); virtual ~BaseScreen(); // Makes wizard screen visible. @@ -31,7 +31,7 @@ virtual void Hide() = 0; // Returns the identifier of the screen. - OobeScreen screen_id() const { return screen_id_; } + OobeScreenId screen_id() const { return screen_id_; } // Called when user action event with |event_id| // happened. Notification about this event comes from the JS @@ -57,7 +57,7 @@ // to screen only between OnShow / OnHide calls. base::Value* configuration_ = nullptr; - const OobeScreen screen_id_; + const OobeScreenId screen_id_; DISALLOW_COPY_AND_ASSIGN(BaseScreen); };
diff --git a/chrome/browser/chromeos/login/screens/error_screen.cc b/chrome/browser/chromeos/login/screens/error_screen.cc index 0344dfb..bd09953 100644 --- a/chrome/browser/chromeos/login/screens/error_screen.cc +++ b/chrome/browser/chromeos/login/screens/error_screen.cc
@@ -114,7 +114,7 @@ return error_state_; } -OobeScreen ErrorScreen::GetParentScreen() const { +OobeScreenId ErrorScreen::GetParentScreen() const { return parent_screen_; } @@ -143,7 +143,7 @@ } } -void ErrorScreen::SetParentScreen(OobeScreen parent_screen) { +void ErrorScreen::SetParentScreen(OobeScreenId parent_screen) { parent_screen_ = parent_screen; // Not really used on JS side yet so no need to propagate to screen context. }
diff --git a/chrome/browser/chromeos/login/screens/error_screen.h b/chrome/browser/chromeos/login/screens/error_screen.h index 6e33e21..38c139c 100644 --- a/chrome/browser/chromeos/login/screens/error_screen.h +++ b/chrome/browser/chromeos/login/screens/error_screen.h
@@ -63,7 +63,7 @@ // Returns id of the screen behind error screen ("caller" screen). // Returns OobeScreen::SCREEN_UNKNOWN if error screen isn't the current // screen. - OobeScreen GetParentScreen() const; + OobeScreenId GetParentScreen() const; // Called when we're asked to hide captive portal dialog. void HideCaptivePortal(); @@ -82,7 +82,7 @@ // Sets "parent screen" i.e. one that has initiated this network error screen // instance. - void SetParentScreen(OobeScreen parent_screen); + void SetParentScreen(OobeScreenId parent_screen); // Sets callback that is called on hide. void SetHideCallback(const base::Closure& on_hide); @@ -163,7 +163,7 @@ NetworkError::UIState ui_state_ = NetworkError::UI_STATE_UNKNOWN; NetworkError::ErrorState error_state_ = NetworkError::ERROR_STATE_UNKNOWN; - OobeScreen parent_screen_ = OobeScreen::SCREEN_UNKNOWN; + OobeScreenId parent_screen_ = OobeScreen::SCREEN_UNKNOWN; // Optional callback that is called when NetworkError screen is hidden. std::unique_ptr<base::Closure> on_hide_callback_;
diff --git a/chrome/browser/chromeos/login/screens/mock_error_screen.h b/chrome/browser/chromeos/login/screens/mock_error_screen.h index d6271de..6537e12 100644 --- a/chrome/browser/chromeos/login/screens/mock_error_screen.h +++ b/chrome/browser/chromeos/login/screens/mock_error_screen.h
@@ -41,7 +41,7 @@ MOCK_METHOD0(Hide, void()); MOCK_METHOD1(MockBind, void(ErrorScreen* screen)); MOCK_METHOD0(MockUnbind, void()); - MOCK_METHOD1(ShowOobeScreen, void(OobeScreen screen)); + MOCK_METHOD1(ShowOobeScreen, void(OobeScreenId screen)); MOCK_METHOD1(SetErrorStateCode, void(NetworkError::ErrorState error_state)); MOCK_METHOD1(SetErrorStateNetwork, void(const std::string& network_name)); MOCK_METHOD1(SetGuestSigninAllowed, void(bool value));
diff --git a/chrome/browser/chromeos/login/screens/update_required_screen.h b/chrome/browser/chromeos/login/screens/update_required_screen.h index 2d67a34f..8080ecb 100644 --- a/chrome/browser/chromeos/login/screens/update_required_screen.h +++ b/chrome/browser/chromeos/login/screens/update_required_screen.h
@@ -21,7 +21,8 @@ // Controller for the update required screen. class UpdateRequiredScreen : public BaseScreen { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_UPDATE_REQUIRED; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_UPDATE_REQUIRED; explicit UpdateRequiredScreen(UpdateRequiredView* view); ~UpdateRequiredScreen() override;
diff --git a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc index 2daf4d5e..0e83351 100644 --- a/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc +++ b/chrome/browser/chromeos/login/screens/update_screen_browsertest.cc
@@ -442,7 +442,8 @@ // If the network is a captive portal network, error message is shown with a // delay. EXPECT_TRUE(update_screen_->GetErrorMessageTimerForTesting()->IsRunning()); - EXPECT_EQ(OobeScreen::SCREEN_UNKNOWN, error_screen_->GetParentScreen()); + EXPECT_EQ(OobeScreen::SCREEN_UNKNOWN.AsId(), + error_screen_->GetParentScreen()); // If network goes back online, the error message timer should be canceled. network_portal_detector_.SimulateDefaultNetworkState( @@ -488,7 +489,8 @@ update_screen_->GetErrorMessageTimerForTesting()->FireNow(); EXPECT_FALSE(update_screen_->GetErrorMessageTimerForTesting()->IsRunning()); - ASSERT_EQ(OobeScreen::SCREEN_OOBE_UPDATE, error_screen_->GetParentScreen()); + ASSERT_EQ(OobeScreen::SCREEN_OOBE_UPDATE.AsId(), + error_screen_->GetParentScreen()); OobeScreenWaiter error_screen_waiter(OobeScreen::SCREEN_ERROR_MESSAGE); error_screen_waiter.set_assert_next_screen(); @@ -527,7 +529,8 @@ network_portal_detector_.SimulateNoNetwork(); EXPECT_FALSE(update_screen_->GetErrorMessageTimerForTesting()->IsRunning()); - ASSERT_EQ(OobeScreen::SCREEN_OOBE_UPDATE, error_screen_->GetParentScreen()); + ASSERT_EQ(OobeScreen::SCREEN_OOBE_UPDATE.AsId(), + error_screen_->GetParentScreen()); // Second portal detection also returns NULL network and undefined // results. In this case, offline message should be displayed. @@ -554,7 +557,8 @@ // Force timer expiration. EXPECT_TRUE(update_screen_->GetErrorMessageTimerForTesting()->IsRunning()); update_screen_->GetErrorMessageTimerForTesting()->FireNow(); - ASSERT_EQ(OobeScreen::SCREEN_OOBE_UPDATE, error_screen_->GetParentScreen()); + ASSERT_EQ(OobeScreen::SCREEN_OOBE_UPDATE.AsId(), + error_screen_->GetParentScreen()); OobeScreenWaiter error_screen_waiter(OobeScreen::SCREEN_ERROR_MESSAGE); error_screen_waiter.set_assert_next_screen(); @@ -564,7 +568,8 @@ "fake_path", base::DoNothing(), base::DoNothing(), false /* check_error_state */, ConnectCallbackMode::ON_COMPLETED); - ASSERT_EQ(OobeScreen::SCREEN_UNKNOWN, error_screen_->GetParentScreen()); + ASSERT_EQ(OobeScreen::SCREEN_UNKNOWN.AsId(), + error_screen_->GetParentScreen()); OobeScreenWaiter update_screen_waiter(OobeScreen::SCREEN_OOBE_UPDATE); update_screen_waiter.set_assert_next_screen();
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.cc b/chrome/browser/chromeos/login/session/user_session_manager.cc index 38f0461..97d89e418 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager.cc +++ b/chrome/browser/chromeos/login/session/user_session_manager.cc
@@ -866,7 +866,7 @@ bool UserSessionManager::RestartToApplyPerSessionFlagsIfNeed( Profile* profile, bool early_restart) { - if (!SessionManagerClient::Get()->SupportsRestartToApplyUserFlags()) + if (!SessionManagerClient::Get()->SupportsBrowserRestart()) return false; if (ProfileHelper::IsSigninProfile(profile) || @@ -1620,7 +1620,7 @@ ScreenTimeControllerFactory::GetForBrowserContext(profile); } -void UserSessionManager::ActivateWizard(OobeScreen screen) { +void UserSessionManager::ActivateWizard(OobeScreenId screen) { LoginDisplayHost* host = LoginDisplayHost::default_host(); CHECK(host); host->StartWizard(screen);
diff --git a/chrome/browser/chromeos/login/session/user_session_manager.h b/chrome/browser/chromeos/login/session/user_session_manager.h index 60d83ce..faf0f2c1 100644 --- a/chrome/browser/chromeos/login/session/user_session_manager.h +++ b/chrome/browser/chromeos/login/session/user_session_manager.h
@@ -407,7 +407,7 @@ void InitializeChildUserServices(Profile* profile); // Starts out-of-box flow with the specified screen. - void ActivateWizard(OobeScreen screen); + void ActivateWizard(OobeScreenId screen); // Adds first-time login URLs. void InitializeStartUrls() const;
diff --git a/chrome/browser/chromeos/login/test/login_screen_tester.cc b/chrome/browser/chromeos/login/test/login_screen_tester.cc index 374b08b1..3870235 100644 --- a/chrome/browser/chromeos/login/test/login_screen_tester.cc +++ b/chrome/browser/chromeos/login/test/login_screen_tester.cc
@@ -69,6 +69,13 @@ return success; } +bool LoginScreenTester::ClickGuestButton() { + ash::mojom::LoginScreenTestApiAsyncWaiter login_screen(test_api_.get()); + bool success; + login_screen.ClickGuestButton(&success); + return success; +} + bool LoginScreenTester::WaitForUiUpdate(int64_t previous_update_count) { ash::mojom::LoginScreenTestApiAsyncWaiter login_screen(test_api_.get()); bool success;
diff --git a/chrome/browser/chromeos/login/test/login_screen_tester.h b/chrome/browser/chromeos/login/test/login_screen_tester.h index 0982e4df..debca3a 100644 --- a/chrome/browser/chromeos/login/test/login_screen_tester.h +++ b/chrome/browser/chromeos/login/test/login_screen_tester.h
@@ -29,6 +29,7 @@ // Returns true on success (i.e. button is not disabled). bool ClickAddUserButton(); + bool ClickGuestButton(); // Blocks until LoginShelfView::ui_update_count() is greater then // |previous_update_count|. Returns true on success, false on error.
diff --git a/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.cc b/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.cc index c5450a55..665faa6 100644 --- a/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.cc +++ b/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.cc
@@ -10,7 +10,7 @@ namespace chromeos { -OobeScreenExitWaiter::OobeScreenExitWaiter(OobeScreen target_screen) +OobeScreenExitWaiter::OobeScreenExitWaiter(OobeScreenId target_screen) : target_screen_(target_screen) {} OobeScreenExitWaiter::~OobeScreenExitWaiter() = default; @@ -37,8 +37,8 @@ oobe_ui_observer_.RemoveAll(); } -void OobeScreenExitWaiter::OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) { +void OobeScreenExitWaiter::OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) { DCHECK_NE(state_, State::IDLE); if (new_screen != target_screen_) EndWait();
diff --git a/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h b/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h index 5df7c7bf..ce9aaf7 100644 --- a/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h +++ b/chrome/browser/chromeos/login/test/oobe_screen_exit_waiter.h
@@ -24,12 +24,12 @@ class OobeScreenExitWaiter : public OobeUI::Observer, public test::TestConditionWaiter { public: - explicit OobeScreenExitWaiter(OobeScreen target_screen); + explicit OobeScreenExitWaiter(OobeScreenId target_screen); ~OobeScreenExitWaiter() override; // OobeUI::Observer implementation: - void OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) override; + void OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) override; void OnDestroyingOobeUI() override; // TestConditionWaiter; @@ -41,7 +41,7 @@ OobeUI* GetOobeUI(); void EndWait(); - const OobeScreen target_screen_; + const OobeScreenId target_screen_; State state_ = State::IDLE;
diff --git a/chrome/browser/chromeos/login/test/oobe_screen_waiter.cc b/chrome/browser/chromeos/login/test/oobe_screen_waiter.cc index 72ab872..6f7c21a 100644 --- a/chrome/browser/chromeos/login/test/oobe_screen_waiter.cc +++ b/chrome/browser/chromeos/login/test/oobe_screen_waiter.cc
@@ -10,7 +10,7 @@ namespace chromeos { -OobeScreenWaiter::OobeScreenWaiter(OobeScreen target_screen) +OobeScreenWaiter::OobeScreenWaiter(OobeScreenId target_screen) : target_screen_(target_screen) {} OobeScreenWaiter::~OobeScreenWaiter() = default; @@ -40,24 +40,22 @@ EXPECT_EQ(target_screen_, GetOobeUI()->current_screen()); } -void OobeScreenWaiter::OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) { +void OobeScreenWaiter::OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) { DCHECK_NE(state_, State::IDLE); if (state_ != State::WAITING_FOR_SCREEN) { if (assert_last_screen_ && new_screen != target_screen_) { ADD_FAILURE() << "Screen changed from the target screen " - << static_cast<int>(current_screen) << " -> " - << static_cast<int>(new_screen); + << current_screen.name << " -> " << new_screen.name; EndWait(); } return; } if (assert_next_screen_ && new_screen != target_screen_) { - ADD_FAILURE() << "Untarget screen change to " - << static_cast<int>(new_screen) << " while waiting for " - << static_cast<int>(target_screen_); + ADD_FAILURE() << "Untarget screen change to " << new_screen.name + << " while waiting for " << target_screen_.name; EndWait(); return; }
diff --git a/chrome/browser/chromeos/login/test/oobe_screen_waiter.h b/chrome/browser/chromeos/login/test/oobe_screen_waiter.h index 80c52fe..3dedcd2 100644 --- a/chrome/browser/chromeos/login/test/oobe_screen_waiter.h +++ b/chrome/browser/chromeos/login/test/oobe_screen_waiter.h
@@ -23,15 +23,15 @@ class OobeScreenWaiter : public OobeUI::Observer, public test::TestConditionWaiter { public: - explicit OobeScreenWaiter(OobeScreen target_screen); + explicit OobeScreenWaiter(OobeScreenId target_screen); ~OobeScreenWaiter() override; void set_no_assert_last_screen() { assert_last_screen_ = false; } void set_assert_next_screen() { assert_next_screen_ = true; } // OobeUI::Observer implementation: - void OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) override; + void OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) override; void OnDestroyingOobeUI() override; // TestConditionWaiter; @@ -43,7 +43,7 @@ OobeUI* GetOobeUI(); void EndWait(); - const OobeScreen target_screen_; + const OobeScreenId target_screen_; State state_ = State::IDLE;
diff --git a/chrome/browser/chromeos/login/test/session_flags_manager.cc b/chrome/browser/chromeos/login/test/session_flags_manager.cc index fc801c0e..20563c43 100644 --- a/chrome/browser/chromeos/login/test/session_flags_manager.cc +++ b/chrome/browser/chromeos/login/test/session_flags_manager.cc
@@ -15,11 +15,14 @@ #include "base/json/json_file_value_serializer.h" #include "base/logging.h" #include "base/path_service.h" +#include "base/stl_util.h" +#include "base/strings/stringprintf.h" #include "base/values.h" #include "chrome/common/chrome_paths.h" #include "chromeos/constants/chromeos_switches.h" #include "chromeos/cryptohome/cryptohome_parameters.h" #include "chromeos/dbus/session_manager/fake_session_manager_client.h" +#include "components/user_manager/user_names.h" #include "third_party/cros_system_api/switches/chrome_switches.h" namespace chromeos { @@ -30,6 +33,7 @@ // Keys for values in dictionary used to preserve session manager state. constexpr char kUserIdKey[] = "active_user_id"; constexpr char kUserHashKey[] = "active_user_hash"; +constexpr char kRestartJobKey[] = "restart_job"; constexpr char kUserFlagsKey[] = "user_flags"; constexpr char kFlagNameKey[] = "name"; constexpr char kFlagValueKey[] = "value"; @@ -67,10 +71,22 @@ void SessionFlagsManager::AppendSwitchesToCommandLine( base::CommandLine* command_line) { - if (mode_ == Mode::LOGIN_SCREEN || user_id_.empty()) { + if (restart_job_.has_value()) { + DCHECK_EQ(mode_, Mode::LOGIN_SCREEN_WITH_SESSION_RESTORE); + for (const auto& item : *restart_job_) { + // Do not override flags added to test command line by default. + if (command_line->HasSwitch(item.first)) + continue; + command_line->AppendSwitchASCII(item.first, item.second); + } + } + + if (mode_ == Mode::LOGIN_SCREEN || + (user_id_.empty() && !restart_job_.has_value())) { command_line->AppendSwitch(switches::kLoginManager); command_line->AppendSwitch(switches::kForceLoginManagerInTests); - } else { + command_line->AppendSwitchASCII(switches::kLoginProfile, "user"); + } else if (!user_id_.empty()) { DCHECK_EQ(mode_, Mode::LOGIN_SCREEN_WITH_SESSION_RESTORE); command_line->AppendSwitchASCII(switches::kLoginUser, user_id_); command_line->AppendSwitchASCII(switches::kLoginProfile, user_hash_); @@ -109,21 +125,35 @@ DCHECK(value->is_dict()); const std::string* user_id = value->FindStringKey(kUserIdKey); - if (!user_id || user_id->empty()) - return; + if (user_id && !user_id->empty()) { + user_id_ = *user_id; + } - user_id_ = *user_id; - user_hash_ = *value->FindStringKey(kUserHashKey); + const std::string* user_hash = value->FindStringKey(kUserHashKey); + if (user_hash && !user_hash->empty()) { + user_hash_ = *user_hash; + } base::Value* user_flags = value->FindListKey(kUserFlagsKey); - if (!user_flags) - return; + if (user_flags) { + user_flags_ = std::vector<Switch>(); + for (const base::Value& flag : user_flags->GetList()) { + DCHECK(flag.is_dict()); + user_flags_->emplace_back( + std::make_pair(*flag.FindStringKey(kFlagNameKey), + *flag.FindStringKey(kFlagValueKey))); + } + } - user_flags_ = std::vector<Switch>(); - for (const base::Value& flag : user_flags->GetList()) { - DCHECK(flag.is_dict()); - user_flags_->emplace_back(std::make_pair( - *flag.FindStringKey(kFlagNameKey), *flag.FindStringKey(kFlagValueKey))); + base::Value* restart_job = value->FindListKey(kRestartJobKey); + if (restart_job) { + restart_job_ = std::vector<Switch>(); + for (const base::Value& job_switch : restart_job->GetList()) { + DCHECK(job_switch.is_dict()); + restart_job_->emplace_back( + std::make_pair(*job_switch.FindStringKey(kFlagNameKey), + *job_switch.FindStringKey(kFlagValueKey))); + } } } @@ -132,50 +162,85 @@ FakeSessionManagerClient::Get()->user_sessions(); const bool session_active = !sessions.empty() && !FakeSessionManagerClient::Get()->session_stopped(); - + const bool has_restart_job = + FakeSessionManagerClient::Get()->restart_job_argv().has_value(); // If a user session is not active, clear the backing file so default flags // are used next time. - if (!session_active) { + if (!session_active && !has_restart_job) { base::DeleteFile(backing_file_, false /*recursive*/); return; } - // Currently, only support single user sessions. - DCHECK_EQ(1u, sessions.size()); - const auto& session = sessions.begin(); + std::string user_id; + std::string user_profile; + if (has_restart_job) { + // Set guest user ID, so it can be used to retrieve user flags. + // Restart job is only used for guest login, and the command line it sets + // up is expected to already contain switches::kLoginUser and + // switches::kLoginProfile. There is a DCHECK below to ensure that restart + // job sets these flags to expected guest user values. + user_id = user_manager::kGuestUserName; + } else { + // Currently, only support single user sessions. + DCHECK_EQ(1u, sessions.size()); + user_id = sessions.begin()->first; + user_profile = sessions.begin()->second; + } base::Value cached_state(base::Value::Type::DICTIONARY); - cached_state.SetKey(kUserIdKey, base::Value(session->first)); - cached_state.SetKey(kUserHashKey, base::Value(session->second)); + + // Restart job command line should already contain login user and profile + // switches, no reason to store it separately. + if (!has_restart_job && !user_id.empty()) { + DCHECK(!user_profile.empty()); + cached_state.SetKey(kUserIdKey, base::Value(user_id)); + cached_state.SetKey(kUserHashKey, base::Value(user_profile)); + } std::vector<Switch> user_flag_args; std::vector<std::string> raw_flags; const bool has_user_flags = FakeSessionManagerClient::Get()->GetFlagsForUser( cryptohome::CreateAccountIdentifierFromIdentification( - cryptohome::Identification::FromString(session->first)), + cryptohome::Identification::FromString(user_id)), &raw_flags); if (has_user_flags) { std::vector<std::string> argv = {"" /* Empty program */}; argv.insert(argv.end(), raw_flags.begin(), raw_flags.end()); + cached_state.SetKey(kUserFlagsKey, GetSwitchesValueFromArgv(argv)); + } - // Parse flag name-value pairs using command line initialization. - base::CommandLine cmd_line(base::CommandLine::NO_PROGRAM); - cmd_line.InitFromArgv(argv); + if (has_restart_job) { + const std::vector<std::string>& argv = + FakeSessionManagerClient::Get()->restart_job_argv().value(); + DCHECK(base::ContainsValue( + argv, base::StringPrintf("--%s=%s", switches::kLoginUser, + user_manager::kGuestUserName))); + DCHECK(base::ContainsValue( + argv, base::StringPrintf("--%s=%s", switches::kLoginProfile, "user"))); - base::Value flag_list(base::Value::Type::LIST); - for (const auto& flag : cmd_line.GetSwitches()) { - base::Value flag_value(base::Value::Type::DICTIONARY); - flag_value.SetKey(kFlagNameKey, base::Value(flag.first)); - flag_value.SetKey(kFlagValueKey, base::Value(flag.second)); - - flag_list.GetList().emplace_back(std::move(flag_value)); - } - cached_state.SetKey(kUserFlagsKey, std::move(flag_list)); + cached_state.SetKey(kRestartJobKey, GetSwitchesValueFromArgv(argv)); } JSONFileValueSerializer serializer(backing_file_); serializer.Serialize(cached_state); } +base::Value SessionFlagsManager::GetSwitchesValueFromArgv( + const std::vector<std::string>& argv) { + // Parse flag name-value pairs using command line initialization. + base::CommandLine cmd_line(base::CommandLine::NO_PROGRAM); + cmd_line.InitFromArgv(argv); + + base::Value flag_list(base::Value::Type::LIST); + for (const auto& flag : cmd_line.GetSwitches()) { + base::Value flag_value(base::Value::Type::DICTIONARY); + flag_value.SetKey(kFlagNameKey, base::Value(flag.first)); + flag_value.SetKey(kFlagValueKey, base::Value(flag.second)); + + flag_list.GetList().emplace_back(std::move(flag_value)); + } + return flag_list; +} + } // namespace test } // namespace chromeos
diff --git a/chrome/browser/chromeos/login/test/session_flags_manager.h b/chrome/browser/chromeos/login/test/session_flags_manager.h index ef316660..27a9680 100644 --- a/chrome/browser/chromeos/login/test/session_flags_manager.h +++ b/chrome/browser/chromeos/login/test/session_flags_manager.h
@@ -14,7 +14,8 @@ namespace base { class CommandLine; -} +class Value; +} // namespace base namespace chromeos { namespace test { @@ -26,7 +27,8 @@ // runs. If a user session was active in the previous run, this will set up // command line to restore session for that user, which can be useful for // testing chrome restart to apply per-session flags, or session restore on -// crash. +// crash. Additionally, it respects restart job arguments if one was requested +// (restart job is used to restart session as guest user). class SessionFlagsManager { public: // Pair of switch name and value. The value can be empty. @@ -43,7 +45,8 @@ // the test command line. The file will contain session information saved // during the previous (PRE_) browser test step. The information includes: // * the active user information - // * the active user's per-session flags. + // * the active user's per-session flags + // * restart job flags, if restart job was requested. // // If the backing file is not found, or empty, command line will be // set up with login manager flags so test starts on the login screen. @@ -79,6 +82,7 @@ void LoadStateFromBackingFile(); void StoreStateToBackingFile(); + base::Value GetSwitchesValueFromArgv(const std::vector<std::string>& argv); // The mode this manager is running in. Mode mode_ = Mode::LOGIN_SCREEN; @@ -96,6 +100,9 @@ std::string user_hash_; base::Optional<std::vector<Switch>> user_flags_; + // List of switches passed as a restart job arguments. + base::Optional<std::vector<Switch>> restart_job_; + // If |session_restore_enabled_| is set, the path to the file where session // state is saved. base::FilePath backing_file_;
diff --git a/chrome/browser/chromeos/login/test/wizard_in_process_browser_test.cc b/chrome/browser/chromeos/login/test/wizard_in_process_browser_test.cc new file mode 100644 index 0000000..62f6945 --- /dev/null +++ b/chrome/browser/chromeos/login/test/wizard_in_process_browser_test.cc
@@ -0,0 +1,61 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/login/test/wizard_in_process_browser_test.h" + +#include "base/command_line.h" +#include "base/location.h" +#include "base/message_loop/message_loop.h" +#include "base/run_loop.h" +#include "base/single_thread_task_runner.h" +#include "base/threading/thread_task_runner_handle.h" +#include "chrome/browser/chrome_notification_types.h" +#include "chrome/browser/chromeos/login/login_wizard.h" +#include "chrome/browser/chromeos/login/ui/login_display_host.h" +#include "chrome/browser/chromeos/login/wizard_controller.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/common/chrome_switches.h" +#include "chromeos/constants/chromeos_switches.h" +#include "content/public/browser/notification_service.h" + +namespace chromeos { + +WizardInProcessBrowserTest::WizardInProcessBrowserTest(OobeScreenId screen) + : screen_(screen) {} + +void WizardInProcessBrowserTest::SetUp() { + WizardController::SetZeroDelays(); + InProcessBrowserTest::SetUp(); +} + +void WizardInProcessBrowserTest::SetUpCommandLine( + base::CommandLine* command_line) { + command_line->AppendSwitch(::switches::kNoStartupWindow); + command_line->AppendSwitch(switches::kLoginManager); +} + +void WizardInProcessBrowserTest::SetUpOnMainThread() { + SetUpWizard(); + if (screen_ != OobeScreen::SCREEN_UNKNOWN) { + ShowLoginWizard(screen_); + host_ = LoginDisplayHost::default_host(); + } +} + +void WizardInProcessBrowserTest::TearDownOnMainThread() { + ASSERT_TRUE(base::MessageLoopCurrentForUI::IsSet()); + + if (!host_) + return; + + // LoginDisplayHost owns controllers and all windows. It needs to be destroyed + // here because the derived tests have clean-up code assuming LoginDisplayHost + // is gone. + base::RunLoop run_loop; + host_->Finalize(run_loop.QuitClosure()); + run_loop.Run(); + host_ = nullptr; +} + +} // namespace chromeos
diff --git a/chrome/browser/chromeos/login/ui/fake_login_display_host.cc b/chrome/browser/chromeos/login/ui/fake_login_display_host.cc index 04001877..be8e47a 100644 --- a/chrome/browser/chromeos/login/ui/fake_login_display_host.cc +++ b/chrome/browser/chromeos/login/ui/fake_login_display_host.cc
@@ -11,7 +11,7 @@ class FakeLoginDisplayHost::FakeBaseScreen : public chromeos::BaseScreen { public: - explicit FakeBaseScreen(chromeos::OobeScreen screen_id) + explicit FakeBaseScreen(chromeos::OobeScreenId screen_id) : BaseScreen(screen_id) {} ~FakeBaseScreen() override = default; @@ -59,7 +59,7 @@ void FakeLoginDisplayHost::SetStatusAreaVisible(bool visible) {} -void FakeLoginDisplayHost::StartWizard(OobeScreen first_screen) { +void FakeLoginDisplayHost::StartWizard(OobeScreenId first_screen) { wizard_controller_ = std::make_unique<WizardController>(); fake_screen_ = std::make_unique<FakeBaseScreen>(first_screen);
diff --git a/chrome/browser/chromeos/login/ui/fake_login_display_host.h b/chrome/browser/chromeos/login/ui/fake_login_display_host.h index 2e06c28..916d9a42 100644 --- a/chrome/browser/chromeos/login/ui/fake_login_display_host.h +++ b/chrome/browser/chromeos/login/ui/fake_login_display_host.h
@@ -32,7 +32,7 @@ void BeforeSessionStart() override; void Finalize(base::OnceClosure) override; void SetStatusAreaVisible(bool visible) override; - void StartWizard(chromeos::OobeScreen first_screen) override; + void StartWizard(chromeos::OobeScreenId first_screen) override; WizardController* GetWizardController() override; AppLaunchController* GetAppLaunchController() override; void StartUserAdding(base::OnceClosure completion_callback) override;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host.h b/chrome/browser/chromeos/login/ui/login_display_host.h index 6d91e9eb..4acb3660 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host.h +++ b/chrome/browser/chromeos/login/ui/login_display_host.h
@@ -90,7 +90,7 @@ // Starts out-of-box-experience flow or shows other screen handled by // Wizard controller i.e. camera, recovery. // One could specify start screen with |first_screen|. - virtual void StartWizard(OobeScreen first_screen) = 0; + virtual void StartWizard(OobeScreenId first_screen) = 0; // Returns current WizardController, if it exists. // Result should not be stored.
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc index bfb739a2..018c0e8b 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.cc
@@ -154,7 +154,7 @@ NOTIMPLEMENTED(); } -void LoginDisplayHostMojo::StartWizard(OobeScreen first_screen) { +void LoginDisplayHostMojo::StartWizard(OobeScreenId first_screen) { DCHECK(GetOobeUI()); wizard_controller_ = std::make_unique<WizardController>();
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h index a8626ea..149e616 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_mojo.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_mojo.h
@@ -69,7 +69,7 @@ WebUILoginView* GetWebUILoginView() const override; void OnFinalize() override; void SetStatusAreaVisible(bool visible) override; - void StartWizard(OobeScreen first_screen) override; + void StartWizard(OobeScreenId first_screen) override; WizardController* GetWizardController() override; void OnStartUserAdding() override; void CancelUserAdding() override;
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc index f9e8397..f6efa6e 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.cc
@@ -170,7 +170,7 @@ } // Returns true if signin (not oobe) should be displayed. -bool ShouldShowSigninScreen(chromeos::OobeScreen first_screen) { +bool ShouldShowSigninScreen(chromeos::OobeScreenId first_screen) { return (first_screen == chromeos::OobeScreen::SCREEN_UNKNOWN && IsOobeComplete()) || first_screen == chromeos::OobeScreen::SCREEN_SPECIAL_LOGIN; @@ -181,7 +181,7 @@ // OnLanguageSwitchedCallback() // (if locale was updated). void ShowLoginWizardFinish( - chromeos::OobeScreen first_screen, + chromeos::OobeScreenId first_screen, const chromeos::StartupCustomizationDocument* startup_manifest) { TRACE_EVENT0("chromeos", "ShowLoginWizard::ShowLoginWizardFinish"); @@ -229,11 +229,11 @@ struct ShowLoginWizardSwitchLanguageCallbackData { explicit ShowLoginWizardSwitchLanguageCallbackData( - chromeos::OobeScreen first_screen, + chromeos::OobeScreenId first_screen, const chromeos::StartupCustomizationDocument* startup_manifest) : first_screen(first_screen), startup_manifest(startup_manifest) {} - const chromeos::OobeScreen first_screen; + const chromeos::OobeScreenId first_screen; const chromeos::StartupCustomizationDocument* const startup_manifest; // lock UI while resource bundle is being reloaded. @@ -532,7 +532,7 @@ StartWizard(first_screen_); } -void LoginDisplayHostWebUI::StartWizard(OobeScreen first_screen) { +void LoginDisplayHostWebUI::StartWizard(OobeScreenId first_screen) { if (!StartupUtils::IsOobeCompleted()) { CHECK(OobeConfiguration::Get()); if (waiting_for_configuration_) @@ -564,8 +564,7 @@ if (!login_window_) LoadURL(GURL(kOobeURL)); - DVLOG(1) << "Starting wizard, first_screen: " - << GetOobeScreenName(first_screen); + DVLOG(1) << "Starting wizard, first_screen: " << first_screen; // Create and show the wizard. wizard_controller_ = std::make_unique<WizardController>(); @@ -1157,11 +1156,11 @@ // Declared in login_wizard.h so that others don't need to depend on our .h. // TODO(nkostylev): Split this into a smaller functions. -void ShowLoginWizard(OobeScreen first_screen) { +void ShowLoginWizard(OobeScreenId first_screen) { if (browser_shutdown::IsTryingToQuit()) return; - VLOG(1) << "Showing OOBE screen: " << GetOobeScreenName(first_screen); + VLOG(1) << "Showing OOBE screen: " << first_screen; input_method::InputMethodManager* manager = input_method::InputMethodManager::Get();
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_webui.h b/chrome/browser/chromeos/login/ui/login_display_host_webui.h index 186c5f67..93c460a8 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_webui.h +++ b/chrome/browser/chromeos/login/ui/login_display_host_webui.h
@@ -67,7 +67,7 @@ WebUILoginView* GetWebUILoginView() const override; void OnFinalize() override; void SetStatusAreaVisible(bool visible) override; - void StartWizard(OobeScreen first_screen) override; + void StartWizard(OobeScreenId first_screen) override; WizardController* GetWizardController() override; void OnStartUserAdding() override; void CancelUserAdding() override; @@ -248,7 +248,7 @@ RestorePath restore_path_ = RESTORE_UNKNOWN; // Stored parameters for StartWizard, required to restore in case of crash. - OobeScreen first_screen_; + OobeScreenId first_screen_ = OobeScreen::SCREEN_UNKNOWN; // A focus ring controller to draw focus ring around view for keyboard // driven oobe.
diff --git a/chrome/browser/chromeos/login/ui/mock_login_display_host.h b/chrome/browser/chromeos/login/ui/mock_login_display_host.h index 580ae8c..67edff2 100644 --- a/chrome/browser/chromeos/login/ui/mock_login_display_host.h +++ b/chrome/browser/chromeos/login/ui/mock_login_display_host.h
@@ -34,7 +34,7 @@ } MOCK_METHOD1(SetStatusAreaVisible, void(bool)); - MOCK_METHOD1(StartWizard, void(OobeScreen)); + MOCK_METHOD1(StartWizard, void(OobeScreenId)); MOCK_METHOD0(GetWizardController, WizardController*(void)); MOCK_METHOD0(GetAppLaunchController, AppLaunchController*(void));
diff --git a/chrome/browser/chromeos/login/ui/views/user_board_view.h b/chrome/browser/chromeos/login/ui/views/user_board_view.h index bc13243..3fc8dfe 100644 --- a/chrome/browser/chromeos/login/ui/views/user_board_view.h +++ b/chrome/browser/chromeos/login/ui/views/user_board_view.h
@@ -27,7 +27,8 @@ // or Views one. class UserBoardView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_USER_SELECTION; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_USER_SELECTION; virtual ~UserBoardView() {}
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 33498ff..42887e9 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -166,7 +166,7 @@ const unsigned int kResolveTimeZoneTimeoutSeconds = 60; // Stores the list of all screens that should be shown when resuming OOBE. -const chromeos::OobeScreen kResumableScreens[] = { +const chromeos::StaticOobeScreenId kResumableScreens[] = { chromeos::OobeScreen::SCREEN_OOBE_WELCOME, chromeos::OobeScreen::SCREEN_OOBE_NETWORK, chromeos::OobeScreen::SCREEN_OOBE_UPDATE, @@ -194,7 +194,7 @@ ash::switches::kAshEnableTabletMode); } -bool IsResumableScreen(chromeos::OobeScreen screen) { +bool IsResumableScreen(chromeos::OobeScreenId screen) { for (const auto& resumable_screen : kResumableScreens) { if (screen == resumable_screen) return true; @@ -203,7 +203,7 @@ } struct Entry { - chromeos::OobeScreen screen; + chromeos::StaticOobeScreenId screen; const char* uma_name; }; @@ -217,13 +217,13 @@ "supervised-user-creation-flow"}, {chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE, "tos"}}; -void RecordUMAHistogramForOOBEStepCompletionTime(chromeos::OobeScreen screen, +void RecordUMAHistogramForOOBEStepCompletionTime(chromeos::OobeScreenId screen, base::TimeDelta step_time) { // Fetch screen name; make sure to use initial UMA name if the name has // changed. - std::string screen_name = chromeos::GetOobeScreenName(screen); + std::string screen_name = screen.name; for (const auto& entry : kLegacyUmaOobeScreenNames) { - if (entry.screen == screen) { + if (entry.screen.AsId() == screen) { screen_name = entry.uma_name; break; } @@ -329,11 +329,10 @@ screen_manager_.reset(); } -void WizardController::Init(OobeScreen first_screen) { +void WizardController::Init(OobeScreenId first_screen) { screen_manager_->Init(CreateScreens()); - VLOG(1) << "Starting OOBE wizard with screen: " - << GetOobeScreenName(first_screen); + VLOG(1) << "Starting OOBE wizard with screen: " << first_screen; first_screen_ = first_screen; bool oobe_complete = StartupUtils::IsOobeCompleted(); @@ -378,7 +377,7 @@ if (is_out_of_box_ && !screen_pref.empty() && (first_screen == OobeScreen::SCREEN_UNKNOWN || first_screen == OobeScreen::SCREEN_TEST_NO_WINDOW)) { - first_screen_ = GetOobeScreenFromName(screen_pref); + first_screen_ = OobeScreenId(screen_pref); } AdvanceToScreen(first_screen_); @@ -396,7 +395,7 @@ return GetOobeUI()->GetErrorScreen(); } -BaseScreen* WizardController::GetScreen(OobeScreen screen) { +BaseScreen* WizardController::GetScreen(OobeScreenId screen) { if (screen == OobeScreen::SCREEN_ERROR_MESSAGE) return GetErrorScreen(); return screen_manager_->GetScreen(screen); @@ -711,11 +710,10 @@ skip_update_enroll_after_eula_ = true; } -void WizardController::OnScreenExit(OobeScreen screen, int exit_code) { +void WizardController::OnScreenExit(OobeScreenId screen, int exit_code) { DCHECK(current_screen_->screen_id() == screen); - VLOG(1) << "Wizard screen " << GetOobeScreenName(screen) - << " exited with code: " << exit_code; + VLOG(1) << "Wizard screen " << screen << " exited with code: " << exit_code; if (IsOOBEStepToTrack(screen)) { RecordUMAHistogramForOOBEStepCompletionTime( @@ -1297,8 +1295,7 @@ // First remember how far have we reached so that we can resume if needed. if (is_out_of_box_ && !demo_setup_controller_ && IsResumableScreen(current_screen_->screen_id())) { - StartupUtils::SaveOobePendingScreen( - GetOobeScreenName(current_screen_->screen_id())); + StartupUtils::SaveOobePendingScreen(current_screen_->screen_id().name); } smooth_show_timer_.Stop(); @@ -1310,8 +1307,7 @@ void WizardController::SetCurrentScreenSmooth(BaseScreen* new_current, bool use_smoothing) { - VLOG(1) << "SetCurrentScreenSmooth: " - << GetOobeScreenName(new_current->screen_id()); + VLOG(1) << "SetCurrentScreenSmooth: " << new_current->screen_id(); if (current_screen_ == new_current || new_current == nullptr || GetOobeUI() == nullptr) { return; @@ -1324,7 +1320,7 @@ current_screen_->SetConfiguration(nullptr); } - const OobeScreen screen = new_current->screen_id(); + const OobeScreenId screen = new_current->screen_id(); if (IsOOBEStepToTrack(screen)) screen_show_times_[screen] = base::Time::Now(); @@ -1340,7 +1336,8 @@ } } -void WizardController::UpdateStatusAreaVisibilityForScreen(OobeScreen screen) { +void WizardController::UpdateStatusAreaVisibilityForScreen( + OobeScreenId screen) { if (screen == OobeScreen::SCREEN_OOBE_WELCOME) { // Hide the status area initially; it only appears after OOBE first animates // in. Keep it visible if the user goes back to the existing welcome screen. @@ -1393,7 +1390,7 @@ } } -void WizardController::AdvanceToScreen(OobeScreen screen) { +void WizardController::AdvanceToScreen(OobeScreenId screen) { if (screen == OobeScreen::SCREEN_OOBE_WELCOME) { ShowWelcomeScreen(); } else if (screen == OobeScreen::SCREEN_OOBE_NETWORK) { @@ -1563,7 +1560,7 @@ } // static -bool WizardController::IsOOBEStepToTrack(OobeScreen screen_id) { +bool WizardController::IsOOBEStepToTrack(OobeScreenId screen_id) { return (screen_id == OobeScreen::SCREEN_OOBE_HID_DETECTION || screen_id == OobeScreen::SCREEN_OOBE_WELCOME || screen_id == OobeScreen::SCREEN_OOBE_UPDATE || @@ -1578,7 +1575,7 @@ if (!default_controller() || !default_controller()->current_screen()) return; - const OobeScreen current_screen_id = + const OobeScreenId current_screen_id = default_controller()->current_screen()->screen_id(); if (current_screen_id == OobeScreen::SCREEN_TERMS_OF_SERVICE || current_screen_id == OobeScreen::SCREEN_SYNC_CONSENT || @@ -1589,7 +1586,7 @@ default_controller()->OnOobeFlowFinished(); } else { LOG(WARNING) << "SkipPostLoginScreensForTesting(): Ignore screen " - << static_cast<int>(current_screen_id); + << current_screen_id.name; } }
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h index db4f6f5..d347889 100644 --- a/chrome/browser/chromeos/login/wizard_controller.h +++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -78,7 +78,7 @@ static bool IsZeroDelayEnabled(); // Checks whether screen show time should be tracked with UMA. - static bool IsOOBEStepToTrack(OobeScreen screen_id); + static bool IsOOBEStepToTrack(OobeScreenId screen_id); // Skips any screens that may normally be shown after login (registration, // Terms of Service, user image selection). @@ -96,10 +96,10 @@ // Shows the first screen defined by |first_screen| or by default if the // parameter is empty. - void Init(OobeScreen first_screen); + void Init(OobeScreenId first_screen); // Advances to screen defined by |screen| and shows it. - void AdvanceToScreen(OobeScreen screen); + void AdvanceToScreen(OobeScreenId screen); // Starts Demo Mode setup flow. The flow starts from network screen and reuses // some of regular OOBE screens. It consists of the following screens: @@ -138,7 +138,7 @@ bool login_screen_started() const { return login_screen_started_; } // Returns a given screen. Creates it lazily. - BaseScreen* GetScreen(OobeScreen screen); + BaseScreen* GetScreen(OobeScreenId screen); // Returns the current ScreenManager instance. ScreenManager* screen_manager() const { return screen_manager_.get(); } @@ -191,7 +191,7 @@ // Shared actions to be performed on a screen exit. // |exit_code| is the screen specific exit code reported by the screen. - void OnScreenExit(OobeScreen screen, int exit_code); + void OnScreenExit(OobeScreenId screen, int exit_code); // Exit handlers: void OnWrongHWIDScreenExit(); @@ -273,7 +273,7 @@ void SetCurrentScreenSmooth(BaseScreen* screen, bool use_smoothing); // Update the status area visibility for |screen|. - void UpdateStatusAreaVisibilityForScreen(OobeScreen screen); + void UpdateStatusAreaVisibilityForScreen(OobeScreenId screen); // Launched kiosk app configured for auto-launch. void AutoLaunchKioskApp(); @@ -288,7 +288,7 @@ local_state_for_testing_ = local_state; } - OobeScreen first_screen() const { return first_screen_; } + OobeScreenId first_screen() const { return first_screen_; } // Called when network is UP. void StartTimezoneResolve(); @@ -320,7 +320,7 @@ void StartEnrollmentScreen(bool force_interactive); void OnConfigurationLoaded( - OobeScreen first_screen, + OobeScreenId first_screen, std::unique_ptr<base::DictionaryValue> configuration); // Returns auto enrollment controller (lazily initializes one if it doesn't @@ -349,7 +349,7 @@ bool is_out_of_box_ = false; // Value of the screen name that WizardController was started with. - OobeScreen first_screen_; + OobeScreenId first_screen_ = OobeScreen::SCREEN_UNKNOWN; base::OneShotTimer smooth_show_timer_; @@ -410,7 +410,7 @@ std::unique_ptr<DemoSetupController> demo_setup_controller_; // Maps screen names to last time of their shows. - std::map<OobeScreen, base::Time> screen_show_times_; + std::map<OobeScreenId, base::Time> screen_show_times_; // Tests check result of timezone resolve. bool timezone_resolved_ = false;
diff --git a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc index 991bc79c..01b68cf 100644 --- a/chrome/browser/chromeos/login/wizard_controller_browsertest.cc +++ b/chrome/browser/chromeos/login/wizard_controller_browsertest.cc
@@ -411,7 +411,7 @@ return result; } - void CheckCurrentScreen(OobeScreen screen) { + void CheckCurrentScreen(OobeScreenId screen) { EXPECT_EQ(WizardController::default_controller()->GetScreen(screen), WizardController::default_controller()->current_screen()); } @@ -1281,7 +1281,7 @@ // The error screen shows up if device state could not be retrieved. EXPECT_FALSE(StartupUtils::IsOobeCompleted()); CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); - EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK, + EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK.AsId(), GetErrorScreen()->GetParentScreen()); base::DictionaryValue device_state; device_state.SetString(policy::kDeviceStateMode, @@ -1383,7 +1383,7 @@ // The error screen shows up if there's no auto-enrollment decision. EXPECT_FALSE(StartupUtils::IsOobeCompleted()); CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); - EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK, + EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK.AsId(), GetErrorScreen()->GetParentScreen()); WaitUntilJSIsReady(); @@ -1492,7 +1492,7 @@ // The error screen shows up. EXPECT_FALSE(StartupUtils::IsOobeCompleted()); CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); - EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK, + EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK.AsId(), GetErrorScreen()->GetParentScreen()); WaitUntilJSIsReady(); @@ -1628,7 +1628,7 @@ // The error screen shows up if there's no auto-enrollment decision. EXPECT_FALSE(StartupUtils::IsOobeCompleted()); - EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK, + EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK.AsId(), GetErrorScreen()->GetParentScreen()); base::DictionaryValue device_state; device_state.SetString(policy::kDeviceStateMode, @@ -1712,7 +1712,7 @@ // The error screen shows up if there's no auto-enrollment decision. EXPECT_FALSE(StartupUtils::IsOobeCompleted()); - EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK, + EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK.AsId(), GetErrorScreen()->GetParentScreen()); WaitUntilJSIsReady(); @@ -2311,7 +2311,7 @@ } template <class T> - void SkipToScreen(OobeScreen screen, T* screen_mock) { + void SkipToScreen(OobeScreenId screen, T* screen_mock) { EXPECT_CALL(*screen_mock, Show()).Times(1); auto* const wizard_controller = WizardController::default_controller(); wizard_controller->SimulateDemoModeSetupForTesting(); @@ -2698,7 +2698,7 @@ // The error screen shows up if device state could not be retrieved. CheckCurrentScreen(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK); - EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK, + EXPECT_EQ(OobeScreen::SCREEN_AUTO_ENROLLMENT_CHECK.AsId(), GetErrorScreen()->GetParentScreen()); base::DictionaryValue device_state; device_state.SetString(policy::kDeviceStateMode, @@ -2752,7 +2752,7 @@ base::Unretained(wizard_controller)))); } - OobeScreen GetFirstScreen() { + OobeScreenId GetFirstScreen() { return WizardController::default_controller()->first_screen(); } @@ -2792,7 +2792,7 @@ IN_PROC_BROWSER_TEST_F(WizardControllerOobeResumeTest, ControlFlowResumeInterruptedOobe) { - EXPECT_EQ(OobeScreen::SCREEN_OOBE_ENROLLMENT, GetFirstScreen()); + EXPECT_EQ(OobeScreen::SCREEN_OOBE_ENROLLMENT.AsId(), GetFirstScreen()); } class WizardControllerCellularFirstTest : public WizardControllerFlowTest {
diff --git a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc index 2c2ed7b..5170431 100644 --- a/chrome/browser/chromeos/policy/device_local_account_browsertest.cc +++ b/chrome/browser/chromeos/policy/device_local_account_browsertest.cc
@@ -2182,7 +2182,7 @@ chromeos::WizardController::default_controller(); ASSERT_TRUE(wizard_controller); ASSERT_TRUE(wizard_controller->current_screen()); - EXPECT_EQ(chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE, + EXPECT_EQ(chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE.AsId(), wizard_controller->current_screen()->screen_id()); // Wait for the Terms of Service to finish downloading. @@ -2638,7 +2638,7 @@ chromeos::WizardController::default_controller(); ASSERT_TRUE(wizard_controller); ASSERT_TRUE(wizard_controller->current_screen()); - EXPECT_EQ(chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE, + EXPECT_EQ(chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE.AsId(), wizard_controller->current_screen()->screen_id()); // Wait for the Terms of Service to finish downloading, then get the status of @@ -2784,7 +2784,7 @@ chromeos::WizardController::default_controller(); ASSERT_TRUE(wizard_controller); ASSERT_TRUE(wizard_controller->current_screen()); - EXPECT_EQ(chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE, + EXPECT_EQ(chromeos::OobeScreen::SCREEN_TERMS_OF_SERVICE.AsId(), wizard_controller->current_screen()->screen_id()); // Click the back button.
diff --git a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc index 4460fff..80ad0b0 100644 --- a/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc +++ b/chrome/browser/chromeos/policy/site_isolation_flag_handling_browsertest.cc
@@ -306,8 +306,7 @@ // Note that AttemptRestart() is mocked out in UserSessionManager through // |SetAttemptRestartClosureInTests| (set up in SetUpOnMainThread). SessionManagerClient::InitializeFake(); - FakeSessionManagerClient::Get()->set_supports_restart_to_apply_user_flags( - true); + FakeSessionManagerClient::Get()->set_supports_browser_restart(true); } void SetUpOnMainThread() override {
diff --git a/chrome/browser/chromeos/system/device_disabling_browsertest.cc b/chrome/browser/chromeos/system/device_disabling_browsertest.cc index 5934ad7..ef2a4db 100644 --- a/chrome/browser/chromeos/system/device_disabling_browsertest.cc +++ b/chrome/browser/chromeos/system/device_disabling_browsertest.cc
@@ -196,7 +196,7 @@ // Verify that the login screen was not shown and the device disabled screen // is still being shown instead. - EXPECT_EQ(GetOobeScreenName(OobeScreen::SCREEN_DEVICE_DISABLED), + EXPECT_EQ(OobeScreen::SCREEN_DEVICE_DISABLED.name, GetCurrentScreenName(web_contents)); // Disconnect from the fake Ethernet network. @@ -219,7 +219,7 @@ // Verify that the offline error screen was not shown and the device disabled // screen is still being shown instead. - EXPECT_EQ(GetOobeScreenName(OobeScreen::SCREEN_DEVICE_DISABLED), + EXPECT_EQ(OobeScreen::SCREEN_DEVICE_DISABLED.name, GetCurrentScreenName(web_contents)); }
diff --git a/chrome/browser/download/download_browsertest.cc b/chrome/browser/download/download_browsertest.cc index 382c1c5..e10c172 100644 --- a/chrome/browser/download/download_browsertest.cc +++ b/chrome/browser/download/download_browsertest.cc
@@ -105,6 +105,7 @@ #include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" #include "content/public/common/context_menu_params.h" +#include "content/public/common/service_manager_connection.h" #include "content/public/test/browser_test_utils.h" #include "content/public/test/download_test_observer.h" #include "content/public/test/slow_download_http_response.h" @@ -121,6 +122,10 @@ #include "net/test/embedded_test_server/http_response.h" #include "net/test/url_request/url_request_mock_http_job.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" +#include "services/device/public/mojom/constants.mojom.h" +#include "services/device/public/mojom/wake_lock.mojom.h" +#include "services/device/public/mojom/wake_lock_provider.mojom.h" +#include "services/service_manager/public/cpp/connector.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/page_transition_types.h" @@ -1195,6 +1200,40 @@ std::unique_ptr<TestSafeBrowsingServiceFactory> test_safe_browsing_factory_; }; +class DownloadWakeLockTest : public DownloadTest { + public: + DownloadWakeLockTest() = default; + + void Initialize() { + auto* connection = content::ServiceManagerConnection::GetForProcess(); + auto* connector = connection->GetConnector(); + connector_ = connector->Clone(); + connector_->BindInterface(device::mojom::kServiceName, + &wake_lock_provider_); + } + + // Returns the number of active wake locks of type |type|. + int GetActiveWakeLocks(device::mojom::WakeLockType type) { + base::RunLoop run_loop; + int result_count = 0; + wake_lock_provider_->GetActiveWakeLocksForTests( + type, + base::BindOnce( + [](base::RunLoop* run_loop, int* result_count, int32_t count) { + *result_count = count; + run_loop->Quit(); + }, + &run_loop, &result_count)); + run_loop.Run(); + return result_count; + } + + protected: + device::mojom::WakeLockProviderPtr wake_lock_provider_; + std::unique_ptr<service_manager::Connector> connector_; + DISALLOW_COPY_AND_ASSIGN(DownloadWakeLockTest); +}; + } // namespace // NOTES: @@ -3707,6 +3746,20 @@ ASSERT_TRUE(origin_three.ShutdownAndWaitUntilComplete()); } +IN_PROC_BROWSER_TEST_F(DownloadWakeLockTest, WakeLockAcquireAndCancel) { + Initialize(); + EXPECT_EQ(0, GetActiveWakeLocks( + device::mojom::WakeLockType::kPreventAppSuspension)); + DownloadItem* download_item = CreateSlowTestDownload(); + ASSERT_TRUE(download_item); + EXPECT_EQ(1, GetActiveWakeLocks( + device::mojom::WakeLockType::kPreventAppSuspension)); + download_item->Cancel(true); + EXPECT_EQ(DownloadItem::CANCELLED, download_item->GetState()); + EXPECT_EQ(0, GetActiveWakeLocks( + device::mojom::WakeLockType::kPreventAppSuspension)); +} + #if defined(FULL_SAFE_BROWSING) namespace {
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn index 135cf585..be0a75a4 100644 --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn
@@ -364,6 +364,7 @@ "api/storage/syncable_settings_storage.h", "api/streams_private/streams_private_api.cc", "api/streams_private/streams_private_api.h", + "api/system_indicator/system_indicator_api.cc", "api/system_indicator/system_indicator_api.h", "api/system_indicator/system_indicator_manager.cc", "api/system_indicator/system_indicator_manager.h",
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_service.cc b/chrome/browser/extensions/api/content_settings/content_settings_service.cc index 6fd03e56..66c59d56 100644 --- a/chrome/browser/extensions/api/content_settings/content_settings_service.cc +++ b/chrome/browser/extensions/api/content_settings/content_settings_service.cc
@@ -12,7 +12,8 @@ namespace extensions { ContentSettingsService::ContentSettingsService(content::BrowserContext* context) - : content_settings_store_(new ContentSettingsStore()) {} + : content_settings_store_(new ContentSettingsStore()), + scoped_observer_(this) {} ContentSettingsService::~ContentSettingsService() {} @@ -69,14 +70,13 @@ content_settings_store_->SetExtensionState(extension_id, state); } +void ContentSettingsService::OnExtensionPrefsWillBeDestroyed( + ExtensionPrefs* prefs) { + scoped_observer_.Remove(prefs); +} + void ContentSettingsService::OnExtensionPrefsAvailable(ExtensionPrefs* prefs) { - // TODO(nigeltao): Use a ScopedObserver (as a member field, not a local - // variable). - // - // As is, this is a leak: an AddObserver call that has no matching - // RemoveObserver call. This leak will become a dangling pointer when this - // ContentSettingsService object is destroyed. - prefs->AddObserver(this); + scoped_observer_.Add(prefs); } } // namespace extensions
diff --git a/chrome/browser/extensions/api/content_settings/content_settings_service.h b/chrome/browser/extensions/api/content_settings/content_settings_service.h index da4404d..4887f5e 100644 --- a/chrome/browser/extensions/api/content_settings/content_settings_service.h +++ b/chrome/browser/extensions/api/content_settings/content_settings_service.h
@@ -7,6 +7,7 @@ #include "base/macros.h" #include "base/memory/ref_counted.h" +#include "base/scoped_observer.h" #include "chrome/browser/extensions/api/content_settings/content_settings_store.h" #include "extensions/browser/browser_context_keyed_api_factory.h" #include "extensions/browser/extension_prefs_observer.h" @@ -45,6 +46,7 @@ void OnExtensionPrefsDeleted(const std::string& extension_id) override; void OnExtensionStateChanged(const std::string& extension_id, bool state) override; + void OnExtensionPrefsWillBeDestroyed(ExtensionPrefs* prefs) override; // EarlyExtensionPrefsObserver implementation. void OnExtensionPrefsAvailable(ExtensionPrefs* prefs) override; @@ -57,6 +59,7 @@ static const char* service_name() { return "ContentSettingsService"; } scoped_refptr<ContentSettingsStore> content_settings_store_; + ScopedObserver<ExtensionPrefs, ExtensionPrefsObserver> scoped_observer_; DISALLOW_COPY_AND_ASSIGN(ContentSettingsService); };
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc index a1578d2a..c033a98 100644 --- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc +++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
@@ -458,8 +458,6 @@ case ActionInfo::TYPE_PAGE: action_key = R"("page_action": {},)"; break; - case ActionInfo::TYPE_SYSTEM_INDICATOR: - NOTREACHED(); } }
diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chrome/browser/extensions/api/extension_action/extension_action_api.cc index 268894c..f01a0e9 100644 --- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc +++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc
@@ -209,10 +209,6 @@ histogram_value = events::PAGE_ACTION_ON_CLICKED; event_name = "pageAction.onClicked"; break; - case ActionInfo::TYPE_SYSTEM_INDICATOR: - // The System Indicator handles its own clicks. - NOTREACHED(); - break; } if (event_name) { @@ -295,15 +291,7 @@ ExtensionFunction::ResponseAction ExtensionActionFunction::Run() { ExtensionActionManager* manager = ExtensionActionManager::Get(browser_context()); - if (base::StartsWith(name(), "systemIndicator.", - base::CompareCase::INSENSITIVE_ASCII)) { - extension_action_ = manager->GetSystemIndicator(*extension()); - } else { - extension_action_ = manager->GetBrowserAction(*extension()); - if (!extension_action_) { - extension_action_ = manager->GetPageAction(*extension()); - } - } + extension_action_ = manager->GetExtensionAction(*extension()); if (!extension_action_) { // TODO(kalman): ideally the browserAction/pageAction APIs wouldn't event // exist for extensions that don't have one declared. This should come as @@ -322,11 +310,9 @@ if (!contents_) return RespondNow(Error(kNoTabError, base::NumberToString(tab_id_))); } else { - // Only browser actions and system indicators have a default tabId. - ActionInfo::Type action_type = extension_action_->action_type(); - EXTENSION_FUNCTION_VALIDATE( - action_type == ActionInfo::TYPE_BROWSER || - action_type == ActionInfo::TYPE_SYSTEM_INDICATOR); + // Only browser actions have a default tabId. + EXTENSION_FUNCTION_VALIDATE(extension_action_->action_type() == + ActionInfo::TYPE_BROWSER); } return RunExtensionAction(); }
diff --git a/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc b/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc index 54ad94c2..621171c 100644 --- a/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc +++ b/chrome/browser/extensions/api/preference/preference_api_prefs_unittest.cc
@@ -103,7 +103,7 @@ : PrefsPrepopulatedTestBase(), content_settings_(ContentSettingsService::Get(&profile_)), test_preference_api_(&prefs_, content_settings_) { - prefs_.prefs()->AddObserver(content_settings_); + content_settings_->OnExtensionPrefsAvailable(prefs_.prefs()); } ExtensionControlledPrefsTest::~ExtensionControlledPrefsTest() {
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_api.cc b/chrome/browser/extensions/api/system_indicator/system_indicator_api.cc new file mode 100644 index 0000000..14407bcd --- /dev/null +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_api.cc
@@ -0,0 +1,80 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/extensions/api/system_indicator/system_indicator_api.h" + +#include "base/no_destructor.h" +#include "chrome/browser/extensions/api/system_indicator/system_indicator_manager.h" +#include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h" +#include "chrome/browser/extensions/extension_action.h" +#include "chrome/common/extensions/api/system_indicator/system_indicator_handler.h" +#include "ui/gfx/image/image.h" +#include "ui/gfx/image/image_skia.h" + +namespace extensions { + +namespace { + +// Returns true if the extension has a system indicator. +bool HasSystemIndicator(const Extension& extension) { + return SystemIndicatorHandler::GetSystemIndicatorIcon(extension) != nullptr; +} + +} // namespace + +ExtensionFunction::ResponseAction SystemIndicatorSetIconFunction::Run() { + EXTENSION_FUNCTION_VALIDATE(extension()); + EXTENSION_FUNCTION_VALIDATE(HasSystemIndicator(*extension())); + + EXTENSION_FUNCTION_VALIDATE(args_->GetList().size() == 1); + EXTENSION_FUNCTION_VALIDATE(args_->GetList()[0].is_dict()); + + const base::Value& set_icon_details = args_->GetList()[0]; + + // NOTE: For historical reasons, this code is primarily taken from + // ExtensionActionSetIconFunction. + // setIcon can take a variant argument: either a dictionary of canvas + // ImageData, or an icon index. + if (const base::Value* canvas_set = set_icon_details.FindKeyOfType( + "imageData", base::Value::Type::DICTIONARY)) { + gfx::ImageSkia icon; + EXTENSION_FUNCTION_VALIDATE(ExtensionAction::ParseIconFromCanvasDictionary( + static_cast<const base::DictionaryValue&>(*canvas_set), &icon)); + + if (icon.isNull()) + return RespondNow(Error("Icon invalid.")); + + SystemIndicatorManagerFactory::GetForContext(browser_context()) + ->SetSystemIndicatorDynamicIcon(*extension(), gfx::Image(icon)); + } else if (set_icon_details.FindKeyOfType("iconIndex", + base::Value::Type::INTEGER)) { + // Obsolete argument: ignore it. + // TODO(devlin): Do we need this here? Does any systemIndicator extension + // use it? + } else { + EXTENSION_FUNCTION_VALIDATE(false); + } + + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction SystemIndicatorEnableFunction::Run() { + EXTENSION_FUNCTION_VALIDATE(extension()); + EXTENSION_FUNCTION_VALIDATE(HasSystemIndicator(*extension())); + + SystemIndicatorManagerFactory::GetForContext(browser_context()) + ->SetSystemIndicatorEnabled(*extension(), true); + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction SystemIndicatorDisableFunction::Run() { + EXTENSION_FUNCTION_VALIDATE(extension()); + EXTENSION_FUNCTION_VALIDATE(HasSystemIndicator(*extension())); + + SystemIndicatorManagerFactory::GetForContext(browser_context()) + ->SetSystemIndicatorEnabled(*extension(), false); + return RespondNow(NoArguments()); +} + +} // namespace extensions
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_api.h b/chrome/browser/extensions/api/system_indicator/system_indicator_api.h index 318d8eb..b0bd25e 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_api.h +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_api.h
@@ -5,31 +5,36 @@ #ifndef CHROME_BROWSER_EXTENSIONS_API_SYSTEM_INDICATOR_SYSTEM_INDICATOR_API_H_ #define CHROME_BROWSER_EXTENSIONS_API_SYSTEM_INDICATOR_SYSTEM_INDICATOR_API_H_ -#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "extensions/browser/extension_function.h" namespace extensions { -class SystemIndicatorSetIconFunction : public ExtensionActionSetIconFunction { +class SystemIndicatorSetIconFunction : public UIThreadExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("systemIndicator.setIcon", SYSTEMINDICATOR_SETICON) + ResponseAction Run() override; + protected: ~SystemIndicatorSetIconFunction() override {} }; -class SystemIndicatorEnableFunction : public ExtensionActionShowFunction { +class SystemIndicatorEnableFunction : public UIThreadExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("systemIndicator.enable", SYSTEMINDICATOR_ENABLE) + ResponseAction Run() override; + protected: ~SystemIndicatorEnableFunction() override {} }; -class SystemIndicatorDisableFunction : public ExtensionActionHideFunction { +class SystemIndicatorDisableFunction : public UIThreadExtensionFunction { public: DECLARE_EXTENSION_FUNCTION("systemIndicator.disable", SYSTEMINDICATOR_DISABLE) + ResponseAction Run() override; + protected: ~SystemIndicatorDisableFunction() override {} };
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc b/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc index 2313974..684c765 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_apitest.cc
@@ -9,63 +9,63 @@ #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/lazy_background_page_test_util.h" #include "chrome/browser/ui/browser.h" +#include "components/version_info/channel.h" #include "extensions/browser/process_manager.h" #include "extensions/common/extension.h" +#include "extensions/common/features/feature_channel.h" +#include "extensions/common/manifest_test.h" #include "extensions/test/result_catcher.h" namespace extensions { class SystemIndicatorApiTest : public ExtensionApiTest { public: + SystemIndicatorApiTest() : scoped_channel_(version_info::Channel::DEV) {} + ~SystemIndicatorApiTest() override = default; + void SetUpOnMainThread() override { ExtensionApiTest::SetUpOnMainThread(); // Set shorter delays to prevent test timeouts in tests that need to wait // for the event page to unload. - extensions::ProcessManager::SetEventPageIdleTimeForTesting(1); - extensions::ProcessManager::SetEventPageSuspendingTimeForTesting(1); + ProcessManager::SetEventPageIdleTimeForTesting(1); + ProcessManager::SetEventPageSuspendingTimeForTesting(1); } - const extensions::Extension* LoadExtensionAndWait( - const std::string& test_name) { + const Extension* LoadExtensionAndWait(const std::string& test_name) { LazyBackgroundObserver page_complete; base::FilePath extdir = test_data_dir_.AppendASCII(test_name); - const extensions::Extension* extension = LoadExtension(extdir); + const Extension* extension = LoadExtension(extdir); if (extension) page_complete.Wait(); return extension; } + + private: + ScopedCurrentChannel scoped_channel_; + + DISALLOW_COPY_AND_ASSIGN(SystemIndicatorApiTest); }; -IN_PROC_BROWSER_TEST_F(ExtensionApiTest, SystemIndicator) { - // Only run this test on supported platforms. SystemIndicatorManagerFactory - // returns NULL on unsupported platforms. - extensions::SystemIndicatorManager* manager = - extensions::SystemIndicatorManagerFactory::GetForProfile(profile()); - if (manager) { - ASSERT_TRUE(RunExtensionTest("system_indicator/basics")) << message_; - } +IN_PROC_BROWSER_TEST_F(SystemIndicatorApiTest, SystemIndicator) { + ASSERT_TRUE(RunExtensionTest("system_indicator/basics")) << message_; } // Failing on 10.6, flaky elsewhere http://crbug.com/497643 IN_PROC_BROWSER_TEST_F(SystemIndicatorApiTest, DISABLED_SystemIndicator) { - // Only run this test on supported platforms. SystemIndicatorManagerFactory - // returns NULL on unsupported platforms. - extensions::SystemIndicatorManager* manager = - extensions::SystemIndicatorManagerFactory::GetForProfile(profile()); - if (manager) { - extensions::ResultCatcher catcher; + ResultCatcher catcher; - const extensions::Extension* extension = - LoadExtensionAndWait("system_indicator/unloaded"); - ASSERT_TRUE(extension) << message_; + const Extension* extension = + LoadExtensionAndWait("system_indicator/unloaded"); + ASSERT_TRUE(extension) << message_; - // Lazy Background Page has been shut down. - extensions::ProcessManager* pm = extensions::ProcessManager::Get(profile()); - EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); + // Lazy Background Page has been shut down. + ProcessManager* pm = ProcessManager::Get(profile()); + EXPECT_FALSE(pm->GetBackgroundHostForExtension(last_loaded_extension_id())); - EXPECT_TRUE(manager->SendClickEventToExtensionForTest(extension->id())); - EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); - } + SystemIndicatorManager* manager = + SystemIndicatorManagerFactory::GetForContext(profile()); + EXPECT_TRUE(manager->SendClickEventToExtensionForTest(extension->id())); + EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); } } // namespace extensions
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc b/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc index baa15574..ee22cb17 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_manager.cc
@@ -6,6 +6,7 @@ #include <utility> +#include "base/stl_util.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/profiles/profile.h" @@ -13,11 +14,13 @@ #include "chrome/browser/status_icons/status_icon_observer.h" #include "chrome/browser/status_icons/status_tray.h" #include "chrome/common/extensions/api/system_indicator.h" +#include "chrome/common/extensions/api/system_indicator/system_indicator_handler.h" #include "content/public/browser/web_contents.h" #include "extensions/browser/event_router.h" +#include "extensions/browser/extension_icon_image.h" #include "extensions/browser/extension_registry.h" #include "extensions/common/extension.h" -#include "ui/gfx/image/image.h" +#include "extensions/common/extension_icon_set.h" namespace extensions { @@ -28,57 +31,69 @@ // and removing the icon from the notification area during construction and // destruction. class ExtensionIndicatorIcon : public StatusIconObserver, - public ExtensionActionIconFactory::Observer { + public IconImage::Observer { public: static std::unique_ptr<ExtensionIndicatorIcon> Create( - const Extension* extension, - ExtensionAction* action, + const Extension& extension, + const ExtensionIconSet& icon_set, Profile* profile, StatusTray* status_tray); ~ExtensionIndicatorIcon() override; - // StatusIconObserver implementation. + // Sets the dynamic icon for the indicator. + void SetDynamicIcon(gfx::Image dynamic_icon); + + // StatusIconObserver: void OnStatusIconClicked() override; - // ExtensionActionIconFactory::Observer implementation. - void OnIconUpdated() override; - private: - ExtensionIndicatorIcon(const Extension* extension, - ExtensionAction* action, + ExtensionIndicatorIcon(const Extension& extension, + const ExtensionIconSet& manifest_icon_set, Profile* profile, StatusTray* status_tray); - const extensions::Extension* extension_; + // IconImage::Observer: + void OnExtensionIconImageChanged(IconImage* image) override; + + const Extension* extension_; StatusTray* status_tray_; - StatusIcon* icon_; + StatusIcon* status_icon_; Profile* profile_; - ExtensionActionIconFactory icon_factory_; + IconImage manifest_icon_; + gfx::Image dynamic_icon_; + + DISALLOW_COPY_AND_ASSIGN(ExtensionIndicatorIcon); }; std::unique_ptr<ExtensionIndicatorIcon> ExtensionIndicatorIcon::Create( - const Extension* extension, - ExtensionAction* action, + const Extension& extension, + const ExtensionIconSet& icon_set, Profile* profile, StatusTray* status_tray) { - std::unique_ptr<ExtensionIndicatorIcon> extension_icon( - new ExtensionIndicatorIcon(extension, action, profile, status_tray)); + // Private ctor, so have to use WrapUnique. + auto extension_icon = base::WrapUnique( + new ExtensionIndicatorIcon(extension, icon_set, profile, status_tray)); // Check if a status icon was successfully created. - if (extension_icon->icon_) + if (extension_icon->status_icon_) return extension_icon; // We could not create a status icon. - return std::unique_ptr<ExtensionIndicatorIcon>(); + return nullptr; } ExtensionIndicatorIcon::~ExtensionIndicatorIcon() { - if (icon_) { - icon_->RemoveObserver(this); - status_tray_->RemoveStatusIcon(icon_); + if (status_icon_) { + status_icon_->RemoveObserver(this); + status_tray_->RemoveStatusIcon(status_icon_); } } +void ExtensionIndicatorIcon::SetDynamicIcon(gfx::Image dynamic_icon) { + dynamic_icon_ = std::move(dynamic_icon); + status_icon_->SetImage(dynamic_icon_.AsImageSkia()); +} + void ExtensionIndicatorIcon::OnStatusIconClicked() { std::unique_ptr<base::ListValue> params( api::system_indicator::OnClicked::Create()); @@ -90,40 +105,46 @@ event_router->DispatchEventToExtension(extension_->id(), std::move(event)); } -void ExtensionIndicatorIcon::OnIconUpdated() { - icon_->SetImage( - icon_factory_.GetIcon(ExtensionAction::kDefaultTabId).AsImageSkia()); +void ExtensionIndicatorIcon::OnExtensionIconImageChanged(IconImage* image) { + if (dynamic_icon_.IsEmpty()) // Don't override a dynamically-set icon. + status_icon_->SetImage(manifest_icon_.image().AsImageSkia()); } -ExtensionIndicatorIcon::ExtensionIndicatorIcon(const Extension* extension, - ExtensionAction* action, - Profile* profile, - StatusTray* status_tray) - : extension_(extension), +ExtensionIndicatorIcon::ExtensionIndicatorIcon( + const Extension& extension, + const ExtensionIconSet& manifest_icon_set, + Profile* profile, + StatusTray* status_tray) + : extension_(&extension), status_tray_(status_tray), - icon_(NULL), + status_icon_(nullptr), profile_(profile), - icon_factory_(profile, extension, action, this) { + manifest_icon_(profile, + &extension, + manifest_icon_set, + ExtensionAction::ActionIconSize(), + ExtensionAction::FallbackIcon().AsImageSkia(), + this) { // Get the icon image and tool tip for the status icon. The extension name is // used as the tool tip. - gfx::ImageSkia icon_image = - icon_factory_.GetIcon(ExtensionAction::kDefaultTabId).AsImageSkia(); + gfx::ImageSkia icon_skia = manifest_icon_.image().AsImageSkia(); base::string16 tool_tip = base::UTF8ToUTF16(extension_->name()); - icon_ = status_tray_->CreateStatusIcon( - StatusTray::OTHER_ICON, icon_image, tool_tip); - if (icon_) - icon_->AddObserver(this); + status_icon_ = status_tray_->CreateStatusIcon(StatusTray::OTHER_ICON, + icon_skia, tool_tip); + if (status_icon_) + status_icon_->AddObserver(this); } +SystemIndicatorManager::SystemIndicator::SystemIndicator() {} +SystemIndicatorManager::SystemIndicator::~SystemIndicator() = default; + SystemIndicatorManager::SystemIndicatorManager(Profile* profile, StatusTray* status_tray) : profile_(profile), status_tray_(status_tray), - extension_action_observer_(this), extension_registry_observer_(this) { extension_registry_observer_.Add(ExtensionRegistry::Get(profile_)); - extension_action_observer_.Add(ExtensionActionAPI::Get(profile_)); } SystemIndicatorManager::~SystemIndicatorManager() { @@ -134,64 +155,73 @@ DCHECK(thread_checker_.CalledOnValidThread()); } +void SystemIndicatorManager::SetSystemIndicatorDynamicIcon( + const Extension& extension, + gfx::Image icon) { + DCHECK(thread_checker_.CalledOnValidThread()); + DCHECK(base::ContainsKey(system_indicators_, extension.id())); + auto& indicator = system_indicators_[extension.id()]; + indicator.dynamic_icon = icon; + if (indicator.system_tray_indicator) + indicator.system_tray_indicator->SetDynamicIcon(std::move(icon)); +} + +void SystemIndicatorManager::SetSystemIndicatorEnabled( + const Extension& extension, + bool is_enabled) { + DCHECK(thread_checker_.CalledOnValidThread()); + DCHECK(base::ContainsKey(system_indicators_, extension.id())); + auto& indicator = system_indicators_[extension.id()]; + bool is_already_enabled = !!indicator.system_tray_indicator; + if (is_already_enabled == is_enabled) + return; + + if (is_enabled) { + indicator.system_tray_indicator = ExtensionIndicatorIcon::Create( + extension, indicator.manifest_icon_set, profile_, status_tray_); + // Note: The system tray indicator creation can fail. + if (indicator.system_tray_indicator && !indicator.dynamic_icon.IsEmpty()) { + indicator.system_tray_indicator->SetDynamicIcon(indicator.dynamic_icon); + } + } else { + indicator.system_tray_indicator.reset(); + } +} + +void SystemIndicatorManager::OnExtensionLoaded( + content::BrowserContext* browser_context, + const Extension* extension) { + DCHECK(thread_checker_.CalledOnValidThread()); + DCHECK(!base::ContainsKey(system_indicators_, extension->id())); + const ExtensionIconSet* indicator_icon = + SystemIndicatorHandler::GetSystemIndicatorIcon(*extension); + if (!indicator_icon) + return; + + auto& indicator = system_indicators_[extension->id()]; + indicator.manifest_icon_set = *indicator_icon; +} + void SystemIndicatorManager::OnExtensionUnloaded( content::BrowserContext* browser_context, const Extension* extension, UnloadedExtensionReason reason) { - RemoveIndicator(extension->id()); -} - -void SystemIndicatorManager::OnExtensionActionUpdated( - ExtensionAction* extension_action, - content::WebContents* web_contents, - content::BrowserContext* browser_context) { DCHECK(thread_checker_.CalledOnValidThread()); - if (profile_->GetOriginalProfile() != browser_context || - extension_action->action_type() != ActionInfo::TYPE_SYSTEM_INDICATOR) - return; - - std::string extension_id = extension_action->extension_id(); - if (extension_action->GetIsVisible(ExtensionAction::kDefaultTabId)) { - CreateOrUpdateIndicator( - ExtensionRegistry::Get(profile_)->enabled_extensions().GetByID( - extension_id), - extension_action); - } else { - RemoveIndicator(extension_id); - } + system_indicators_.erase(extension->id()); } bool SystemIndicatorManager::SendClickEventToExtensionForTest( - const std::string& extension_id) { + const ExtensionId& extension_id) { + DCHECK(thread_checker_.CalledOnValidThread()); auto it = system_indicators_.find(extension_id); - if (it == system_indicators_.end()) + if (it == system_indicators_.end() || + it->second.system_tray_indicator == nullptr) { return false; - - it->second->OnStatusIconClicked(); - return true; -} - -void SystemIndicatorManager::CreateOrUpdateIndicator( - const Extension* extension, - ExtensionAction* extension_action) { - DCHECK(thread_checker_.CalledOnValidThread()); - auto it = system_indicators_.find(extension->id()); - if (it != system_indicators_.end()) { - it->second->OnIconUpdated(); - return; } - std::unique_ptr<ExtensionIndicatorIcon> extension_icon = - ExtensionIndicatorIcon::Create(extension, extension_action, profile_, - status_tray_); - if (extension_icon) - system_indicators_[extension->id()] = std::move(extension_icon); -} - -void SystemIndicatorManager::RemoveIndicator(const std::string& extension_id) { - DCHECK(thread_checker_.CalledOnValidThread()); - system_indicators_.erase(extension_id); + it->second.system_tray_indicator->OnStatusIconClicked(); + return true; } } // namespace extensions
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_manager.h b/chrome/browser/extensions/api/system_indicator/system_indicator_manager.h index a16d5f37f..35cefbe 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_manager.h +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_manager.h
@@ -12,12 +12,12 @@ #include "base/macros.h" #include "base/scoped_observer.h" #include "base/threading/thread_checker.h" -#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" -#include "chrome/browser/extensions/extension_action_icon_factory.h" #include "components/keyed_service/core/keyed_service.h" #include "extensions/browser/extension_registry_observer.h" +#include "extensions/common/extension_icon_set.h" +#include "extensions/common/extension_id.h" +#include "ui/gfx/image/image.h" -class ExtensionAction; class Profile; class StatusTray; @@ -31,54 +31,60 @@ // that are currently visible in the UI. Use SystemIndicatorManagerFactory to // create a SystemIndicatorManager object. class SystemIndicatorManager : public ExtensionRegistryObserver, - public ExtensionActionAPI::Observer, public KeyedService { public: SystemIndicatorManager(Profile* profile, StatusTray* status_tray); ~SystemIndicatorManager() override; + // Sets the icon of the system indicator for the given |extension| to + // |icon|. + void SetSystemIndicatorDynamicIcon(const Extension& extension, + gfx::Image icon); + + // Sets whether the system indicator for the given |extension| is enabled. + void SetSystemIndicatorEnabled(const Extension& extension, bool is_enabled); + // KeyedService implementation. void Shutdown() override; private: FRIEND_TEST_ALL_PREFIXES(SystemIndicatorApiTest, SystemIndicator); - // ExtensionRegistryObserver implementation. + // A structure representing the system indicator for an extension. + struct SystemIndicator { + SystemIndicator(); + ~SystemIndicator(); + + // A dynamically-set icon (through systemIndicator.setIcon()). Takes + // precedence over the |default_icon|. + gfx::Image dynamic_icon; + // The default system indicator icon specified in the manifest. + ExtensionIconSet manifest_icon_set; + // The system tray indicator. This is only non-null if the system indicator + // is enabled. + std::unique_ptr<ExtensionIndicatorIcon> system_tray_indicator; + + DISALLOW_COPY_AND_ASSIGN(SystemIndicator); + }; + + // ExtensionRegistryObserver: + void OnExtensionLoaded(content::BrowserContext* browser_context, + const Extension* extension) override; void OnExtensionUnloaded(content::BrowserContext* browser_context, const Extension* extension, UnloadedExtensionReason reason) override; - // ExtensionActionAPI::Observer implementation. - void OnExtensionActionUpdated( - ExtensionAction* extension_action, - content::WebContents* web_contents, - content::BrowserContext* browser_context) override; - // Causes a call to OnStatusIconClicked for the specified extension_id. // Returns false if no ExtensionIndicatorIcon is found for the extension. bool SendClickEventToExtensionForTest(const std::string& extension_id); - // Causes an indicator to be shown for the given extension_action. Creates - // the indicator if necessary. - void CreateOrUpdateIndicator( - const Extension* extension, - ExtensionAction* extension_action); - - // Causes the indicator for the given extension to be hidden. - void RemoveIndicator(const std::string& extension_id); - - using SystemIndicatorMap = - std::map<const std::string, std::unique_ptr<ExtensionIndicatorIcon>>; + using SystemIndicatorMap = std::map<ExtensionId, SystemIndicator>; Profile* profile_; StatusTray* status_tray_; SystemIndicatorMap system_indicators_; base::ThreadChecker thread_checker_; - ScopedObserver<ExtensionActionAPI, ExtensionActionAPI::Observer> - extension_action_observer_; - - // Listen to extension unloaded notifications. ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver> extension_registry_observer_;
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.cc b/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.cc index 8aef0625..f28a58d 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.cc +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.cc
@@ -5,7 +5,6 @@ #include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "chrome/browser/extensions/api/system_indicator/system_indicator_manager.h" #include "chrome/browser/profiles/profile.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" @@ -15,10 +14,10 @@ namespace extensions { // static -SystemIndicatorManager* SystemIndicatorManagerFactory::GetForProfile( - Profile* profile) { +SystemIndicatorManager* SystemIndicatorManagerFactory::GetForContext( + content::BrowserContext* context) { return static_cast<SystemIndicatorManager*>( - GetInstance()->GetServiceForBrowserContext(profile, true)); + GetInstance()->GetServiceForBrowserContext(context, true)); } // static @@ -31,7 +30,6 @@ "SystemIndicatorManager", BrowserContextDependencyManager::GetInstance()) { DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); - DependsOn(ExtensionActionAPI::GetFactoryInstance()); } SystemIndicatorManagerFactory::~SystemIndicatorManagerFactory() {} @@ -46,4 +44,11 @@ status_tray); } +bool SystemIndicatorManagerFactory::ServiceIsCreatedWithBrowserContext() const { + // The SystemIndicatorManager monitors extensions being loaded and unloaded + // to check if they have system indicators specified. In order to observe + // these, it needs to be created at profile initialization. + return true; +} + } // namespace extensions
diff --git a/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h b/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h index 3e4e91b3..a2038318 100644 --- a/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h +++ b/chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h
@@ -8,7 +8,9 @@ #include "base/memory/singleton.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" -class Profile; +namespace content { +class BrowserContext; +} namespace extensions { class SystemIndicatorManager; @@ -16,7 +18,8 @@ // BrowserContextKeyedServiceFactory for each SystemIndicatorManager. class SystemIndicatorManagerFactory : public BrowserContextKeyedServiceFactory { public: - static SystemIndicatorManager* GetForProfile(Profile* profile); + static SystemIndicatorManager* GetForContext( + content::BrowserContext* context); static SystemIndicatorManagerFactory* GetInstance(); @@ -28,7 +31,8 @@ // BrowserContextKeyedServiceFactory implementation. KeyedService* BuildServiceInstanceFor( - content::BrowserContext* profile) const override; + content::BrowserContext* context) const override; + bool ServiceIsCreatedWithBrowserContext() const override; }; } // namespace extensions
diff --git a/chrome/browser/extensions/browser_context_keyed_service_factories.cc b/chrome/browser/extensions/browser_context_keyed_service_factories.cc index 966d4347..1004dec 100644 --- a/chrome/browser/extensions/browser_context_keyed_service_factories.cc +++ b/chrome/browser/extensions/browser_context_keyed_service_factories.cc
@@ -28,6 +28,7 @@ #include "chrome/browser/extensions/api/settings_overrides/settings_overrides_api.h" #include "chrome/browser/extensions/api/settings_private/settings_private_event_router_factory.h" #include "chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.h" +#include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h" #include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h" #include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" #include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h" @@ -118,6 +119,7 @@ #if BUILDFLAG(ENABLE_SPELLCHECK) extensions::SpellcheckAPI::GetFactoryInstance(); #endif + extensions::SystemIndicatorManagerFactory::GetInstance(); extensions::TabCaptureRegistry::GetFactoryInstance(); extensions::TabsWindowsAPI::GetFactoryInstance(); extensions::TtsAPI::GetFactoryInstance();
diff --git a/chrome/browser/extensions/extension_action_manager.cc b/chrome/browser/extensions/extension_action_manager.cc index 79cf9eb..49843c9 100644 --- a/chrome/browser/extensions/extension_action_manager.cc +++ b/chrome/browser/extensions/extension_action_manager.cc
@@ -4,10 +4,11 @@ #include "chrome/browser/extensions/extension_action_manager.h" -#include "chrome/browser/extensions/api/system_indicator/system_indicator_manager_factory.h" +#include "base/memory/singleton.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/profiles/profile.h" #include "components/keyed_service/content/browser_context_dependency_manager.h" +#include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "extensions/browser/extension_icon_image.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h" @@ -81,7 +82,6 @@ UnloadedExtensionReason reason) { page_actions_.erase(extension->id()); browser_actions_.erase(extension->id()); - system_indicators_.erase(extension->id()); } namespace { @@ -142,21 +142,6 @@ profile_); } -ExtensionAction* ExtensionActionManager::GetSystemIndicator( - const Extension& extension) const { - // If it does not already exist, create the SystemIndicatorManager for the - // given profile. This could return NULL if the system indicator area is - // unavailable on the current system. If so, return NULL to signal that - // the system indicator area is unusable. - if (!SystemIndicatorManagerFactory::GetForProfile(profile_)) - return nullptr; - - return GetOrCreateOrNull(&system_indicators_, extension, - ActionInfo::TYPE_SYSTEM_INDICATOR, - ActionInfo::GetSystemIndicatorInfo(&extension), - profile_); -} - ExtensionAction* ExtensionActionManager::GetExtensionAction( const Extension& extension) const { ExtensionAction* action = GetBrowserAction(extension);
diff --git a/chrome/browser/extensions/extension_action_manager.h b/chrome/browser/extensions/extension_action_manager.h index 90096bc..ddc0105 100644 --- a/chrome/browser/extensions/extension_action_manager.h +++ b/chrome/browser/extensions/extension_action_manager.h
@@ -40,13 +40,10 @@ // unloaded. ExtensionAction* GetPageAction(const Extension& extension) const; ExtensionAction* GetBrowserAction(const Extension& extension) const; - ExtensionAction* GetSystemIndicator(const Extension& extension) const; // Returns either the PageAction or BrowserAction for |extension|, or NULL if // none exists. Since an extension can only declare one of Browser|PageAction, // this is okay to use anywhere you need a generic "ExtensionAction". - // Since SystemIndicators are used differently and don't follow this - // rule of mutual exclusion, they are not checked or returned. ExtensionAction* GetExtensionAction(const Extension& extension) const; private: @@ -69,7 +66,6 @@ std::map<std::string, std::unique_ptr<ExtensionAction>>; mutable ExtIdToActionMap page_actions_; mutable ExtIdToActionMap browser_actions_; - mutable ExtIdToActionMap system_indicators_; }; } // namespace extensions
diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc index 7edaeb46..3b9f478f 100644 --- a/chrome/browser/extensions/installed_loader.cc +++ b/chrome/browser/extensions/installed_loader.cc
@@ -24,6 +24,7 @@ #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/chrome_manifest_url_handlers.h" +#include "chrome/common/extensions/manifest_handlers/settings_overrides_handler.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_service.h" #include "content/public/common/url_constants.h" @@ -353,6 +354,9 @@ int disabled_for_permissions_count = 0; int non_webstore_ntp_override_count = 0; int ntp_override_count = 0; + int homepage_override_count = 0; + int search_engine_override_count = 0; + int startup_pages_override_count = 0; int incognito_allowed_count = 0; int incognito_not_allowed_count = 0; int file_access_allowed_count = 0; @@ -437,6 +441,17 @@ } } + // Histogram for extensions with settings overrides. + const SettingsOverrides* settings = SettingsOverrides::Get(extension); + if (settings) { + if (settings->search_engine) + ++search_engine_override_count; + if (!settings->startup_pages.empty()) + ++startup_pages_override_count; + if (settings->homepage) + ++homepage_override_count; + } + // Don't count unpacked extensions anymore, either. if (Manifest::IsUnpackedLocation(location)) continue; @@ -625,57 +640,63 @@ } } - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadApp", - app_user_count + app_external_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadAppUser", app_user_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadAppExternal", app_external_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadHostedApp", hosted_app_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadPackagedApp", - legacy_packaged_app_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadPlatformApp", platform_app_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadExtension", - extension_user_count + extension_external_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadExtensionUser", - extension_user_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadExtensionExternal", - extension_external_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadUserScript", user_script_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadTheme", theme_count); + base::UmaHistogramCounts100("Extensions.LoadApp", + app_user_count + app_external_count); + base::UmaHistogramCounts100("Extensions.LoadAppUser", app_user_count); + base::UmaHistogramCounts100("Extensions.LoadAppExternal", app_external_count); + base::UmaHistogramCounts100("Extensions.LoadHostedApp", hosted_app_count); + base::UmaHistogramCounts100("Extensions.LoadPackagedApp", + legacy_packaged_app_count); + base::UmaHistogramCounts100("Extensions.LoadPlatformApp", platform_app_count); + base::UmaHistogramCounts100("Extensions.LoadExtension", + extension_user_count + extension_external_count); + base::UmaHistogramCounts100("Extensions.LoadExtensionUser", + extension_user_count); + base::UmaHistogramCounts100("Extensions.LoadExtensionExternal", + extension_external_count); + base::UmaHistogramCounts100("Extensions.LoadUserScript", user_script_count); + base::UmaHistogramCounts100("Extensions.LoadTheme", theme_count); // Histogram name different for legacy reasons. - UMA_HISTOGRAM_COUNTS_100("PageActionController.ExtensionsWithPageActions", - page_action_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadBrowserAction", - browser_action_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadNoExtensionAction", - no_action_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.DisabledForPermissions", - disabled_for_permissions_count); + base::UmaHistogramCounts100("PageActionController.ExtensionsWithPageActions", + page_action_count); + base::UmaHistogramCounts100("Extensions.LoadBrowserAction", + browser_action_count); + base::UmaHistogramCounts100("Extensions.LoadNoExtensionAction", + no_action_count); + base::UmaHistogramCounts100("Extensions.DisabledForPermissions", + disabled_for_permissions_count); // TODO(kelvinjiang): Remove this histogram if it's not used anymore. - UMA_HISTOGRAM_COUNTS_100("Extensions.NonWebStoreNewTabPageOverrides", - non_webstore_ntp_override_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.NewTabPageOverrides", - ntp_override_count); + base::UmaHistogramCounts100("Extensions.NonWebStoreNewTabPageOverrides", + non_webstore_ntp_override_count); + base::UmaHistogramCounts100("Extensions.NewTabPageOverrides", + ntp_override_count); + base::UmaHistogramCounts100("Extensions.SearchEngineOverrides", + search_engine_override_count); + base::UmaHistogramCounts100("Extensions.StartupPagesOverrides", + startup_pages_override_count); + base::UmaHistogramCounts100("Extensions.HomepageOverrides", + homepage_override_count); if (incognito_allowed_count + incognito_not_allowed_count > 0) { - UMA_HISTOGRAM_COUNTS_100("Extensions.IncognitoAllowed", - incognito_allowed_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.IncognitoNotAllowed", - incognito_not_allowed_count); + base::UmaHistogramCounts100("Extensions.IncognitoAllowed", + incognito_allowed_count); + base::UmaHistogramCounts100("Extensions.IncognitoNotAllowed", + incognito_not_allowed_count); } if (file_access_allowed_count + file_access_not_allowed_count > 0) { - UMA_HISTOGRAM_COUNTS_100("Extensions.FileAccessAllowed", - file_access_allowed_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.FileAccessNotAllowed", - file_access_not_allowed_count); + base::UmaHistogramCounts100("Extensions.FileAccessAllowed", + file_access_allowed_count); + base::UmaHistogramCounts100("Extensions.FileAccessNotAllowed", + file_access_not_allowed_count); } - UMA_HISTOGRAM_COUNTS_100("Extensions.CorruptExtensionTotalDisables", - extension_prefs_->GetCorruptedDisableCount()); - UMA_HISTOGRAM_COUNTS_100("Extensions.EventlessEventPages", - eventless_event_pages_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.LoadOffStoreItems", - off_store_item_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.WebRequestBlockingCount", - web_request_blocking_count); - UMA_HISTOGRAM_COUNTS_100("Extensions.WebRequestCount", web_request_count); + base::UmaHistogramCounts100("Extensions.CorruptExtensionTotalDisables", + extension_prefs_->GetCorruptedDisableCount()); + base::UmaHistogramCounts100("Extensions.EventlessEventPages", + eventless_event_pages_count); + base::UmaHistogramCounts100("Extensions.LoadOffStoreItems", + off_store_item_count); + base::UmaHistogramCounts100("Extensions.WebRequestBlockingCount", + web_request_blocking_count); + base::UmaHistogramCounts100("Extensions.WebRequestCount", web_request_count); } int InstalledLoader::GetCreationFlags(const ExtensionInfo* info) {
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index c19ce9b..7a2739ae 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -235,6 +235,11 @@ "expiry_milestone": 74 }, { + "name": "autofill-prune-suggestions", + "owners": ["ftirelo", "tmartino"], + "expiry_milestone": 78 + }, + { "name": "autofill-no-local-save-on-unmask-success", "owners": [ "jsaul@google.com" ], // Currently unclear if this is launching independently with M75 or
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index e935e0f..badad4b 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -171,6 +171,10 @@ const char kAutofillProfileServerValidationDescription[] = "Allows autofill to use server side validation"; +const char kAutofillPruneSuggestionsName[] = "Autofill Prune Suggestions"; +const char kAutofillPruneSuggestionsDescription[] = + "Further limits the number of suggestions in the Autofill dropdown."; + const char kAutofillRejectCompanyBirthyearName[] = "Autofill Rejects Invalid Company Names"; const char kAutofillRejectCompanyBirthyearDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 8450a5b7..6d9a075 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -126,6 +126,9 @@ extern const char kAutofillRejectCompanyBirthyearName[]; extern const char kAutofillRejectCompanyBirthyearDescription[]; +extern const char kAutofillPruneSuggestionsName[]; +extern const char kAutofillPruneSuggestionsDescription[]; + extern const char kAutofillRestrictUnownedFieldsToFormlessCheckoutName[]; extern const char kAutofillRestrictUnownedFieldsToFormlessCheckoutDescription[];
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc index bf86504..8322c7d 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_manager.cc +++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.cc
@@ -13,18 +13,7 @@ #include "chrome/browser/media/router/data_decoder_util.h" #include "chrome/browser/media/router/providers/cast/cast_activity_record.h" #include "chrome/browser/media/router/providers/cast/cast_session_client.h" -#include "chrome/browser/media/router/providers/cast/cast_session_tracker.h" -#include "chrome/common/media_router/discovery/media_sink_internal.h" -#include "chrome/common/media_router/discovery/media_sink_service_base.h" -#include "chrome/common/media_router/media_route.h" #include "chrome/common/media_router/media_source_helper.h" -#include "chrome/common/media_router/mojo/media_router.mojom.h" -#include "chrome/common/media_router/providers/cast/cast_media_source.h" -#include "chrome/common/media_router/route_request_result.h" -#include "components/cast_channel/cast_message_handler.h" -#include "components/cast_channel/cast_message_util.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "third_party/blink/public/mojom/presentation/presentation.mojom.h" #include "url/origin.h" using blink::mojom::PresentationConnectionCloseReason; @@ -116,7 +105,8 @@ existing_route_id, base::BindOnce( &CastActivityManager::LaunchSessionAfterTerminatingExisting, - GetWeakPtr(), existing_route_id, std::move(params))); + weak_ptr_factory_.GetWeakPtr(), existing_route_id, + std::move(params))); } } @@ -144,7 +134,8 @@ message_handler_->LaunchSession( sink.cast_data().cast_channel_id, app_id, launch_timeout, base::BindOnce(&CastActivityManager::HandleLaunchSessionResponse, - GetWeakPtr(), route_id, sink, cast_source)); + weak_ptr_factory_.GetWeakPtr(), route_id, sink, + cast_source)); mojom::RoutePresentationConnectionPtr presentation_connection; const std::string& client_id = cast_source.client_id(); @@ -499,6 +490,14 @@ } } +cast_channel::ResultCallback CastActivityManager::MakeResultCallbackForRoute( + const std::string& route_id, + mojom::MediaRouteProvider::TerminateRouteCallback callback) { + return base::BindOnce(&CastActivityManager::HandleStopSessionResponse, + weak_ptr_factory_.GetWeakPtr(), route_id, + std::move(callback)); +} + void CastActivityManager::AddNonLocalActivityRecord( const MediaSinkInternal& sink, const CastSession& session) { @@ -641,10 +640,6 @@ media_router_->OnIssue(info); } -base::WeakPtr<CastActivityManager> CastActivityManager::GetWeakPtr() { - return weak_ptr_factory_.GetWeakPtr(); -} - CastActivityManager::DoLaunchSessionParams::DoLaunchSessionParams( const MediaRoute& route, const CastMediaSource& cast_source,
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager.h b/chrome/browser/media/router/providers/cast/cast_activity_manager.h index a42b6ca..8e885b2 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_manager.h +++ b/chrome/browser/media/router/providers/cast/cast_activity_manager.h
@@ -10,7 +10,6 @@ #include <vector> #include "base/containers/flat_map.h" -#include "base/containers/flat_set.h" #include "base/macros.h" #include "base/memory/weak_ptr.h" #include "base/optional.h" @@ -20,11 +19,7 @@ #include "chrome/browser/media/router/providers/cast/cast_session_tracker.h" #include "chrome/common/media_router/mojo/media_router.mojom.h" #include "chrome/common/media_router/providers/cast/cast_media_source.h" -#include "chrome/common/media_router/route_request_result.h" -#include "components/cast_channel/cast_message_handler.h" -#include "components/cast_channel/cast_message_util.h" #include "mojo/public/cpp/bindings/binding.h" -#include "third_party/blink/public/mojom/presentation/presentation.mojom.h" #include "url/origin.h" namespace cast_channel { @@ -38,9 +33,19 @@ class DataDecoder; class MediaSinkServiceBase; +// Base class for CastActivityManager including only functionality needed by +// CastActivityRecord. +class CastActivityManagerBase { + public: + virtual cast_channel::ResultCallback MakeResultCallbackForRoute( + const std::string& route_id, + mojom::MediaRouteProvider::TerminateRouteCallback callback) = 0; +}; + // Handles launching and terminating Cast application on a Cast receiver, and // acts as the source of truth for Cast activities and MediaRoutes. -class CastActivityManager : public cast_channel::CastMessageHandler::Observer, +class CastActivityManager : public CastActivityManagerBase, + public cast_channel::CastMessageHandler::Observer, public CastSessionTracker::Observer { public: // |media_sink_service|: Provides Cast MediaSinks. @@ -103,9 +108,11 @@ const base::Value& media_status, base::Optional<int> request_id) override; - private: - friend class CastActivityRecord; + cast_channel::ResultCallback MakeResultCallbackForRoute( + const std::string& route_id, + mojom::MediaRouteProvider::TerminateRouteCallback callback) override; + private: using ActivityMap = base::flat_map<MediaRoute::Id, std::unique_ptr<CastActivityRecord>>; @@ -199,8 +206,6 @@ void SendFailedToCastIssue(const MediaSink::Id& sink_id, const MediaRoute::Id& route_id); - base::WeakPtr<CastActivityManager> GetWeakPtr(); - // These methods return |activities_.end()| when nothing is found. ActivityMap::iterator FindActivityByChannelId(int channel_id); ActivityMap::iterator FindActivityBySink(const MediaSinkInternal& sink);
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_manager_unittest.cc b/chrome/browser/media/router/providers/cast/cast_activity_manager_unittest.cc index 688bf31..a9810dd 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_manager_unittest.cc +++ b/chrome/browser/media/router/providers/cast/cast_activity_manager_unittest.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/media/router/providers/cast/cast_activity_manager.h" +#include <memory> #include <tuple> #include <utility> @@ -12,16 +13,13 @@ #include "base/task/post_task.h" #include "base/test/values_test_util.h" #include "chrome/browser/media/router/data_decoder_util.h" -#include "chrome/browser/media/router/providers/common/buffered_message_sender.h" #include "chrome/browser/media/router/test/mock_mojo_media_router.h" #include "chrome/browser/media/router/test/test_helper.h" #include "chrome/common/media_router/test/test_helper.h" #include "components/cast_channel/cast_test_util.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/test/test_browser_thread_bundle.h" -#include "services/data_decoder/data_decoder_service.h" #include "services/data_decoder/public/cpp/testing_json_parser.h" -#include "services/data_decoder/public/mojom/constants.mojom.h" #include "services/service_manager/public/cpp/test/test_connector_factory.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -29,9 +27,7 @@ using base::test::IsJson; using base::test::ParseJsonDeprecated; using testing::_; -using testing::AnyNumber; using testing::IsEmpty; -using testing::Not; using testing::Return; using testing::WithArg; @@ -116,9 +112,7 @@ : public testing::TestWithParam<std::pair<bool, const char*>> { public: CastActivityManagerTest() - : data_decoder_service_(connector_factory_.RegisterInstance( - data_decoder::mojom::kServiceName)), - socket_service_(base::CreateSingleThreadTaskRunnerWithTraits( + : socket_service_(base::CreateSingleThreadTaskRunnerWithTraits( {content::BrowserThread::UI})), message_handler_(&socket_service_) { media_sink_service_.AddOrUpdateSink(sink_); @@ -131,11 +125,11 @@ router_binding_ = std::make_unique<mojo::Binding<mojom::MediaRouter>>( &mock_router_, mojo::MakeRequest(&router_ptr_)); - delete session_tracker_; - session_tracker_ = new CastSessionTracker( - &media_sink_service_, &message_handler_, socket_service_.task_runner()); + session_tracker_.reset( + new CastSessionTracker(&media_sink_service_, &message_handler_, + socket_service_.task_runner())); manager_ = std::make_unique<CastActivityManager>( - &media_sink_service_, session_tracker_, &message_handler_, + &media_sink_service_, session_tracker_.get(), &message_handler_, router_ptr_.get(), std::make_unique<DataDecoder>(connector_factory_.GetDefaultConnector()), "hash-token"); @@ -333,7 +327,6 @@ content::TestBrowserThreadBundle thread_bundle_; data_decoder::TestingJsonParser::ScopedFactoryOverride parser_override_; service_manager::TestConnectorFactory connector_factory_; - data_decoder::DataDecoderService data_decoder_service_; MockMojoMediaRouter mock_router_; mojom::MediaRouterPtr router_ptr_; @@ -352,9 +345,7 @@ MockCastAppDiscoveryService app_discovery_service_; std::unique_ptr<CastActivityManager> manager_; - // We mus use a raw pointer instead of a smart pointer because - // CastSessionTracker's constructor and destructor are private. - CastSessionTracker* session_tracker_ = nullptr; + std::unique_ptr<CastSessionTracker> session_tracker_; const url::Origin origin_ = url::Origin::Create(GURL(kOrigin)); };
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_record.cc b/chrome/browser/media/router/providers/cast/cast_activity_record.cc index 328b247..ef45f61 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_record.cc +++ b/chrome/browser/media/router/providers/cast/cast_activity_record.cc
@@ -25,9 +25,15 @@ const url::Origin& origin, int tab_id) { const std::string& client_id = source.client_id(); - auto client = std::make_unique<CastSessionClient>(client_id, origin, tab_id, - source.auto_join_policy(), - data_decoder_, this); + DCHECK(!base::ContainsKey(connected_clients_, client_id)); + std::unique_ptr<CastSessionClientBase> client; + if (client_factory_) { + client = client_factory_->MakeClient(client_id, origin, tab_id); + } else { + client = std::make_unique<CastSessionClient>(client_id, origin, tab_id, + source.auto_join_policy(), + data_decoder_, this); + } auto presentation_connection = client->Init(); connected_clients_.emplace(client_id, std::move(client)); @@ -63,12 +69,12 @@ cast_channel::Result CastActivityRecord::SendAppMessageToReceiver( const CastInternalMessage& cast_message) { - CastSessionClient* client = GetClient(cast_message.client_id); + CastSessionClientBase* client = GetClient(cast_message.client_id()); const CastSession* session = GetSession(); if (!session) { - if (client && cast_message.sequence_number) { + if (client && cast_message.sequence_number()) { client->SendErrorCodeToClient( - *cast_message.sequence_number, + *cast_message.sequence_number(), CastInternalMessage::ErrorCode::kSessionError, "Invalid session ID: " + session_id_.value_or("<missing>")); } @@ -78,9 +84,9 @@ const std::string& message_namespace = cast_message.app_message_namespace(); if (!base::ContainsKey(session->message_namespaces(), message_namespace)) { DLOG(ERROR) << "Disallowed message namespace: " << message_namespace; - if (client && cast_message.sequence_number) { + if (client && cast_message.sequence_number()) { client->SendErrorCodeToClient( - *cast_message.sequence_number, + *cast_message.sequence_number(), CastInternalMessage::ErrorCode::kInvalidParameter, "Invalid namespace: " + message_namespace); } @@ -90,7 +96,7 @@ GetCastChannelId(), cast_channel::CreateCastMessage( message_namespace, cast_message.app_message_body(), - cast_message.client_id, session->transport_id())); + cast_message.client_id(), session->transport_id())); } base::Optional<int> CastActivityRecord::SendMediaRequestToReceiver( @@ -100,7 +106,7 @@ return base::nullopt; return message_handler_->SendMediaRequest( GetCastChannelId(), cast_message.v2_message_body(), - cast_message.client_id, session->transport_id()); + cast_message.client_id(), session->transport_id()); } void CastActivityRecord::SendSetVolumeRequestToReceiver( @@ -108,7 +114,7 @@ cast_channel::ResultCallback callback) { message_handler_->SendSetVolumeRequest( GetCastChannelId(), cast_message.v2_message_body(), - cast_message.client_id, std::move(callback)); + cast_message.client_id(), std::move(callback)); } void CastActivityRecord::SendStopSessionMessageToReceiver( @@ -121,15 +127,14 @@ message_handler_->StopSession( sink->cast_data().cast_channel_id, *session_id_, client_id, - base::BindOnce(&CastActivityManager::HandleStopSessionResponse, - activity_manager_->GetWeakPtr(), route_.media_route_id(), - std::move(callback))); + activity_manager_->MakeResultCallbackForRoute(route_.media_route_id(), + std::move(callback))); } void CastActivityRecord::HandleLeaveSession(const std::string& client_id) { auto client_it = connected_clients_.find(client_id); CHECK(client_it != connected_clients_.end()); - CastSessionClient& client = *client_it->second; + auto& client = *client_it->second; std::vector<std::string> leaving_client_ids; for (const auto& pair : connected_clients_) { if (pair.second->MatchesAutoJoinPolicy(client.origin(), client.tab_id())) @@ -175,7 +180,7 @@ cast_channel::CastMessageHandler* message_handler, CastSessionTracker* session_tracker, DataDecoder* data_decoder, - CastActivityManager* owner) + CastActivityManagerBase* owner) : route_(route), app_id_(app_id), media_sink_service_(media_sink_service), @@ -206,4 +211,6 @@ return sink->cast_data().cast_channel_id; } +CastSessionClientFactory* CastActivityRecord::client_factory_ = nullptr; + } // namespace media_router
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_record.h b/chrome/browser/media/router/providers/cast/cast_activity_record.h index a06d359..0b0f7f9 100644 --- a/chrome/browser/media/router/providers/cast/cast_activity_record.h +++ b/chrome/browser/media/router/providers/cast/cast_activity_record.h
@@ -18,10 +18,12 @@ namespace media_router { -class CastActivityManager; -struct CastInternalMessage; +class CastActivityManagerBase; +class CastActivityRecord; +class CastSessionClientFactory; +class CastInternalMessage; class CastSession; -class CastSessionClient; +class CastSessionClientBase; class CastSessionTracker; class DataDecoder; class MediaSinkServiceBase; @@ -38,7 +40,7 @@ const MediaRoute& route() const { return route_; } const std::string& app_id() const { return app_id_; } - const base::flat_map<std::string, std::unique_ptr<CastSessionClient>>& + const base::flat_map<std::string, std::unique_ptr<CastSessionClientBase>>& connected_clients() const { return connected_clients_; } @@ -101,9 +103,14 @@ blink::mojom::PresentationConnectionCloseReason close_reason); void TerminatePresentationConnections(); + static void SetClientFactoryForTest(CastSessionClientFactory* factory) { + client_factory_ = factory; + } + private: friend class CastSessionClient; friend class CastActivityManager; + friend class CastActivityRecordTest; // Creates a new record owned by |owner|. CastActivityRecord(const MediaRoute& route, @@ -112,19 +119,21 @@ cast_channel::CastMessageHandler* message_handler, CastSessionTracker* session_tracker, DataDecoder* data_decoder, - CastActivityManager* owner); + CastActivityManagerBase* owner); CastSession* GetSession(); int GetCastChannelId(); - CastSessionClient* GetClient(const std::string& client_id) { + CastSessionClientBase* GetClient(const std::string& client_id) { auto it = connected_clients_.find(client_id); return it == connected_clients_.end() ? nullptr : it->second.get(); } + static CastSessionClientFactory* client_factory_; + MediaRoute route_; const std::string app_id_; - base::flat_map<std::string, std::unique_ptr<CastSessionClient>> + base::flat_map<std::string, std::unique_ptr<CastSessionClientBase>> connected_clients_; // Set by CastActivityManager after the session is launched successfully. @@ -137,7 +146,7 @@ cast_channel::CastMessageHandler* const message_handler_; CastSessionTracker* const session_tracker_; DataDecoder* const data_decoder_; - CastActivityManager* const activity_manager_; + CastActivityManagerBase* const activity_manager_; DISALLOW_COPY_AND_ASSIGN(CastActivityRecord); };
diff --git a/chrome/browser/media/router/providers/cast/cast_activity_record_unittest.cc b/chrome/browser/media/router/providers/cast/cast_activity_record_unittest.cc new file mode 100644 index 0000000..ee3efb9 --- /dev/null +++ b/chrome/browser/media/router/providers/cast/cast_activity_record_unittest.cc
@@ -0,0 +1,431 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/media/router/providers/cast/cast_activity_record.h" + +#include <memory> +#include <sstream> +#include <string> +#include <tuple> +#include <utility> +#include <vector> + +#include "base/bind.h" +#include "base/optional.h" +#include "base/run_loop.h" +#include "base/task/post_task.h" +#include "base/test/bind_test_util.h" +#include "base/test/mock_callback.h" +#include "base/test/values_test_util.h" +#include "base/values.h" +#include "chrome/browser/media/router/data_decoder_util.h" +#include "chrome/browser/media/router/providers/cast/cast_activity_manager.h" +#include "chrome/browser/media/router/providers/cast/cast_session_client.h" +#include "chrome/browser/media/router/test/test_helper.h" +#include "chrome/common/media_router/test/test_helper.h" +#include "components/cast_channel/cast_test_util.h" +#include "content/public/browser/browser_task_traits.h" +#include "content/public/test/test_browser_thread_bundle.h" +#include "services/service_manager/public/cpp/test/test_connector_factory.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +using base::test::IsJson; +using base::test::ParseJson; +using blink::mojom::PresentationConnectionCloseReason; +using blink::mojom::PresentationConnectionMessage; +using blink::mojom::PresentationConnectionMessagePtr; +using testing::_; +using testing::Pair; +using testing::Return; +using testing::UnorderedElementsAre; +using testing::WithArg; +using testing::WithArgs; + +namespace media_router { + +namespace { + +constexpr int kChannelId = 42; +constexpr char kAppId[] = "theAppId"; +constexpr char kRouteId[] = "theRouteId"; +constexpr char kSinkId[] = "cast:<id42>"; + +class MockCastSessionClient : public CastSessionClientBase { + public: + using CastSessionClientBase::CastSessionClientBase; + + MOCK_METHOD0(Init, mojom::RoutePresentationConnectionPtr()); + MOCK_METHOD1(SendMessageToClient, + void(blink::mojom::PresentationConnectionMessagePtr message)); + MOCK_METHOD2(SendMediaStatusToClient, + void(const base::Value& media_status, + base::Optional<int> request_id)); + MOCK_METHOD1( + CloseConnection, + void(blink::mojom::PresentationConnectionCloseReason close_reason)); + MOCK_METHOD0(TerminateConnection, void()); + MOCK_CONST_METHOD2(MatchesAutoJoinPolicy, + bool(url::Origin origin, int tab_id)); + MOCK_METHOD3(SendErrorCodeToClient, + void(int sequence_number, + CastInternalMessage::ErrorCode error_code, + base::Optional<std::string> description)); + MOCK_METHOD2(SendErrorToClient, void(int sequence_number, base::Value error)); + MOCK_METHOD1(OnMessage, + void(blink::mojom::PresentationConnectionMessagePtr message)); + MOCK_METHOD1(DidChangeState, + void(blink::mojom::PresentationConnectionState state)); + MOCK_METHOD1(DidClose, + void(blink::mojom::PresentationConnectionCloseReason reason)); +}; + +using NewClientCallback = base::RepeatingCallback<void(MockCastSessionClient&)>; + +class MockCastActivityManager : public CastActivityManagerBase { + public: + MOCK_METHOD2(MakeResultCallbackForRoute, + cast_channel::ResultCallback( + const std::string& route_id, + mojom::MediaRouteProvider::TerminateRouteCallback callback)); +}; + +} // namespace + +class CastActivityRecordTest : public testing::Test, CastSessionClientFactory { + public: + CastActivityRecordTest() {} + + ~CastActivityRecordTest() override = default; + + void SetUp() override { + media_sink_service_.AddOrUpdateSink(sink_); + ASSERT_EQ(kSinkId, sink_.id()); + + CastActivityRecord::SetClientFactoryForTest(this); + + session_tracker_.reset( + new CastSessionTracker(&media_sink_service_, &message_handler_, + socket_service_.task_runner())); + + MediaRoute route; + route.set_media_route_id(kRouteId); + route.set_media_sink_id(kSinkId); + record_.reset(new CastActivityRecord( + route, kAppId, &media_sink_service_, &message_handler_, + session_tracker_.get(), data_decoder_.get(), &manager_)); + + std::unique_ptr<CastSession> session = + CastSession::From(sink_, ParseJson(R"({ + "applications": [{ + "appId": "theAppId", + "displayName": "App display name", + "namespaces": [ + {"name": "urn:x-cast:com.google.cast.media"}, + {"name": "urn:x-cast:com.google.foo"} + ], + "sessionId": "theSessionId", + "statusText": "theStatusText", + "transportId": "theTransportId" + }] + })")); + ASSERT_EQ("theSessionId", session->session_id()); + session_ = session.get(); + session_tracker_->SetSessionForTest(kSinkId, std::move(session)); + } + + void TearDown() override { + RunUntilIdle(); + CastActivityRecord::SetClientFactoryForTest(nullptr); + } + + std::unique_ptr<CastSessionClientBase> MakeClient( + const std::string& client_id, + const url::Origin& origin, + int tab_id) override { + auto client = + std::make_unique<MockCastSessionClient>(client_id, origin, tab_id); + clients_.push_back(client.get()); + return std::move(client); + } + + protected: + void SetUpSession() { record_->SetOrUpdateSession(*session_, sink_, ""); } + + // Run any pending events and verify expectations associated with them. + void RunUntilIdle() { + thread_bundle_.RunUntilIdle(); + testing::Mock::VerifyAndClearExpectations(&socket_service_); + testing::Mock::VerifyAndClearExpectations(&message_handler_); + testing::Mock::VerifyAndClearExpectations(&manager_); + } + + MediaRoute& route() { return record_->route_; } + + MockCastSessionClient* AddMockClient(const std::string& client_id) { + CastMediaSource source("dummySourceId", std::vector<CastAppInfo>()); + source.set_client_id(client_id); + record_->AddClient(source, url::Origin(), tab_id_counter_++); + return clients_.back(); + } + + int tab_id_counter_ = 239; // Arbitrary number. + std::vector<MockCastSessionClient*> clients_; + + // TODO(crbug.com/954797): Factor out members also present in + // CastActivityManagerTest. + content::TestBrowserThreadBundle thread_bundle_; + MediaSinkInternal sink_ = CreateCastSink(kChannelId); + service_manager::TestConnectorFactory connector_factory_; + cast_channel::MockCastSocketService socket_service_{ + base::CreateSingleThreadTaskRunnerWithTraits( + {content::BrowserThread::UI})}; + cast_channel::MockCastMessageHandler message_handler_{&socket_service_}; + std::unique_ptr<DataDecoder> data_decoder_ = + std::make_unique<DataDecoder>(connector_factory_.GetDefaultConnector()); + TestMediaSinkService media_sink_service_; + std::unique_ptr<CastSessionTracker> session_tracker_; + MockCastActivityManager manager_; + CastSession* session_ = nullptr; + std::unique_ptr<CastActivityRecord> record_; +}; + +TEST_F(CastActivityRecordTest, SendAppMessageToReceiver) { + // TODO(crbug.com/954797): Test case where there is no session. + // TODO(crbug.com/954797): Test case where message has invalid namespace. + + EXPECT_CALL(message_handler_, SendAppMessage(kChannelId, _)) + .WillOnce(Return(cast_channel::Result::kFailed)) + .WillOnce(WithArg<1>([](const cast_channel::CastMessage& cast_message) { + EXPECT_EQ("theClientId", cast_message.source_id()); + EXPECT_EQ("theTransportId", cast_message.destination_id()); + EXPECT_EQ("urn:x-cast:com.google.foo", cast_message.namespace_()); + EXPECT_TRUE(cast_message.has_payload_utf8()); + EXPECT_THAT(cast_message.payload_utf8(), IsJson(R"({"foo": "bar"})")); + EXPECT_FALSE(cast_message.has_payload_binary()); + return cast_channel::Result::kOk; + })); + + std::unique_ptr<CastInternalMessage> message = + CastInternalMessage::From(ParseJson(R"({ + "type": "app_message", + "clientId": "theClientId", + "sequenceNumber": 999, + "message": { + "namespaceName": "urn:x-cast:com.google.foo", + "sessionId": "theSessionId", + "message": { "foo": "bar" }, + }, + })")); + + SetUpSession(); + EXPECT_EQ(cast_channel::Result::kFailed, + record_->SendAppMessageToReceiver(*message)); + EXPECT_EQ(cast_channel::Result::kOk, + record_->SendAppMessageToReceiver(*message)); +} + +TEST_F(CastActivityRecordTest, SendMediaRequestToReceiver) { + // TODO(crbug.com/954797): Test case where there is no session. + + const base::Optional<int> request_id = 1234; + + EXPECT_CALL( + message_handler_, + SendMediaRequest( + kChannelId, + IsJson( + R"({"sessionId": "theSessionId", "type": "theV2MessageType"})"), + "theClientId", "theTransportId")) + .WillOnce(Return(base::nullopt)) + .WillOnce(Return(request_id)); + + std::unique_ptr<CastInternalMessage> message = + CastInternalMessage::From(ParseJson(R"({ + "type": "v2_message", + "clientId": "theClientId", + "sequenceNumber": 999, + "message": { + "type": "theV2MessageType", + "sessionId": "theSessionId", + }, + })")); + + SetUpSession(); + EXPECT_FALSE(record_->SendMediaRequestToReceiver(*message)); + EXPECT_EQ(request_id, record_->SendMediaRequestToReceiver(*message)); +} + +TEST_F(CastActivityRecordTest, SendSetVolumeRequestToReceiver) { + // TODO(crbug.com/954797): Test case where no socket is found kChannelId. + + EXPECT_CALL( + message_handler_, + SendSetVolumeRequest( + kChannelId, + IsJson( + R"({"sessionId": "theSessionId", "type": "theV2MessageType"})"), + "theClientId", _)) + .WillOnce(WithArg<3>([](cast_channel::ResultCallback callback) { + std::move(callback).Run(cast_channel::Result::kOk); + return cast_channel::Result::kOk; + })); + + base::MockCallback<cast_channel::ResultCallback> callback; + EXPECT_CALL(callback, Run(cast_channel::Result::kOk)); + + std::unique_ptr<CastInternalMessage> message = + CastInternalMessage::From(ParseJson(R"({ + "type": "v2_message", + "clientId": "theClientId", + "sequenceNumber": 999, + "message": { + "type": "theV2MessageType", + "sessionId": "theSessionId", + }, + })")); + record_->SendSetVolumeRequestToReceiver(*message, callback.Get()); +} + +TEST_F(CastActivityRecordTest, SendStopSessionMessageToReceiver) { + const base::Optional<std::string> client_id("theClientId"); + + EXPECT_CALL(message_handler_, + StopSession(kChannelId, "theSessionId", client_id, _)) + .WillOnce(WithArg<3>([](cast_channel::ResultCallback callback) { + std::move(callback).Run(cast_channel::Result::kFailed); + })); + + EXPECT_CALL(manager_, MakeResultCallbackForRoute(kRouteId, _)) + .WillOnce(WithArg<1>( + [](mojom::MediaRouteProvider::TerminateRouteCallback callback) { + return base::BindOnce( + [](mojom::MediaRouteProvider::TerminateRouteCallback callback, + cast_channel::Result result) { + EXPECT_EQ(cast_channel::Result::kFailed, result); + std::move(callback).Run( + base::Optional<std::string>("theErrorText"), + RouteRequestResult::INCOGNITO_MISMATCH); + }, + std::move(callback)); + })); + + base::MockCallback<mojom::MediaRouteProvider::TerminateRouteCallback> + callback; + EXPECT_CALL(callback, Run(base::Optional<std::string>("theErrorText"), + RouteRequestResult::INCOGNITO_MISMATCH)); + + SetUpSession(); + record_->SendStopSessionMessageToReceiver(client_id, callback.Get()); +} + +TEST_F(CastActivityRecordTest, HandleLeaveSession) { + SetUpSession(); + AddMockClient("theClientId"); + AddMockClient("leaving"); + AddMockClient("keeping"); + for (auto* client : clients_) { + const bool is_leaving = client->client_id() == "leaving"; + EXPECT_CALL(*client, + CloseConnection(PresentationConnectionCloseReason::CLOSED)) + .Times(is_leaving ? 1 : 0); + EXPECT_CALL(*client, MatchesAutoJoinPolicy) + .WillRepeatedly(Return(is_leaving)); + } + record_->HandleLeaveSession("theClientId"); + EXPECT_THAT(record_->connected_clients(), + UnorderedElementsAre(Pair("theClientId", _), Pair("keeping", _))); +} + +TEST_F(CastActivityRecordTest, SendMessageToClient) { + SetUpSession(); + + // An invalid client ID is ignored. + record_->SendMessageToClient("theClientId", nullptr); + + PresentationConnectionMessagePtr message = + PresentationConnectionMessage::NewMessage("\"theMessage\""); + auto* message_ptr = message.get(); + auto* client = AddMockClient("theClientId"); + EXPECT_CALL(*client, SendMessageToClient).WillOnce([=](auto arg) { + EXPECT_EQ(message_ptr, arg.get()); + }); + record_->SendMessageToClient("theClientId", std::move(message)); +} + +TEST_F(CastActivityRecordTest, AddRemoveClient) { + // TODO(crbug.com/954797): Check value returned by AddClient(). + + // Adding clients works as expected. + ASSERT_TRUE(record_->connected_clients().empty()); + ASSERT_FALSE(route().is_local()); + AddMockClient("theClientId1"); + // Check that adding a client causes the route to become local. + EXPECT_TRUE(route().is_local()); + EXPECT_THAT(record_->connected_clients(), + UnorderedElementsAre(Pair("theClientId1", _))); + AddMockClient("theClientId2"); + EXPECT_TRUE(route().is_local()); + EXPECT_THAT( + record_->connected_clients(), + UnorderedElementsAre(Pair("theClientId1", _), Pair("theClientId2", _))); + + // Removing a non-existant client is a no-op. + record_->RemoveClient("noSuchClient"); + EXPECT_THAT( + record_->connected_clients(), + UnorderedElementsAre(Pair("theClientId1", _), Pair("theClientId2", _))); + + // Removing clients works as expected. + record_->RemoveClient("theClientId1"); + EXPECT_THAT(record_->connected_clients(), + UnorderedElementsAre(Pair("theClientId2", _))); + record_->RemoveClient("theClientId2"); + EXPECT_TRUE(record_->connected_clients().empty()); +} + +TEST_F(CastActivityRecordTest, SetOrUpdateSession) { + AddMockClient("theClientId1"); + AddMockClient("theClientId2"); + + ASSERT_EQ(base::nullopt, record_->session_id()); + route().set_description(""); + for (auto* client : clients_) { + EXPECT_CALL(*client, SendMessageToClient).Times(0); + } + record_->SetOrUpdateSession(*session_, sink_, ""); + EXPECT_EQ("theStatusText", route().description()); + EXPECT_EQ("theSessionId", record_->session_id()); + + route().set_description(""); + for (auto* client : clients_) { + // TODO(jrw): Check argument of SendMessageToClient. + EXPECT_CALL(*client, SendMessageToClient).Times(1); + } + record_->SetOrUpdateSession(*session_, sink_, "theHashToken"); + EXPECT_EQ("theStatusText", route().description()); + EXPECT_EQ("theSessionId", record_->session_id()); +} + +TEST_F(CastActivityRecordTest, ClosePresentationConnections) { + constexpr auto reason = PresentationConnectionCloseReason::CONNECTION_ERROR; + + AddMockClient("theClientId1"); + AddMockClient("theClientId2"); + for (auto* client : clients_) { + EXPECT_CALL(*client, CloseConnection(reason)); + } + record_->ClosePresentationConnections(reason); +} + +TEST_F(CastActivityRecordTest, TerminatePresentationConnections) { + AddMockClient("theClientId1"); + AddMockClient("theClientId2"); + for (auto* client : clients_) { + EXPECT_CALL(*client, TerminateConnection()); + } + record_->TerminatePresentationConnections(); +} + +} // namespace media_router
diff --git a/chrome/browser/media/router/providers/cast/cast_internal_message_util.cc b/chrome/browser/media/router/providers/cast/cast_internal_message_util.cc index d0c9e2fa..4af4556 100644 --- a/chrome/browser/media/router/providers/cast/cast_internal_message_util.cc +++ b/chrome/browser/media/router/providers/cast/cast_internal_message_util.cc
@@ -325,9 +325,9 @@ const std::string& session_id, const std::string& namespace_or_v2_type, base::Value message_body) - : type(type), - client_id(client_id), - sequence_number(sequence_number), + : type_(type), + client_id_(client_id), + sequence_number_(sequence_number), session_id_(session_id), namespace_or_v2_type_(namespace_or_v2_type), message_body_(std::move(message_body)) {}
diff --git a/chrome/browser/media/router/providers/cast/cast_internal_message_util.h b/chrome/browser/media/router/providers/cast/cast_internal_message_util.h index 73335df..9af4589 100644 --- a/chrome/browser/media/router/providers/cast/cast_internal_message_util.h +++ b/chrome/browser/media/router/providers/cast/cast_internal_message_util.h
@@ -20,7 +20,8 @@ // Represents a message sent or received by the Cast SDK via a // PresentationConnection. -struct CastInternalMessage { +class CastInternalMessage { + public: // TODO(crbug.com/809249): Add other types of messages. enum class Type { kClientConnect, // Initial message sent by SDK client to connect to MRP. @@ -61,12 +62,12 @@ ~CastInternalMessage(); - const Type type; - const std::string client_id; - const base::Optional<int> sequence_number; + Type type() const { return type_; } + const std::string& client_id() const { return client_id_; } + base::Optional<int> sequence_number() const { return sequence_number_; } bool has_session_id() const { - return type == Type::kAppMessage || type == Type::kV2Message; + return type_ == Type::kAppMessage || type_ == Type::kV2Message; } const std::string& session_id() const { @@ -75,22 +76,22 @@ } const std::string& app_message_namespace() const { - DCHECK(type == Type::kAppMessage); + DCHECK(type_ == Type::kAppMessage); return namespace_or_v2_type_; } const std::string& v2_message_type() const { - DCHECK(type == Type::kV2Message); + DCHECK(type_ == Type::kV2Message); return namespace_or_v2_type_; } const base::Value& app_message_body() const { - DCHECK(type == Type::kAppMessage); + DCHECK(type_ == Type::kAppMessage); return message_body_; } const base::Value& v2_message_body() const { - DCHECK(type == Type::kV2Message); + DCHECK(type_ == Type::kV2Message); return message_body_; } @@ -102,6 +103,10 @@ const std::string& namespace_or_v2_type_, base::Value message_body); + const Type type_; + const std::string client_id_; + const base::Optional<int> sequence_number_; + // Set if |type| is |kAppMessage| or |kV2Message|. const std::string session_id_; const std::string namespace_or_v2_type_;
diff --git a/chrome/browser/media/router/providers/cast/cast_internal_message_util_unittest.cc b/chrome/browser/media/router/providers/cast/cast_internal_message_util_unittest.cc index 3f1dffa..6e71e96 100644 --- a/chrome/browser/media/router/providers/cast/cast_internal_message_util_unittest.cc +++ b/chrome/browser/media/router/providers/cast/cast_internal_message_util_unittest.cc
@@ -75,9 +75,9 @@ auto message = CastInternalMessage::From(ParseJson(message_str)); ASSERT_TRUE(message); - EXPECT_EQ(CastInternalMessage::Type::kAppMessage, message->type); - EXPECT_EQ("12345", message->client_id); - EXPECT_EQ(999, message->sequence_number); + EXPECT_EQ(CastInternalMessage::Type::kAppMessage, message->type()); + EXPECT_EQ("12345", message->client_id()); + EXPECT_EQ(999, message->sequence_number()); EXPECT_EQ("urn:x-cast:com.google.foo", message->app_message_namespace()); EXPECT_EQ("sessionId", message->session_id()); base::Value message_body(base::Value::Type::DICTIONARY); @@ -103,9 +103,9 @@ auto message = CastInternalMessage::From(ParseJson(message_str)); ASSERT_TRUE(message); - EXPECT_EQ(CastInternalMessage::Type::kV2Message, message->type); - EXPECT_EQ("12345", message->client_id); - EXPECT_EQ(999, message->sequence_number); + EXPECT_EQ(CastInternalMessage::Type::kV2Message, message->type()); + EXPECT_EQ("12345", message->client_id()); + EXPECT_EQ(999, message->sequence_number()); EXPECT_EQ("sessionId", message->session_id()); EXPECT_EQ("v2_message_type", message->v2_message_type()); auto v2_body = ParseJson(R"({ @@ -129,9 +129,9 @@ auto message = CastInternalMessage::From(ParseJson(message_str)); ASSERT_TRUE(message); - EXPECT_EQ(CastInternalMessage::Type::kClientConnect, message->type); - EXPECT_EQ("12345", message->client_id); - EXPECT_FALSE(message->sequence_number); + EXPECT_EQ(CastInternalMessage::Type::kClientConnect, message->type()); + EXPECT_EQ("12345", message->client_id()); + EXPECT_FALSE(message->sequence_number()); EXPECT_DCHECK_DEATH(message->session_id()); EXPECT_DCHECK_DEATH(message->v2_message_type());
diff --git a/chrome/browser/media/router/providers/cast/cast_session_client.cc b/chrome/browser/media/router/providers/cast/cast_session_client.cc index fd7bea2..9d70a9a 100644 --- a/chrome/browser/media/router/providers/cast/cast_session_client.cc +++ b/chrome/browser/media/router/providers/cast/cast_session_client.cc
@@ -1,4 +1,4 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. +// Copyright 2019 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -7,7 +7,9 @@ #include "base/bind.h" #include "chrome/browser/media/router/data_decoder_util.h" #include "chrome/browser/media/router/providers/cast/cast_activity_record.h" +#include "chrome/browser/media/router/providers/cast/cast_internal_message_util.h" #include "components/cast_channel/enum_table.h" +#include "mojo/public/cpp/bindings/binding.h" using blink::mojom::PresentationConnectionCloseReason; using blink::mojom::PresentationConnectionMessagePtr; @@ -27,15 +29,20 @@ } // namespace +CastSessionClientBase::CastSessionClientBase(const std::string& client_id, + const url::Origin& origin, + int tab_id) + : client_id_(client_id), origin_(origin), tab_id_(tab_id) {} + +CastSessionClientBase::~CastSessionClientBase() = default; + CastSessionClient::CastSessionClient(const std::string& client_id, const url::Origin& origin, int tab_id, AutoJoinPolicy auto_join_policy, DataDecoder* data_decoder, CastActivityRecord* activity) - : client_id_(client_id), - origin_(origin), - tab_id_(tab_id), + : CastSessionClientBase(client_id, origin, tab_id), auto_join_policy_(auto_join_policy), data_decoder_(data_decoder), activity_(activity), @@ -76,7 +83,19 @@ } SendMessageToClient( - CreateV2Message(client_id_, media_status, sequence_number)); + CreateV2Message(client_id(), media_status, sequence_number)); +} + +bool CastSessionClient::MatchesAutoJoinPolicy(url::Origin other_origin, + int other_tab_id) const { + switch (auto_join_policy_) { + case AutoJoinPolicy::kPageScoped: + return false; + case AutoJoinPolicy::kTabAndOriginScoped: + return other_origin == origin() && other_tab_id == tab_id(); + case AutoJoinPolicy::kOriginScoped: + return other_origin == origin(); + } } void CastSessionClient::OnMessage(PresentationConnectionMessagePtr message) { @@ -96,17 +115,6 @@ // method once we make sure Blink calls this on navigation and on // PresentationConnection::close(). } -bool CastSessionClient::MatchesAutoJoinPolicy(url::Origin origin, - int tab_id) const { - switch (auto_join_policy_) { - case AutoJoinPolicy::kTabAndOriginScoped: - return origin == origin_ && tab_id == tab_id_; - case AutoJoinPolicy::kOriginScoped: - return origin == origin_; - default: - return false; - } -} void CastSessionClient::SendErrorCodeToClient( int sequence_number, @@ -137,9 +145,9 @@ return; } - if (cast_message->client_id != client_id_) { - DLOG(ERROR) << "Client ID mismatch: expected: " << client_id_ - << ", got: " << cast_message->client_id; + if (cast_message->client_id() != client_id()) { + DLOG(ERROR) << "Client ID mismatch: expected: " << client_id() + << ", got: " << cast_message->client_id(); return; } @@ -151,14 +159,14 @@ return; } - switch (cast_message->type) { + switch (cast_message->type()) { case CastInternalMessage::Type::kAppMessage: // Send an ACK message back to SDK client to indicate it is handled. if (activity_->SendAppMessageToReceiver(*cast_message) == cast_channel::Result::kOk) { - DCHECK(cast_message->sequence_number); + DCHECK(cast_message->sequence_number()); SendMessageToClient(CreateAppMessageAck( - cast_message->client_id, *cast_message->sequence_number)); + cast_message->client_id(), *cast_message->sequence_number())); } break; @@ -168,13 +176,14 @@ case CastInternalMessage::Type::kLeaveSession: SendMessageToClient(CreateLeaveSessionAckMessage( - client_id_, cast_message->sequence_number)); - activity_->HandleLeaveSession(client_id_); + client_id(), cast_message->sequence_number())); + activity_->HandleLeaveSession(client_id()); break; default: + // TODO(jrw): Log string value of type instead of int value. DLOG(ERROR) << "Unhandled message type: " - << static_cast<int>(cast_message->type); + << static_cast<int>(cast_message->type()); } } @@ -188,7 +197,7 @@ base::Optional<int> request_id = activity_->SendMediaRequestToReceiver(cast_message); if (request_id) { - DCHECK(cast_message.sequence_number); + DCHECK(cast_message.sequence_number()); if (pending_media_requests_.size() >= kMaxPendingMediaRequests) { // Delete old pending requests. Request IDs are generated sequentially, // so this should always delete the oldest requests. Deleting requests @@ -199,15 +208,15 @@ pending_media_requests_.size() / 2); } pending_media_requests_.emplace(*request_id, - *cast_message.sequence_number); + *cast_message.sequence_number()); } } else if (type == cast_channel::V2MessageType::kSetVolume) { DVLOG(2) << "Got volume command from client"; - DCHECK(cast_message.sequence_number); + DCHECK(cast_message.sequence_number()); activity_->SendSetVolumeRequestToReceiver( cast_message, base::BindOnce(&CastSessionClient::SendResultResponse, weak_ptr_factory_.GetWeakPtr(), - *cast_message.sequence_number)); + *cast_message.sequence_number())); } else if (type == cast_channel::V2MessageType::kStop) { // TODO(jrw): implement STOP_SESSION. DVLOG(2) << "Ignoring stop-session (" << type_str << ") message"; @@ -221,7 +230,7 @@ if (result == cast_channel::Result::kOk) { // Send an empty message to let the client know the request succeeded. SendMessageToClient( - CreateV2Message(client_id_, base::Value(), sequence_number)); + CreateV2Message(client_id(), base::Value(), sequence_number)); } else { // TODO(crbug.com/951089): Send correct error codes. The original // implementation isn't much help here because it sends incorrectly
diff --git a/chrome/browser/media/router/providers/cast/cast_session_client.h b/chrome/browser/media/router/providers/cast/cast_session_client.h index 7e21fa5..df116c2 100644 --- a/chrome/browser/media/router/providers/cast/cast_session_client.h +++ b/chrome/browser/media/router/providers/cast/cast_session_client.h
@@ -13,10 +13,12 @@ #include "base/memory/weak_ptr.h" #include "base/optional.h" #include "base/values.h" -#include "chrome/browser/media/router/providers/cast/cast_session_tracker.h" +#include "chrome/browser/media/router/providers/cast/cast_internal_message_util.h" #include "chrome/common/media_router/mojo/media_router.mojom.h" #include "chrome/common/media_router/providers/cast/cast_media_source.h" +#include "components/cast_channel/cast_message_handler.h" #include "mojo/public/cpp/bindings/binding.h" +#include "third_party/blink/public/mojom/presentation/presentation.mojom.h" #include "url/origin.h" namespace media_router { @@ -24,59 +26,43 @@ class CastActivityRecord; class DataDecoder; -// Represents a Cast SDK client connection to a Cast session. This class -// contains PresentationConnection Mojo pipes to send and receive messages -// from/to the corresponding SDK client hosted in a presentation controlling -// frame in Blink. -class CastSessionClient : public blink::mojom::PresentationConnection { +// TODO(jrw): Rename +// CastSessionClientBase -> CastSessionClient +// CastSessionClient -> CastSessionClientImpl +// and likewise for CastActivity{Manager,Record}. +class CastSessionClientBase : public blink::mojom::PresentationConnection { public: - CastSessionClient(const std::string& client_id, - const url::Origin& origin, - int tab_id, - AutoJoinPolicy auto_join_policy, - DataDecoder* data_decoder, - CastActivityRecord* activity); - ~CastSessionClient() override; + CastSessionClientBase(const std::string& client_id, + const url::Origin& origin, + int tab_id); + ~CastSessionClientBase() override; const std::string& client_id() const { return client_id_; } const base::Optional<std::string>& session_id() const { return session_id_; } const url::Origin& origin() const { return origin_; } - int tab_id() { return tab_id_; } + int tab_id() const { return tab_id_; } // Initializes the PresentationConnection Mojo message pipes and returns the // handles of the two pipes to be held by Blink. Also transitions the // connection state to CONNECTED. This method can only be called once, and // must be called before |SendMessageToClient()|. - mojom::RoutePresentationConnectionPtr Init(); + virtual mojom::RoutePresentationConnectionPtr Init() = 0; // Sends |message| to the Cast SDK client in Blink. - // - // TODO(jrw): Remove redundant "ToClient" in the name of this and other - // methods. - void SendMessageToClient( - blink::mojom::PresentationConnectionMessagePtr message); + virtual void SendMessageToClient( + blink::mojom::PresentationConnectionMessagePtr message) = 0; // Sends a media status message to the client. If |request_id| is given, it // is used to look up the sequence number of a previous request, which is // included in the outgoing message. - void SendMediaStatusToClient(const base::Value& media_status, - base::Optional<int> request_id); + virtual void SendMediaStatusToClient(const base::Value& media_status, + base::Optional<int> request_id) = 0; // Changes the PresentationConnection state to CLOSED/TERMINATED and resets // PresentationConnection message pipes. - void CloseConnection( - blink::mojom::PresentationConnectionCloseReason close_reason); - void TerminateConnection(); - - // blink::mojom::PresentationConnection implementation - void OnMessage( - blink::mojom::PresentationConnectionMessagePtr message) override; - // Blink does not initiate state change or close using PresentationConnection. - // Instead, |PresentationService::Close/TerminateConnection| is used. - void DidChangeState( - blink::mojom::PresentationConnectionState state) override {} - void DidClose( - blink::mojom::PresentationConnectionCloseReason reason) override; + virtual void CloseConnection( + blink::mojom::PresentationConnectionCloseReason close_reason) = 0; + virtual void TerminateConnection() = 0; // Tests whether the specified origin and tab ID match this session's origin // and tab ID to the extent required by this sesssion's auto-join policy. @@ -90,16 +76,76 @@ // Alternatively, it might make more sense to record at session creation time // whether a particular session was created by an auto-join request, in which // case I believe this method would no longer be needed. - bool MatchesAutoJoinPolicy(url::Origin origin, int tab_id) const; + virtual bool MatchesAutoJoinPolicy(url::Origin origin, int tab_id) const = 0; - void SendErrorCodeToClient(int sequence_number, - CastInternalMessage::ErrorCode error_code, - base::Optional<std::string> description); + virtual void SendErrorCodeToClient( + int sequence_number, + CastInternalMessage::ErrorCode error_code, + base::Optional<std::string> description) = 0; // NOTE: This is current only called from SendErrorCodeToClient, but based on // the old code this method based on, it seems likely it will have other // callers once error handling for the Cast MRP is more fleshed out. - void SendErrorToClient(int sequence_number, base::Value error); + virtual void SendErrorToClient(int sequence_number, base::Value error) = 0; + + private: + std::string client_id_; + base::Optional<std::string> session_id_; + + // The origin and tab ID parameters originally passed to the CreateRoute + // method of the MediaRouteProvider Mojo interface. + url::Origin origin_; + int tab_id_; +}; + +class CastSessionClientFactory { + public: + virtual std::unique_ptr<CastSessionClientBase> MakeClient( + const std::string& client_id, + const url::Origin& origin, + int tab_id) = 0; +}; + +// Represents a Cast SDK client connection to a Cast session. This class +// contains PresentationConnection Mojo pipes to send and receive messages +// from/to the corresponding SDK client hosted in a presentation controlling +// frame in Blink. +class CastSessionClient : public CastSessionClientBase { + public: + CastSessionClient(const std::string& client_id, + const url::Origin& origin, + int tab_id, + AutoJoinPolicy auto_join_policy, + DataDecoder* data_decoder, + CastActivityRecord* activity); + ~CastSessionClient() override; + + // CastSessionClientBase implementation + mojom::RoutePresentationConnectionPtr Init() override; + // TODO(jrw): Remove redundant "ToClient" in the name of this and other + // methods. + void SendMessageToClient( + blink::mojom::PresentationConnectionMessagePtr message) override; + void SendMediaStatusToClient(const base::Value& media_status, + base::Optional<int> request_id) override; + void CloseConnection( + blink::mojom::PresentationConnectionCloseReason close_reason) override; + void TerminateConnection() override; + bool MatchesAutoJoinPolicy(url::Origin origin, int tab_id) const override; + void SendErrorCodeToClient(int sequence_number, + CastInternalMessage::ErrorCode error_code, + base::Optional<std::string> description) override; + void SendErrorToClient(int sequence_number, base::Value error) override; + + // blink::mojom::PresentationConnection implementation + void OnMessage( + blink::mojom::PresentationConnectionMessagePtr message) override; + // Blink does not initiate state change or close using PresentationConnection. + // Instead, |PresentationService::Close/TerminateConnection| is used. + void DidChangeState( + blink::mojom::PresentationConnectionState state) override {} + void DidClose( + blink::mojom::PresentationConnectionCloseReason reason) override; private: void HandleParsedClientMessage(std::unique_ptr<base::Value> message); @@ -112,14 +158,6 @@ // succeeded or failed. void SendResultResponse(int sequence_number, cast_channel::Result result); - std::string client_id_; - base::Optional<std::string> session_id_; - - // The origin and tab ID parameters originally passed to the CreateRoute - // method of the MediaRouteProvider Mojo interface. - url::Origin origin_; - int tab_id_; - const AutoJoinPolicy auto_join_policy_; DataDecoder* const data_decoder_;
diff --git a/chrome/browser/media/router/providers/cast/cast_session_tracker.cc b/chrome/browser/media/router/providers/cast/cast_session_tracker.cc index 7b52e0e8..7b10975 100644 --- a/chrome/browser/media/router/providers/cast/cast_session_tracker.cc +++ b/chrome/browser/media/router/providers/cast/cast_session_tracker.cc
@@ -14,6 +14,8 @@ CastSessionTracker::Observer::~Observer() = default; +CastSessionTracker::~CastSessionTracker() = default; + // static CastSessionTracker* CastSessionTracker::GetInstance() { if (instance_for_test_) @@ -66,8 +68,6 @@ base::Unretained(this))); } -CastSessionTracker::~CastSessionTracker() = default; - // This method needs to be separate from the constructor because the constructor // needs to be called from the UI thread, but observers can only be added in an // IO thread.
diff --git a/chrome/browser/media/router/providers/cast/cast_session_tracker.h b/chrome/browser/media/router/providers/cast/cast_session_tracker.h index bfdeff1c..6b8a76e3 100644 --- a/chrome/browser/media/router/providers/cast/cast_session_tracker.h +++ b/chrome/browser/media/router/providers/cast/cast_session_tracker.h
@@ -39,6 +39,8 @@ base::Optional<int> request_id) = 0; }; + ~CastSessionTracker() override; + // Must be called on UI thread. // TODO(https://crbug.com/904016): The UI/IO thread split makes this class // confusing to use. If we can directly access CastMediaSinkServiceImpl @@ -56,6 +58,7 @@ private: friend class CastSessionTrackerTest; + friend class CastActivityRecordTest; friend class CastActivityManagerTest; friend class CastMediaRouteProviderTest; @@ -65,8 +68,6 @@ cast_channel::CastMessageHandler* message_handler, const scoped_refptr<base::SequencedTaskRunner>& task_runner); - ~CastSessionTracker() override; - void InitOnIoThread(); void HandleReceiverStatusMessage(const MediaSinkInternal& sink, const base::Value& message); @@ -101,6 +102,7 @@ SEQUENCE_CHECKER(sequence_checker_); DISALLOW_COPY_AND_ASSIGN(CastSessionTracker); + FRIEND_TEST_ALL_PREFIXES(CastActivityRecordTest, SendAppMessageToReceiver); FRIEND_TEST_ALL_PREFIXES(CastSessionTrackerTest, RemoveSession); FRIEND_TEST_ALL_PREFIXES(CastSessionTrackerTest, HandleMediaStatusMessageBasic);
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter.cc b/chrome/browser/metrics/process_memory_metrics_emitter.cc index a41b6dd..3071acb 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter.cc +++ b/chrome/browser/metrics/process_memory_metrics_emitter.cc
@@ -15,7 +15,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/metrics/tab_footprint_aggregator.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" #include "chrome/browser/performance_manager/performance_manager.h" @@ -780,7 +780,7 @@ void ProcessMemoryMetricsEmitter::GetProcessToPageInfoMap( GetProcessToPageInfoMapCallback callback, - performance_manager::Graph* graph) { + performance_manager::GraphImpl* graph) { std::vector<ProcessInfo> process_infos; std::vector<performance_manager::ProcessNodeImpl*> process_nodes = graph->GetAllProcessNodes();
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter.h b/chrome/browser/metrics/process_memory_metrics_emitter.h index b277247..6a22ed6 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter.h +++ b/chrome/browser/metrics/process_memory_metrics_emitter.h
@@ -22,7 +22,7 @@ } namespace performance_manager { -class Graph; +class GraphImpl; } // This class asynchronously fetches memory metrics for each process, and then @@ -86,7 +86,7 @@ using GetProcessToPageInfoMapCallback = base::OnceCallback<void(std::vector<ProcessInfo>)>; static void GetProcessToPageInfoMap(GetProcessToPageInfoMapCallback callback, - performance_manager::Graph* graph); + performance_manager::GraphImpl* graph); // The results of each request are cached. When both requests are finished, // the results are collated.
diff --git a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc index a06d0b11..4a0dc719 100644 --- a/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc +++ b/chrome/browser/page_load_metrics/observers/ad_metrics/ads_page_load_metrics_observer_browsertest.cc
@@ -39,6 +39,7 @@ #include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_source.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/gfx/geometry/size.h" #include "url/gurl.h" #include "url/url_constants.h" @@ -345,6 +346,9 @@ // Wait for each frames resource to load so that they will have non-zero // bytes. waiter->AddMinimumCompleteResourcesExpectation(6); + waiter->AddFrameSizeExpectation(gfx::Size(0, 0)); + waiter->AddFrameSizeExpectation(gfx::Size(10, 1000)); + waiter->AddFrameSizeExpectation(gfx::Size(100, 100)); waiter->Wait(); // Navigate away to force the histogram recording. @@ -376,6 +380,7 @@ // Wait for each frames resource to load so that they will have non-zero // bytes. waiter->AddMinimumCompleteResourcesExpectation(4); + waiter->AddFrameSizeExpectation(gfx::Size(4, 4)); waiter->Wait(); // Navigate away to force the histogram recording.
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc b/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc index 5a5cac4..9511b628 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc +++ b/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc
@@ -28,6 +28,13 @@ } } +void PageLoadMetricsTestWaiter::AddFrameSizeExpectation(const gfx::Size& size) { + // If we have already seen this size, don't add it to the expectations. + if (observed_frame_sizes_.find(size) != observed_frame_sizes_.end()) + return; + expected_frame_sizes_.insert(size); +} + void PageLoadMetricsTestWaiter::AddSubFrameExpectation(TimingField field) { CHECK_NE(field, TimingField::kLoadTimingInfo) << "LOAD_TIMING_INFO should only be used as a page-level expectation"; @@ -170,6 +177,15 @@ run_loop_->Quit(); } +void PageLoadMetricsTestWaiter::FrameSizeChanged( + content::RenderFrameHost* render_frame_host, + const gfx::Size& frame_size) { + observed_frame_sizes_.insert(frame_size); + expected_frame_sizes_.erase(frame_size); + if (ExpectationsSatisfied() && run_loop_) + run_loop_->Quit(); +} + bool PageLoadMetricsTestWaiter::IsPageLevelField(TimingField field) { switch (field) { case TimingField::kFirstPaint: @@ -253,7 +269,8 @@ return subframe_expected_fields_.Empty() && page_expected_fields_.Empty() && ResourceUseExpectationsSatisfied() && WebFeaturesExpectationsSatisfied() && - SubframeNavigationExpectationsSatisfied(); + SubframeNavigationExpectationsSatisfied() && + expected_frame_sizes_.empty(); } PageLoadMetricsTestWaiter::WaiterMetricsObserver::~WaiterMetricsObserver() {} @@ -302,4 +319,18 @@ waiter_->OnDidFinishSubFrameNavigation(navigation_handle, extra_info); } +void PageLoadMetricsTestWaiter::WaiterMetricsObserver::FrameSizeChanged( + content::RenderFrameHost* render_frame_host, + const gfx::Size& frame_size) { + if (waiter_) + waiter_->FrameSizeChanged(render_frame_host, frame_size); +} + +bool PageLoadMetricsTestWaiter::FrameSizeComparator::operator()( + const gfx::Size a, + const gfx::Size b) const { + return a.width() < b.width() || + (a.width() == b.width() && a.height() < b.height()); +} + } // namespace page_load_metrics
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.h b/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.h index 92fdb79..c1fc23d28 100644 --- a/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.h +++ b/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.h
@@ -12,6 +12,7 @@ #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" #include "chrome/browser/page_load_metrics/page_load_tracker.h" #include "content/public/browser/render_frame_host.h" +#include "ui/gfx/geometry/size.h" namespace page_load_metrics { @@ -42,6 +43,10 @@ // Add a subframe-level expectation. void AddSubFrameExpectation(TimingField field); + // Add a frame size expectation. Expects that at least one frame receives a + // size update of |size|. + void AddFrameSizeExpectation(const gfx::Size& size); + // Add a single WebFeature expectation. void AddWebFeatureExpectation(blink::mojom::WebFeature web_feature); @@ -114,6 +119,8 @@ void OnDidFinishSubFrameNavigation( content::NavigationHandle* navigation_handle, const page_load_metrics::PageLoadExtraInfo& extra_info) override; + void FrameSizeChanged(content::RenderFrameHost* render_frame_host, + const gfx::Size& frame_size) override; private: const base::WeakPtr<PageLoadMetricsTestWaiter> waiter_; @@ -150,6 +157,10 @@ int bitmask_ = 0; }; + struct FrameSizeComparator { + bool operator()(const gfx::Size a, const gfx::Size b) const; + }; + static bool IsPageLevelField(TimingField field); static TimingFieldBitSet GetMatchedBits( @@ -182,6 +193,9 @@ const mojom::PageLoadFeatures& features, const PageLoadExtraInfo& extra_info); + void FrameSizeChanged(content::RenderFrameHost* render_frame_host, + const gfx::Size& frame_size); + void OnDidFinishSubFrameNavigation( content::NavigationHandle* navigation_handle, const page_load_metrics::PageLoadExtraInfo& extra_info); @@ -209,6 +223,9 @@ observed_web_features_; size_t observed_subframe_navigations_ = 0; + std::set<gfx::Size, FrameSizeComparator> expected_frame_sizes_; + std::set<gfx::Size, FrameSizeComparator> observed_frame_sizes_; + int current_complete_resources_ = 0; int64_t current_network_bytes_ = 0;
diff --git a/chrome/browser/page_load_metrics/page_load_tracker.h b/chrome/browser/page_load_metrics/page_load_tracker.h index 26ef23e..877a398b 100644 --- a/chrome/browser/page_load_metrics/page_load_tracker.h +++ b/chrome/browser/page_load_metrics/page_load_tracker.h
@@ -21,6 +21,7 @@ #include "content/public/browser/web_contents_observer.h" #include "services/metrics/public/cpp/ukm_source.h" #include "ui/base/page_transition_types.h" +#include "ui/gfx/geometry/size.h" class GURL;
diff --git a/chrome/browser/performance_manager/decorators/frozen_frame_aggregator.cc b/chrome/browser/performance_manager/decorators/frozen_frame_aggregator.cc index 311ce43..b8853c2 100644 --- a/chrome/browser/performance_manager/decorators/frozen_frame_aggregator.cc +++ b/chrome/browser/performance_manager/decorators/frozen_frame_aggregator.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/performance_manager/decorators/frozen_frame_aggregator.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/node_attached_data_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h"
diff --git a/chrome/browser/performance_manager/decorators/page_almost_idle_decorator.cc b/chrome/browser/performance_manager/decorators/page_almost_idle_decorator.cc index 741c010..834a2f8 100644 --- a/chrome/browser/performance_manager/decorators/page_almost_idle_decorator.cc +++ b/chrome/browser/performance_manager/decorators/page_almost_idle_decorator.cc
@@ -6,6 +6,7 @@ #include <algorithm> +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/node_attached_data_impl.h" #include "chrome/browser/performance_manager/performance_manager_clock.h"
diff --git a/chrome/browser/performance_manager/graph/README.md b/chrome/browser/performance_manager/graph/README.md index aa58cf4..f897481 100644 --- a/chrome/browser/performance_manager/graph/README.md +++ b/chrome/browser/performance_manager/graph/README.md
@@ -8,9 +8,8 @@ # Node Lifetime -With the exception of the system node, which is a singleton, the Graph does not -own nodes. The user of the graph is responsible for maintaining node ownership. -Any node that has been added to the graph, must be removed from the graph -with Graph::RemoveNode before it's deleted. -All nodes must be removed from the graph before the graph is destroyed. - +With the exception of the system node, which is a singleton, the GraphImpl does +not own nodes. The user of the graph is responsible for maintaining node +ownership. Any node that has been added to the graph, must be removed from the +graph with GraphImpl::RemoveNode before it's deleted. All nodes must be removed +from the graph before the graph is destroyed.
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl.cc b/chrome/browser/performance_manager/graph/frame_node_impl.cc index 4eea18f..3db2aad 100644 --- a/chrome/browser/performance_manager/graph/frame_node_impl.cc +++ b/chrome/browser/performance_manager/graph/frame_node_impl.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/performance_manager/graph/frame_node_impl.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" #include "chrome/browser/performance_manager/observers/graph_observer.h" @@ -11,7 +12,7 @@ namespace performance_manager { -FrameNodeImpl::FrameNodeImpl(Graph* graph, +FrameNodeImpl::FrameNodeImpl(GraphImpl* graph, ProcessNodeImpl* process_node, PageNodeImpl* page_node, FrameNodeImpl* parent_frame_node,
diff --git a/chrome/browser/performance_manager/graph/frame_node_impl.h b/chrome/browser/performance_manager/graph/frame_node_impl.h index 5168449..ff3a573 100644 --- a/chrome/browser/performance_manager/graph/frame_node_impl.h +++ b/chrome/browser/performance_manager/graph/frame_node_impl.h
@@ -52,7 +52,7 @@ // Construct a frame node associated with a |process_node|, a |page_node| and // optionally with a |parent_frame_node|. For the main frame of |page_node| // the |parent_frame_node| parameter should be nullptr. - FrameNodeImpl(Graph* graph, + FrameNodeImpl(GraphImpl* graph, ProcessNodeImpl* process_node, PageNodeImpl* page_node, FrameNodeImpl* parent_frame_node,
diff --git a/chrome/browser/performance_manager/graph/graph.cc b/chrome/browser/performance_manager/graph/graph_impl.cc similarity index 80% rename from chrome/browser/performance_manager/graph/graph.cc rename to chrome/browser/performance_manager/graph/graph_impl.cc index 6f4207b..7bb9437 100644 --- a/chrome/browser/performance_manager/graph/graph.cc +++ b/chrome/browser/performance_manager/graph/graph_impl.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include <utility> @@ -22,11 +22,11 @@ namespace performance_manager { -Graph::Graph() { +GraphImpl::GraphImpl() { DETACH_FROM_SEQUENCE(sequence_checker_); } -Graph::~Graph() { +GraphImpl::~GraphImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // All observers should have been removed before the graph is deleted. @@ -43,14 +43,14 @@ DCHECK(nodes_.empty()); } -void Graph::RegisterObserver(GraphObserver* observer) { +void GraphImpl::RegisterObserver(GraphObserver* observer) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); observer->set_node_graph(this); observers_.push_back(observer); observer->OnRegistered(); } -void Graph::UnregisterObserver(GraphObserver* observer) { +void GraphImpl::UnregisterObserver(GraphObserver* observer) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); bool removed = false; for (auto it = observers_.begin(); it != observers_.end(); ++it) { @@ -64,7 +64,7 @@ DCHECK(removed); } -void Graph::OnNodeAdded(NodeBase* node) { +void GraphImpl::OnNodeAdded(NodeBase* node) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); for (auto* observer : observers_) { if (observer->ShouldObserve(node)) { @@ -74,16 +74,16 @@ } } -void Graph::OnBeforeNodeRemoved(NodeBase* node) { +void GraphImpl::OnBeforeNodeRemoved(NodeBase* node) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); node->LeaveGraph(); } -int64_t Graph::GetNextNodeSerializationId() { +int64_t GraphImpl::GetNextNodeSerializationId() { return ++current_node_serialization_id_; } -SystemNodeImpl* Graph::FindOrCreateSystemNode() { +SystemNodeImpl* GraphImpl::FindOrCreateSystemNode() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!system_node_) { // Create the singleton system node instance. Ownership is taken by the @@ -95,13 +95,13 @@ return system_node_.get(); } -bool Graph::NodeInGraph(const NodeBase* node) { +bool GraphImpl::NodeInGraph(const NodeBase* node) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); const auto& it = nodes_.find(const_cast<NodeBase*>(node)); return it != nodes_.end(); } -ProcessNodeImpl* Graph::GetProcessNodeByPid(base::ProcessId pid) { +ProcessNodeImpl* GraphImpl::GetProcessNodeByPid(base::ProcessId pid) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); auto it = processes_by_pid_.find(pid); if (it == processes_by_pid_.end()) @@ -110,20 +110,20 @@ return ProcessNodeImpl::FromNodeBase(it->second); } -std::vector<ProcessNodeImpl*> Graph::GetAllProcessNodes() { +std::vector<ProcessNodeImpl*> GraphImpl::GetAllProcessNodes() { return GetAllNodesOfType<ProcessNodeImpl>(); } -std::vector<FrameNodeImpl*> Graph::GetAllFrameNodes() { +std::vector<FrameNodeImpl*> GraphImpl::GetAllFrameNodes() { return GetAllNodesOfType<FrameNodeImpl>(); } -std::vector<PageNodeImpl*> Graph::GetAllPageNodes() { +std::vector<PageNodeImpl*> GraphImpl::GetAllPageNodes() { return GetAllNodesOfType<PageNodeImpl>(); } -size_t Graph::GetNodeAttachedDataCountForTesting(NodeBase* node, - const void* key) const { +size_t GraphImpl::GetNodeAttachedDataCountForTesting(NodeBase* node, + const void* key) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!node && !key) return node_attached_data_map_.size(); @@ -140,7 +140,7 @@ return count; } -void Graph::AddNewNode(NodeBase* new_node) { +void GraphImpl::AddNewNode(NodeBase* new_node) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); auto it = nodes_.insert(new_node); DCHECK(it.second); // Inserted successfully @@ -150,7 +150,7 @@ OnNodeAdded(new_node); } -void Graph::RemoveNode(NodeBase* node) { +void GraphImpl::RemoveNode(NodeBase* node) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); OnBeforeNodeRemoved(node); @@ -166,8 +166,8 @@ DCHECK_EQ(1u, erased); } -void Graph::BeforeProcessPidChange(ProcessNodeImpl* process, - base::ProcessId new_pid) { +void GraphImpl::BeforeProcessPidChange(ProcessNodeImpl* process, + base::ProcessId new_pid) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // On Windows, PIDs are aggressively reused, and because not all process // creation/death notifications are synchronized, it's possible for more than @@ -184,7 +184,7 @@ } template <typename NodeType> -std::vector<NodeType*> Graph::GetAllNodesOfType() { +std::vector<NodeType*> GraphImpl::GetAllNodesOfType() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); const auto type = NodeType::Type(); std::vector<NodeType*> ret;
diff --git a/chrome/browser/performance_manager/graph/graph.h b/chrome/browser/performance_manager/graph/graph_impl.h similarity index 92% rename from chrome/browser/performance_manager/graph/graph.h rename to chrome/browser/performance_manager/graph/graph_impl.h index 02b0d9b3..7717358 100644 --- a/chrome/browser/performance_manager/graph/graph.h +++ b/chrome/browser/performance_manager/graph/graph_impl.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 CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_H_ -#define CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_H_ +#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_IMPL_H_ +#define CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_IMPL_H_ #include <stdint.h> @@ -32,12 +32,12 @@ // Represents a graph of the nodes representing a single browser. Maintains a // set of nodes that can be retrieved in different ways, some indexed. Keeps // a list of observers that are notified of node addition and removal. -class Graph { +class GraphImpl { public: using NodeSet = std::unordered_set<NodeBase*>; - Graph(); - ~Graph(); + GraphImpl(); + ~GraphImpl(); void set_ukm_recorder(ukm::UkmRecorder* ukm_recorder) { ukm_recorder_ = ukm_recorder; @@ -111,9 +111,9 @@ int64_t current_node_serialization_id_ = 0u; SEQUENCE_CHECKER(sequence_checker_); - DISALLOW_COPY_AND_ASSIGN(Graph); + DISALLOW_COPY_AND_ASSIGN(GraphImpl); }; } // namespace performance_manager -#endif // CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_H_ +#endif // CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_GRAPH_IMPL_H_
diff --git a/chrome/browser/performance_manager/graph/graph_unittest.cc b/chrome/browser/performance_manager/graph/graph_impl_unittest.cc similarity index 91% rename from chrome/browser/performance_manager/graph/graph_unittest.cc rename to chrome/browser/performance_manager/graph/graph_impl_unittest.cc index 6781e58..39d7d1e 100644 --- a/chrome/browser/performance_manager/graph/graph_unittest.cc +++ b/chrome/browser/performance_manager/graph/graph_impl_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "base/process/process.h" #include "base/time/time.h" @@ -15,8 +15,8 @@ namespace performance_manager { -TEST(GraphTest, FindOrCreateSystemNode) { - Graph graph; +TEST(GraphImplTest, FindOrCreateSystemNode) { + GraphImpl graph; SystemNodeImpl* system_node = graph.FindOrCreateSystemNode(); @@ -24,8 +24,8 @@ EXPECT_EQ(system_node, graph.FindOrCreateSystemNode()); } -TEST(GraphTest, GetProcessNodeByPid) { - Graph graph; +TEST(GraphImplTest, GetProcessNodeByPid) { + GraphImpl graph; TestNodeWrapper<ProcessNodeImpl> process = TestNodeWrapper<ProcessNodeImpl>::Create(&graph); @@ -51,11 +51,11 @@ EXPECT_EQ(nullptr, graph.GetProcessNodeByPid(self.Pid())); } -TEST(GraphTest, PIDReuse) { +TEST(GraphImplTest, PIDReuse) { // This test emulates what happens on Windows under aggressive PID reuse, // where a process termination notification can be delayed until after the // PID has been reused for a new process. - Graph graph; + GraphImpl graph; static base::Process self = base::Process::Current(); @@ -81,8 +81,8 @@ EXPECT_EQ(process2.get(), graph.GetProcessNodeByPid(self.Pid())); } -TEST(GraphTest, GetAllCUsByType) { - Graph graph; +TEST(GraphImplTest, GetAllCUsByType) { + GraphImpl graph; MockMultiplePagesInSingleProcessGraph mock_graph(&graph); std::vector<ProcessNodeImpl*> processes = graph.GetAllProcessNodes(); @@ -100,8 +100,8 @@ EXPECT_NE(nullptr, pages[1]); } -TEST(GraphTest, SerializationId) { - Graph graph; +TEST(GraphImplTest, SerializationId) { + GraphImpl graph; EXPECT_EQ(0u, NodeBase::GetSerializationId(nullptr));
diff --git a/chrome/browser/performance_manager/graph/graph_test_harness.h b/chrome/browser/performance_manager/graph/graph_test_harness.h index 7cbd322..6a408d14 100644 --- a/chrome/browser/performance_manager/graph/graph_test_harness.h +++ b/chrome/browser/performance_manager/graph/graph_test_harness.h
@@ -12,7 +12,7 @@ #include "base/test/scoped_task_environment.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/node_base.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" @@ -27,7 +27,7 @@ struct Factory; template <typename... Args> - static TestNodeWrapper<NodeClass> Create(Graph* graph, Args&&... args); + static TestNodeWrapper<NodeClass> Create(GraphImpl* graph, Args&&... args); TestNodeWrapper() {} @@ -61,7 +61,7 @@ template <class NodeClass> struct TestNodeWrapper<NodeClass>::Factory { template <typename... Args> - static std::unique_ptr<NodeClass> Create(Graph* graph, Args&&... args) { + static std::unique_ptr<NodeClass> Create(GraphImpl* graph, Args&&... args) { return std::make_unique<NodeClass>(graph, std::forward<Args>(args)...); } }; @@ -71,7 +71,7 @@ template <> struct TestNodeWrapper<FrameNodeImpl>::Factory { static std::unique_ptr<FrameNodeImpl> Create( - Graph* graph, + GraphImpl* graph, ProcessNodeImpl* process_node, PageNodeImpl* page_node, FrameNodeImpl* parent_frame_node = nullptr, @@ -86,7 +86,7 @@ // static template <typename NodeClass> template <typename... Args> -TestNodeWrapper<NodeClass> TestNodeWrapper<NodeClass>::Create(Graph* graph, +TestNodeWrapper<NodeClass> TestNodeWrapper<NodeClass>::Create(GraphImpl* graph, Args&&... args) { // Dispatch to a helper so that we can use partial specialization. std::unique_ptr<NodeClass> node = @@ -101,7 +101,7 @@ template <> class TestNodeWrapper<SystemNodeImpl> { public: - static TestNodeWrapper<SystemNodeImpl> Create(Graph* graph) { + static TestNodeWrapper<SystemNodeImpl> Create(GraphImpl* graph) { return TestNodeWrapper<SystemNodeImpl>(graph->FindOrCreateSystemNode()); } @@ -140,11 +140,11 @@ protected: base::test::ScopedTaskEnvironment& task_env() { return task_env_; } - Graph* graph() { return &graph_; } + GraphImpl* graph() { return &graph_; } private: base::test::ScopedTaskEnvironment task_env_; - Graph graph_; + GraphImpl graph_; }; } // namespace performance_manager
diff --git a/chrome/browser/performance_manager/graph/mock_graphs.cc b/chrome/browser/performance_manager/graph/mock_graphs.cc index bf5a503..83a6a09 100644 --- a/chrome/browser/performance_manager/graph/mock_graphs.cc +++ b/chrome/browser/performance_manager/graph/mock_graphs.cc
@@ -16,7 +16,7 @@ namespace performance_manager { -TestProcessNodeImpl::TestProcessNodeImpl(Graph* graph) +TestProcessNodeImpl::TestProcessNodeImpl(GraphImpl* graph) : ProcessNodeImpl(graph) {} void TestProcessNodeImpl::SetProcessWithPid(base::ProcessId pid, @@ -26,7 +26,7 @@ } MockSinglePageInSingleProcessGraph::MockSinglePageInSingleProcessGraph( - Graph* graph) + GraphImpl* graph) : system(TestNodeWrapper<SystemNodeImpl>::Create(graph)), process(TestNodeWrapper<TestProcessNodeImpl>::Create(graph)), page(TestNodeWrapper<PageNodeImpl>::Create(graph, nullptr)), @@ -45,7 +45,7 @@ } MockMultiplePagesInSingleProcessGraph::MockMultiplePagesInSingleProcessGraph( - Graph* graph) + GraphImpl* graph) : MockSinglePageInSingleProcessGraph(graph), other_page(TestNodeWrapper<PageNodeImpl>::Create(graph, nullptr)), other_frame(TestNodeWrapper<FrameNodeImpl>::Create(graph, @@ -64,7 +64,7 @@ } MockSinglePageWithMultipleProcessesGraph:: - MockSinglePageWithMultipleProcessesGraph(Graph* graph) + MockSinglePageWithMultipleProcessesGraph(GraphImpl* graph) : MockSinglePageInSingleProcessGraph(graph), other_process(TestNodeWrapper<TestProcessNodeImpl>::Create(graph)), child_frame(TestNodeWrapper<FrameNodeImpl>::Create(graph, @@ -82,7 +82,7 @@ ~MockSinglePageWithMultipleProcessesGraph() = default; MockMultiplePagesWithMultipleProcessesGraph:: - MockMultiplePagesWithMultipleProcessesGraph(Graph* graph) + MockMultiplePagesWithMultipleProcessesGraph(GraphImpl* graph) : MockMultiplePagesInSingleProcessGraph(graph), other_process(TestNodeWrapper<TestProcessNodeImpl>::Create(graph)), child_frame(TestNodeWrapper<FrameNodeImpl>::Create(graph,
diff --git a/chrome/browser/performance_manager/graph/mock_graphs.h b/chrome/browser/performance_manager/graph/mock_graphs.h index 94d7a00a..5df6575 100644 --- a/chrome/browser/performance_manager/graph/mock_graphs.h +++ b/chrome/browser/performance_manager/graph/mock_graphs.h
@@ -10,7 +10,7 @@ namespace performance_manager { -class Graph; +class GraphImpl; class FrameNodeImpl; class PageNodeImpl; class SystemNodeImpl; @@ -19,7 +19,7 @@ // process' PID. class TestProcessNodeImpl : public ProcessNodeImpl { public: - explicit TestProcessNodeImpl(Graph* graph); + explicit TestProcessNodeImpl(GraphImpl* graph); void SetProcessWithPid(base::ProcessId pid, base::Process process, @@ -38,7 +38,7 @@ // Pr: process(pid:1) // Pg: page struct MockSinglePageInSingleProcessGraph { - explicit MockSinglePageInSingleProcessGraph(Graph* graph); + explicit MockSinglePageInSingleProcessGraph(GraphImpl* graph); ~MockSinglePageInSingleProcessGraph(); TestNodeWrapper<SystemNodeImpl> system; TestNodeWrapper<TestProcessNodeImpl> process; @@ -61,7 +61,7 @@ // Pr: process(pid:1) struct MockMultiplePagesInSingleProcessGraph : public MockSinglePageInSingleProcessGraph { - explicit MockMultiplePagesInSingleProcessGraph(Graph* graph); + explicit MockMultiplePagesInSingleProcessGraph(GraphImpl* graph); ~MockMultiplePagesInSingleProcessGraph(); TestNodeWrapper<PageNodeImpl> other_page; TestNodeWrapper<FrameNodeImpl> other_frame; @@ -85,7 +85,7 @@ // OPr: other_process(pid:2) struct MockSinglePageWithMultipleProcessesGraph : public MockSinglePageInSingleProcessGraph { - explicit MockSinglePageWithMultipleProcessesGraph(Graph* graph); + explicit MockSinglePageWithMultipleProcessesGraph(GraphImpl* graph); ~MockSinglePageWithMultipleProcessesGraph(); TestNodeWrapper<TestProcessNodeImpl> other_process; TestNodeWrapper<FrameNodeImpl> child_frame; @@ -111,7 +111,7 @@ // OPr: other_process(pid:2) struct MockMultiplePagesWithMultipleProcessesGraph : public MockMultiplePagesInSingleProcessGraph { - explicit MockMultiplePagesWithMultipleProcessesGraph(Graph* graph); + explicit MockMultiplePagesWithMultipleProcessesGraph(GraphImpl* graph); ~MockMultiplePagesWithMultipleProcessesGraph(); TestNodeWrapper<TestProcessNodeImpl> other_process; TestNodeWrapper<FrameNodeImpl> child_frame;
diff --git a/chrome/browser/performance_manager/graph/node_attached_data.cc b/chrome/browser/performance_manager/graph/node_attached_data.cc index 7f76d75c..6204af0 100644 --- a/chrome/browser/performance_manager/graph/node_attached_data.cc +++ b/chrome/browser/performance_manager/graph/node_attached_data.cc
@@ -7,7 +7,7 @@ #include <utility> #include "base/logging.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/node_base.h" namespace performance_manager { @@ -23,7 +23,7 @@ void NodeAttachedData::AttachInMap(const NodeBase* node, std::unique_ptr<NodeAttachedData> data) { CHECK(data->CanAttach(node->type())); - Graph::NodeAttachedDataKey data_key = std::make_pair(node, data->key()); + GraphImpl::NodeAttachedDataKey data_key = std::make_pair(node, data->key()); auto& map = node->graph()->node_attached_data_map_; DCHECK(!base::ContainsKey(map, data_key)); map[data_key] = std::move(data); @@ -32,7 +32,7 @@ // static NodeAttachedData* NodeAttachedData::GetFromMap(const NodeBase* node, const void* key) { - Graph::NodeAttachedDataKey data_key = std::make_pair(node, key); + GraphImpl::NodeAttachedDataKey data_key = std::make_pair(node, key); auto& map = node->graph()->node_attached_data_map_; auto it = map.find(data_key); if (it == map.end()) @@ -45,7 +45,7 @@ std::unique_ptr<NodeAttachedData> NodeAttachedData::DetachFromMap( const NodeBase* node, const void* key) { - Graph::NodeAttachedDataKey data_key = std::make_pair(node, key); + GraphImpl::NodeAttachedDataKey data_key = std::make_pair(node, key); auto& map = node->graph()->node_attached_data_map_; auto it = map.find(data_key);
diff --git a/chrome/browser/performance_manager/graph/node_attached_data.h b/chrome/browser/performance_manager/graph/node_attached_data.h index cc0eeb5..d577dbe 100644 --- a/chrome/browser/performance_manager/graph/node_attached_data.h +++ b/chrome/browser/performance_manager/graph/node_attached_data.h
@@ -9,7 +9,7 @@ #include "base/logging.h" #include "base/macros.h" -#include "chrome/browser/performance_manager/graph/node_type.h" +#include "chrome/browser/performance_manager/public/graph/node_type.h" namespace performance_manager {
diff --git a/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc b/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc index 91c6b4e..73bc6c2 100644 --- a/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc +++ b/chrome/browser/performance_manager/graph/node_attached_data_unittest.cc
@@ -8,7 +8,7 @@ #include "base/test/gtest_util.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/graph_test_harness.h" #include "chrome/browser/performance_manager/graph/mock_graphs.h" #include "chrome/browser/performance_manager/graph/node_attached_data_impl.h" @@ -29,7 +29,7 @@ // A dummy node type so that we can exercise node attached storage code paths. class DummyNode : public NodeBase { public: - explicit DummyNode(Graph* graph) + explicit DummyNode(GraphImpl* graph) : NodeBase(NodeTypeEnum::kInvalidType, graph) {} ~DummyNode() override = default;
diff --git a/chrome/browser/performance_manager/graph/node_base.cc b/chrome/browser/performance_manager/graph/node_base.cc index ecf7061..b932506 100644 --- a/chrome/browser/performance_manager/graph/node_base.cc +++ b/chrome/browser/performance_manager/graph/node_base.cc
@@ -6,12 +6,12 @@ #include <utility> -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/observers/graph_observer.h" namespace performance_manager { -NodeBase::NodeBase(NodeTypeEnum node_type, Graph* graph) +NodeBase::NodeBase(NodeTypeEnum node_type, GraphImpl* graph) : graph_(graph), type_(node_type) {} NodeBase::~NodeBase() {
diff --git a/chrome/browser/performance_manager/graph/node_base.h b/chrome/browser/performance_manager/graph/node_base.h index 6345d776..c639b42 100644 --- a/chrome/browser/performance_manager/graph/node_base.h +++ b/chrome/browser/performance_manager/graph/node_base.h
@@ -14,10 +14,9 @@ #include "base/macros.h" #include "base/observer_list.h" #include "base/sequence_checker.h" -#include "chrome/browser/performance_manager/graph/graph.h" -#include "chrome/browser/performance_manager/graph/node_type.h" #include "chrome/browser/performance_manager/graph/properties.h" #include "chrome/browser/performance_manager/observers/graph_observer.h" +#include "chrome/browser/performance_manager/public/graph/node_type.h" #include "mojo/public/cpp/bindings/binding_set.h" #include "mojo/public/cpp/bindings/interface_request.h" #include "mojo/public/cpp/bindings/strong_binding.h" @@ -25,7 +24,7 @@ namespace performance_manager { -class Graph; +class GraphImpl; // NodeBase implements shared functionality among different types of graph // nodes. A specific type of graph node will derive from this class and can @@ -37,7 +36,7 @@ public: // TODO(siggi): Don't store the node type, expose it on a virtual function // instead. - NodeBase(NodeTypeEnum type, Graph* graph); + NodeBase(NodeTypeEnum type, GraphImpl* graph); virtual ~NodeBase(); void AddObserver(GraphObserver* observer); @@ -47,7 +46,7 @@ NodeTypeEnum type() const { return type_; } // May be called on any sequence. - Graph* graph() const { return graph_; } + GraphImpl* graph() const { return graph_; } const base::ObserverList<GraphObserver>::Unchecked& observers() const { return observers_; @@ -59,7 +58,7 @@ static int64_t GetSerializationId(NodeBase* node); protected: - friend class Graph; + friend class GraphImpl; // Called just before joining |graph_|, a good opportunity to initialize // node state. @@ -68,7 +67,7 @@ // node state. virtual void LeaveGraph(); - Graph* const graph_; + GraphImpl* const graph_; const NodeTypeEnum type_; // Assigned on first use, immutable from that point forward. @@ -87,7 +86,8 @@ public: using ObservedProperty = ObservedPropertyImpl<NodeClass, GraphObserver>; - explicit TypedNodeBase(Graph* graph) : NodeBase(NodeClass::Type(), graph) {} + explicit TypedNodeBase(GraphImpl* graph) + : NodeBase(NodeClass::Type(), graph) {} static const NodeClass* FromNodeBase(const NodeBase* node) { DCHECK_EQ(node->type(), NodeClass::Type()); @@ -104,7 +104,7 @@ class CoordinationUnitInterface : public TypedNodeBase<NodeClass>, public MojoInterfaceClass { public: - explicit CoordinationUnitInterface(Graph* graph) + explicit CoordinationUnitInterface(GraphImpl* graph) : TypedNodeBase<NodeClass>(graph) {} ~CoordinationUnitInterface() override = default;
diff --git a/chrome/browser/performance_manager/graph/page_node_impl.cc b/chrome/browser/performance_manager/graph/page_node_impl.cc index 4ed8a84..cc61c5e 100644 --- a/chrome/browser/performance_manager/graph/page_node_impl.cc +++ b/chrome/browser/performance_manager/graph/page_node_impl.cc
@@ -10,6 +10,7 @@ #include "base/stl_util.h" #include "base/time/default_tick_clock.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" #include "chrome/browser/performance_manager/observers/graph_observer.h" #include "chrome/browser/performance_manager/performance_manager_clock.h" @@ -42,7 +43,7 @@ } // namespace -PageNodeImpl::PageNodeImpl(Graph* graph, +PageNodeImpl::PageNodeImpl(GraphImpl* graph, const base::WeakPtr<WebContentsProxy>& weak_contents) : TypedNodeBase(graph), contents_proxy_(weak_contents),
diff --git a/chrome/browser/performance_manager/graph/page_node_impl.h b/chrome/browser/performance_manager/graph/page_node_impl.h index d3320a0..f027137a 100644 --- a/chrome/browser/performance_manager/graph/page_node_impl.h +++ b/chrome/browser/performance_manager/graph/page_node_impl.h
@@ -29,7 +29,7 @@ static constexpr NodeTypeEnum Type() { return NodeTypeEnum::kPage; } - explicit PageNodeImpl(Graph* graph, + explicit PageNodeImpl(GraphImpl* graph, const base::WeakPtr<WebContentsProxy>& contents_proxy); ~PageNodeImpl() override;
diff --git a/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc b/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc index b9f78ea..b955961 100644 --- a/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc +++ b/chrome/browser/performance_manager/graph/page_node_impl_unittest.cc
@@ -194,7 +194,7 @@ } void ExpectInitialInterventionPolicyAggregationWorks( - Graph* mock_graph, + GraphImpl* mock_graph, resource_coordinator::mojom::InterventionPolicy f0_policy, resource_coordinator::mojom::InterventionPolicy f1_policy, resource_coordinator::mojom::InterventionPolicy f0_policy_aggregated,
diff --git a/chrome/browser/performance_manager/graph/process_node_impl.cc b/chrome/browser/performance_manager/graph/process_node_impl.cc index 58c3a07..e5f767c6 100644 --- a/chrome/browser/performance_manager/graph/process_node_impl.cc +++ b/chrome/browser/performance_manager/graph/process_node_impl.cc
@@ -6,11 +6,12 @@ #include "base/logging.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" namespace performance_manager { -ProcessNodeImpl::ProcessNodeImpl(Graph* graph) +ProcessNodeImpl::ProcessNodeImpl(GraphImpl* graph) : CoordinationUnitInterface(graph) { DETACH_FROM_SEQUENCE(sequence_checker_); }
diff --git a/chrome/browser/performance_manager/graph/process_node_impl.h b/chrome/browser/performance_manager/graph/process_node_impl.h index b9affea..e5bd27ff 100644 --- a/chrome/browser/performance_manager/graph/process_node_impl.h +++ b/chrome/browser/performance_manager/graph/process_node_impl.h
@@ -38,10 +38,10 @@ public: static constexpr NodeTypeEnum Type() { return NodeTypeEnum::kProcess; } - explicit ProcessNodeImpl(Graph* graph); + explicit ProcessNodeImpl(GraphImpl* graph); ~ProcessNodeImpl() override; - // resource_coordinator::mojom::ProcessCoordinationUnit implementation. + // resource_coordinator::mojom::ProcessCoordinationUnit implementation: void SetExpectedTaskQueueingDuration(base::TimeDelta duration) override; void SetMainThreadTaskLoadIsLow(bool main_thread_task_load_is_low) override;
diff --git a/chrome/browser/performance_manager/graph/system_node_impl.cc b/chrome/browser/performance_manager/graph/system_node_impl.cc index bef2d26b..e630354 100644 --- a/chrome/browser/performance_manager/graph/system_node_impl.cc +++ b/chrome/browser/performance_manager/graph/system_node_impl.cc
@@ -12,6 +12,7 @@ #include "base/process/process_handle.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" @@ -21,7 +22,7 @@ ProcessResourceMeasurementBatch::ProcessResourceMeasurementBatch() = default; ProcessResourceMeasurementBatch::~ProcessResourceMeasurementBatch() = default; -SystemNodeImpl::SystemNodeImpl(Graph* graph) : TypedNodeBase(graph) {} +SystemNodeImpl::SystemNodeImpl(GraphImpl* graph) : TypedNodeBase(graph) {} SystemNodeImpl::~SystemNodeImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
diff --git a/chrome/browser/performance_manager/graph/system_node_impl.h b/chrome/browser/performance_manager/graph/system_node_impl.h index 99b6f5f..6d185f9 100644 --- a/chrome/browser/performance_manager/graph/system_node_impl.h +++ b/chrome/browser/performance_manager/graph/system_node_impl.h
@@ -49,7 +49,7 @@ public: static constexpr NodeTypeEnum Type() { return NodeTypeEnum::kSystem; } - explicit SystemNodeImpl(Graph* graph); + explicit SystemNodeImpl(GraphImpl* graph); ~SystemNodeImpl() override; void DistributeMeasurementBatch(
diff --git a/chrome/browser/performance_manager/observers/graph_observer.h b/chrome/browser/performance_manager/observers/graph_observer.h index 4e48a89..88f0f99 100644 --- a/chrome/browser/performance_manager/observers/graph_observer.h +++ b/chrome/browser/performance_manager/observers/graph_observer.h
@@ -11,7 +11,7 @@ namespace performance_manager { class FrameNodeImpl; -class Graph; +class GraphImpl; class NodeBase; class PageNodeImpl; class ProcessNodeImpl; @@ -78,12 +78,12 @@ // SystemNodeImpl notifications. virtual void OnProcessCPUUsageReady(SystemNodeImpl* system_node) {} - void set_node_graph(Graph* graph) { node_graph_ = graph; } + void set_node_graph(GraphImpl* graph) { node_graph_ = graph; } - Graph* graph() const { return node_graph_; } + GraphImpl* graph() const { return node_graph_; } private: - Graph* node_graph_ = nullptr; + GraphImpl* node_graph_ = nullptr; DISALLOW_COPY_AND_ASSIGN(GraphObserver); };
diff --git a/chrome/browser/performance_manager/observers/graph_observer_unittest.cc b/chrome/browser/performance_manager/observers/graph_observer_unittest.cc index a5088833..81dbe513 100644 --- a/chrome/browser/performance_manager/observers/graph_observer_unittest.cc +++ b/chrome/browser/performance_manager/observers/graph_observer_unittest.cc
@@ -8,7 +8,7 @@ #include "base/process/process_handle.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/graph_test_harness.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" #include "services/resource_coordinator/public/mojom/coordination_unit.mojom.h"
diff --git a/chrome/browser/performance_manager/observers/metrics_collector.cc b/chrome/browser/performance_manager/observers/metrics_collector.cc index b42247c..bf4bbe6 100644 --- a/chrome/browser/performance_manager/observers/metrics_collector.cc +++ b/chrome/browser/performance_manager/observers/metrics_collector.cc
@@ -9,7 +9,7 @@ #include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_macros.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" #include "chrome/browser/performance_manager/performance_manager_clock.h"
diff --git a/chrome/browser/performance_manager/performance_manager.cc b/chrome/browser/performance_manager/performance_manager.cc index 5da8a683..100ae26 100644 --- a/chrome/browser/performance_manager/performance_manager.cc +++ b/chrome/browser/performance_manager/performance_manager.cc
@@ -145,7 +145,7 @@ void AddNodeAndInvokeCreationCallback( base::OnceCallback<void(NodeType*)> callback, NodeType* node, - Graph* graph) { + GraphImpl* graph) { graph->AddNewNode(node); if (!callback.is_null()) std::move(callback).Run(node);
diff --git a/chrome/browser/performance_manager/performance_manager.h b/chrome/browser/performance_manager/performance_manager.h index b5f985d6..883ffff 100644 --- a/chrome/browser/performance_manager/performance_manager.h +++ b/chrome/browser/performance_manager/performance_manager.h
@@ -14,7 +14,7 @@ #include "base/location.h" #include "base/sequence_checker.h" #include "base/sequenced_task_runner.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/performance_manager.h" #include "chrome/browser/performance_manager/web_contents_proxy.h" #include "chrome/browser/performance_manager/webui_graph_dump_impl.h" @@ -56,7 +56,7 @@ // Invokes |graph_callback| on the performance manager's sequence, with the // graph as a parameter. - using GraphCallback = base::OnceCallback<void(Graph*)>; + using GraphCallback = base::OnceCallback<void(GraphImpl*)>; void CallOnGraph(const base::Location& from_here, GraphCallback graph_callback); @@ -139,7 +139,7 @@ // The performance task runner. const scoped_refptr<base::SequencedTaskRunner> task_runner_; - Graph graph_; + GraphImpl graph_; // The registered graph observers. std::vector<std::unique_ptr<GraphObserver>> observers_;
diff --git a/chrome/browser/performance_manager/performance_manager_tab_helper_unittest.cc b/chrome/browser/performance_manager/performance_manager_tab_helper_unittest.cc index aad2257..3be0c3465 100644 --- a/chrome/browser/performance_manager/performance_manager_tab_helper_unittest.cc +++ b/chrome/browser/performance_manager/performance_manager_tab_helper_unittest.cc
@@ -67,7 +67,7 @@ EXPECT_NE(0u, hosts.size()); PerformanceManager::GetInstance()->CallOnGraph( - FROM_HERE, base::BindLambdaForTesting([num_hosts](Graph* graph) { + FROM_HERE, base::BindLambdaForTesting([num_hosts](GraphImpl* graph) { EXPECT_GE(num_hosts, graph->GetAllProcessNodes().size()); EXPECT_EQ(4u, graph->GetAllFrameNodes().size()); @@ -113,7 +113,7 @@ size_t num_hosts = CountAllRenderProcessHosts(); PerformanceManager::GetInstance()->CallOnGraph( - FROM_HERE, base::BindLambdaForTesting([num_hosts](Graph* graph) { + FROM_HERE, base::BindLambdaForTesting([num_hosts](GraphImpl* graph) { EXPECT_GE(num_hosts, graph->GetAllProcessNodes().size()); EXPECT_EQ(0u, graph->GetAllFrameNodes().size()); ASSERT_EQ(0u, graph->GetAllPageNodes().size());
diff --git a/chrome/browser/performance_manager/performance_manager_unittest.cc b/chrome/browser/performance_manager/performance_manager_unittest.cc index 58d3e39..fe9ef22 100644 --- a/chrome/browser/performance_manager/performance_manager_unittest.cc +++ b/chrome/browser/performance_manager/performance_manager_unittest.cc
@@ -123,7 +123,7 @@ performance_manager()->CreatePageNode(nullptr); PerformanceManager::GraphCallback graph_callback = base::BindLambdaForTesting( - [&page_node](Graph* graph) { EXPECT_EQ(page_node->graph(), graph); }); + [&page_node](GraphImpl* graph) { EXPECT_EQ(page_node->graph(), graph); }); performance_manager()->CallOnGraph(FROM_HERE, std::move(graph_callback)); RunUntilIdle();
diff --git a/chrome/browser/performance_manager/graph/node_type.h b/chrome/browser/performance_manager/public/graph/node_type.h similarity index 62% rename from chrome/browser/performance_manager/graph/node_type.h rename to chrome/browser/performance_manager/public/graph/node_type.h index 6209588..83d313d 100644 --- a/chrome/browser/performance_manager/graph/node_type.h +++ b/chrome/browser/performance_manager/public/graph/node_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 CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_NODE_TYPE_H_ -#define CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_NODE_TYPE_H_ +#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_TYPE_H_ +#define CHROME_BROWSER_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_TYPE_H_ #include <stdint.h> @@ -19,4 +19,4 @@ } // namespace performance_manager -#endif // CHROME_BROWSER_PERFORMANCE_MANAGER_GRAPH_NODE_TYPE_H_ +#endif // CHROME_BROWSER_PERFORMANCE_MANAGER_PUBLIC_GRAPH_NODE_TYPE_H_
diff --git a/chrome/browser/performance_manager/web_contents_proxy_unittest.cc b/chrome/browser/performance_manager/web_contents_proxy_unittest.cc index ef82440..fd640f9 100644 --- a/chrome/browser/performance_manager/web_contents_proxy_unittest.cc +++ b/chrome/browser/performance_manager/web_contents_proxy_unittest.cc
@@ -52,7 +52,7 @@ base::RunLoop run_loop; PerformanceManager::GetInstance()->CallOnGraph( FROM_HERE, base::BindLambdaForTesting([&run_loop, &deref_proxy, - page_node](Graph* graph) { + page_node](GraphImpl* graph) { base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI}, base::BindOnce(deref_proxy, page_node->contents_proxy(), @@ -70,7 +70,7 @@ PerformanceManager::GetInstance()->CallOnGraph( FROM_HERE, base::BindLambdaForTesting([&contents, &run_loop, &deref_proxy, - page_node](Graph* graph) { + page_node](GraphImpl* graph) { base::PostTaskWithTraits( FROM_HERE, {content::BrowserThread::UI}, base::BindLambdaForTesting([&contents]() { contents.reset(); }));
diff --git a/chrome/browser/performance_manager/webui_graph_dump_impl.cc b/chrome/browser/performance_manager/webui_graph_dump_impl.cc index e80ddc7..419d666 100644 --- a/chrome/browser/performance_manager/webui_graph_dump_impl.cc +++ b/chrome/browser/performance_manager/webui_graph_dump_impl.cc
@@ -6,13 +6,13 @@ #include "base/macros.h" #include "chrome/browser/performance_manager/graph/frame_node_impl.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/graph/process_node_impl.h" namespace performance_manager { -WebUIGraphDumpImpl::WebUIGraphDumpImpl(Graph* graph) +WebUIGraphDumpImpl::WebUIGraphDumpImpl(GraphImpl* graph) : graph_(graph), binding_(this) { DCHECK(graph); }
diff --git a/chrome/browser/performance_manager/webui_graph_dump_impl.h b/chrome/browser/performance_manager/webui_graph_dump_impl.h index a04c29a..514918c 100644 --- a/chrome/browser/performance_manager/webui_graph_dump_impl.h +++ b/chrome/browser/performance_manager/webui_graph_dump_impl.h
@@ -10,11 +10,11 @@ namespace performance_manager { -class Graph; +class GraphImpl; class WebUIGraphDumpImpl : public resource_coordinator::mojom::WebUIGraphDump { public: - explicit WebUIGraphDumpImpl(Graph* graph); + explicit WebUIGraphDumpImpl(GraphImpl* graph); ~WebUIGraphDumpImpl() override; // WebUIGraphDump implementation. @@ -25,7 +25,7 @@ base::OnceClosure error_handler); private: - Graph* graph_; + GraphImpl* graph_; mojo::Binding<resource_coordinator::mojom::WebUIGraphDump> binding_; DISALLOW_COPY_AND_ASSIGN(WebUIGraphDumpImpl);
diff --git a/chrome/browser/performance_manager/webui_graph_dump_impl_unittest.cc b/chrome/browser/performance_manager/webui_graph_dump_impl_unittest.cc index 45e835a..99a8618 100644 --- a/chrome/browser/performance_manager/webui_graph_dump_impl_unittest.cc +++ b/chrome/browser/performance_manager/webui_graph_dump_impl_unittest.cc
@@ -17,7 +17,7 @@ class WebUIGraphDumpImplTest : public GraphTestHarness {}; TEST_F(WebUIGraphDumpImplTest, Create) { - Graph graph; + GraphImpl graph; MockMultiplePagesWithMultipleProcessesGraph mock_graph(&graph); base::TimeTicks now = PerformanceManagerClock::NowTicks();
diff --git a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc index 8a4fcf4..c5e035d 100644 --- a/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc +++ b/chrome/browser/picture_in_picture/picture_in_picture_window_controller_browsertest.cc
@@ -18,6 +18,11 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" +#include "chrome/browser/ui/views/overlay/mute_image_button.h" +#include "chrome/browser/ui/views/overlay/overlay_window_views.h" +#include "chrome/browser/ui/views/overlay/playback_image_button.h" +#include "chrome/browser/ui/views/overlay/skip_ad_label_button.h" +#include "chrome/browser/ui/views/overlay/track_image_button.h" #include "chrome/common/web_application_info.h" #include "chrome/test/base/in_process_browser_test.h" #include "chrome/test/base/ui_test_utils.h" @@ -41,16 +46,8 @@ #include "ui/aura/window.h" #include "ui/events/base_event_utils.h" #include "ui/gfx/codec/png_codec.h" - -#if !defined(OS_ANDROID) -#include "chrome/browser/ui/views/overlay/mute_image_button.h" -#include "chrome/browser/ui/views/overlay/overlay_window_views.h" -#include "chrome/browser/ui/views/overlay/playback_image_button.h" -#include "chrome/browser/ui/views/overlay/skip_ad_label_button.h" -#include "chrome/browser/ui/views/overlay/track_image_button.h" #include "ui/views/controls/button/image_button.h" #include "ui/views/widget/widget_observer.h" -#endif #if defined(OS_CHROMEOS) #include "ash/accelerators/accelerator_controller.h" @@ -143,7 +140,6 @@ EXPECT_TRUE(result); } -#if !defined(OS_ANDROID) class WidgetBoundsChangeWaiter : public views::WidgetObserver { public: explicit WidgetBoundsChangeWaiter(views::Widget* widget) @@ -175,7 +171,6 @@ ui::EF_NONE, ui::EF_NONE); window->OnMouseEvent(&moved_over); } -#endif // !defined(OS_ANDROID) private: content::PictureInPictureWindowController* pip_window_controller_ = nullptr; @@ -270,7 +265,8 @@ base::BindOnce( &PictureInPicturePixelComparisonBrowserTest::ReadbackResult, base::Unretained(this), run_loop.QuitClosure())); - overlay_window_views->GetLayer()->RequestCopyOfOutput(std::move(request)); + overlay_window_views->GetLayerForTesting()->RequestCopyOfOutput( + std::move(request)); run_loop.Run(); } @@ -409,8 +405,6 @@ ui_test_utils::NavigateToURL(browser(), test_page_url); } -#if !defined(OS_ANDROID) - // Tests that when creating a Picture-in-Picture window a size is sent to the // caller and if the window is resized, the caller is also notified. IN_PROC_BROWSER_TEST_F(PictureInPictureWindowControllerBrowserTest, @@ -447,8 +441,6 @@ .WaitAndGetTitle()); } -#endif // !defined(OS_ANDROID) - // Tests that when closing a Picture-in-Picture window, the video element is // reflected as no longer in Picture-in-Picture. IN_PROC_BROWSER_TEST_F(PictureInPictureWindowControllerBrowserTest, @@ -712,13 +704,11 @@ &is_paused)); EXPECT_FALSE(is_paused); -#if !defined(OS_ANDROID) OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( window_controller()->GetWindowForTesting()); EXPECT_EQ(overlay_window->playback_state_for_testing(), OverlayWindowViews::PlaybackState::kPaused); -#endif } // Tests that resetting video src when video is in Picture-in-Picture session @@ -728,8 +718,11 @@ LoadTabAndEnterPictureInPicture(browser()); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); + + OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( + window_controller()->GetWindowForTesting()); + + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); content::WebContents* active_web_contents = browser()->tab_strip_model()->GetActiveWebContents(); @@ -741,8 +734,7 @@ EXPECT_TRUE(in_picture_in_picture); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); } // Tests that updating video src when video is in Picture-in-Picture session @@ -752,8 +744,11 @@ LoadTabAndEnterPictureInPicture(browser()); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); + + OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( + window_controller()->GetWindowForTesting()); + + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); content::WebContents* active_web_contents = browser()->tab_strip_model()->GetActiveWebContents(); @@ -768,16 +763,9 @@ EXPECT_TRUE(in_picture_in_picture); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); - -#if !defined(OS_ANDROID) - OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( - window_controller()->GetWindowForTesting()); - EXPECT_FALSE( overlay_window->controls_parent_view_for_testing()->layer()->visible()); -#endif + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); } // Tests that changing video src to media stream when video is in @@ -788,8 +776,11 @@ LoadTabAndEnterPictureInPicture(browser()); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); + + OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( + window_controller()->GetWindowForTesting()); + + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); content::WebContents* active_web_contents = browser()->tab_strip_model()->GetActiveWebContents(); @@ -804,16 +795,9 @@ EXPECT_TRUE(in_picture_in_picture); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); - -#if !defined(OS_ANDROID) - OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( - window_controller()->GetWindowForTesting()); - EXPECT_FALSE( overlay_window->controls_parent_view_for_testing()->layer()->visible()); -#endif + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); } // Tests that we can enter Picture-in-Picture when a video is not preloaded, @@ -1155,8 +1139,6 @@ EXPECT_FALSE(window_controller()->GetWindowForTesting()->IsVisible()); } -#if !defined(OS_ANDROID) - // Tests that when a new surface id is sent to the Picture-in-Picture window, it // doesn't move back to its default position. IN_PROC_BROWSER_TEST_F(PictureInPictureWindowControllerBrowserTest, @@ -1246,8 +1228,6 @@ EXPECT_FALSE(is_paused); EXPECT_TRUE(window_controller()->GetWindowForTesting()->IsVisible()); - EXPECT_TRUE( - window_controller()->GetWindowForTesting()->GetVideoLayer()->visible()); OverlayWindowViews* overlay_window = static_cast<OverlayWindowViews*>( window_controller()->GetWindowForTesting()); @@ -1255,6 +1235,8 @@ EXPECT_EQ(overlay_window->playback_state_for_testing(), OverlayWindowViews::PlaybackState::kPlaying); + EXPECT_TRUE(overlay_window->video_layer_for_testing()->visible()); + ASSERT_TRUE( content::ExecuteScript(active_web_contents, "exitPictureInPicture();")); @@ -1340,8 +1322,6 @@ EXPECT_TRUE(overlay_window->IsVisible()); } -#endif // !defined(OS_ANDROID) - // This checks that a video in Picture-in-Picture with preload none, when // changing source willproperly update the associated media player id. This is // checked by closing the window because the test it at a too high level to be @@ -1643,7 +1623,6 @@ #endif // defined(OS_CHROMEOS) -#if !defined(OS_ANDROID) // Tests that the Play/Pause button is displayed appropriately in the // Picture-in-Picture window. IN_PROC_BROWSER_TEST_F(PictureInPictureWindowControllerBrowserTest, @@ -1680,7 +1659,6 @@ EXPECT_TRUE( overlay_window->play_pause_controls_view_for_testing()->IsDrawn()); } -#endif // Check that page visibility API events are fired when tab is hidden, shown, // and even occluded. @@ -1804,7 +1782,6 @@ base::test::ScopedFeatureList scoped_feature_list_; }; -#if !defined(OS_ANDROID) // Tests that a Skip Ad button is displayed in the Picture-in-Picture window // when Media Session Action "skipad" is handled by the website. IN_PROC_BROWSER_TEST_F(MediaSessionPictureInPictureWindowControllerBrowserTest, @@ -1923,7 +1900,6 @@ EXPECT_TRUE( overlay_window->play_pause_controls_view_for_testing()->IsDrawn()); } -#endif // Tests that a Next Track button is displayed in the Picture-in-Picture window // when Media Session Action "nexttrack" is handled by the website. @@ -2705,8 +2681,6 @@ .WaitAndGetTitle()); } -#if !defined(OS_ANDROID) - class MuteButtonPictureInPictureWindowControllerBrowserTest : public PictureInPictureWindowControllerBrowserTest { public: @@ -2896,5 +2870,3 @@ EXPECT_EQ(overlay_window->muted_state_for_testing(), OverlayWindowViews::MutedState::kNoAudio); } - -#endif // #if !defined(OS_ANDROID)
diff --git a/chrome/browser/previews/previews_lite_page_browsertest.cc b/chrome/browser/previews/previews_lite_page_browsertest.cc index af2579a..b41b8bf 100644 --- a/chrome/browser/previews/previews_lite_page_browsertest.cc +++ b/chrome/browser/previews/previews_lite_page_browsertest.cc
@@ -1094,6 +1094,18 @@ IN_PROC_BROWSER_TEST_P( PreviewsLitePageServerBrowserTest, + DISABLE_ON_WIN_MAC_CHROMESOS(CoinFlipHoldbackTriggering)) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndEnableFeatureWithParameters( + {previews::features::kCoinFlipHoldback}, + {{"force_coin_flip_always_holdback", "true"}}); + + ui_test_utils::NavigateToURL(browser(), HttpsLitePageURL(kSuccess)); + VerifyPreviewNotLoaded(); +} + +IN_PROC_BROWSER_TEST_P( + PreviewsLitePageServerBrowserTest, DISABLE_ON_WIN_MAC_CHROMESOS(LitePagePreviewsLoadOriginal)) { base::HistogramTester histogram_tester; ui_test_utils::NavigateToURL(browser(), HttpsLitePageURL(kSuccess));
diff --git a/chrome/browser/previews/previews_lite_page_navigation_throttle.cc b/chrome/browser/previews/previews_lite_page_navigation_throttle.cc index 1fa983f..e4ba4839 100644 --- a/chrome/browser/previews/previews_lite_page_navigation_throttle.cc +++ b/chrome/browser/previews/previews_lite_page_navigation_throttle.cc
@@ -318,8 +318,11 @@ tab_helper ? (tab_helper->GetPreviewsUserData(navigation_handle())) : nullptr; - if (!previews_data || !(previews_data->allowed_previews_state() & - content::LITE_PAGE_REDIRECT_ON)) { + if (!previews_data || + !(previews_data->allowed_previews_state() & + content::LITE_PAGE_REDIRECT_ON) || + previews_data->coin_flip_holdback_result() == + previews::CoinFlipHoldbackResult::kHoldback) { return false; }
diff --git a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc index 58e38d30..5dc7025 100644 --- a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc +++ b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc
@@ -9,7 +9,7 @@ #include "base/stl_util.h" #include "base/task/post_task.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/performance_manager/graph/graph.h" +#include "chrome/browser/performance_manager/graph/graph_impl.h" #include "chrome/browser/performance_manager/graph/page_node_impl.h" #include "chrome/browser/performance_manager/performance_manager.h" #include "chrome/browser/performance_manager/web_contents_proxy.h"
diff --git a/chrome/browser/resources/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.js b/chrome/browser/resources/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.js index de992026..338a071 100644 --- a/chrome/browser/resources/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.js +++ b/chrome/browser/resources/chromeos/arc_graphics_tracing/arc_graphics_tracing_ui.js
@@ -1098,7 +1098,7 @@ var totalWidth = bandsWidth + columnsWidth; bands.setWidth(totalWidth); - for (i = 0; i < pids.length; i++) { + for (var i = 0; i < pids.length; i++) { var pid = pids[i]; var threads = threadsPerPid[pid].threads; var processName; @@ -1132,7 +1132,7 @@ bands.nextYOffset += (processInfoHeight + padding); - for (j = 0; j < threads.length; j++) { + for (var j = 0; j < threads.length; j++) { var tid = threads[j].tid; bands.addBand( new Events(eventsPerTid[tid].events, 0, 1), cpuBandHeight, padding); @@ -1452,7 +1452,7 @@ var chromeBands = new EventBands( chromeTitle, 'arc-events-band', resolution, 0, model.duration); chromeBands.setWidth(chromeBands.timestampToOffset(model.duration)); - for (i = 0; i < model.chrome.buffers.length; i++) { + for (var i = 0; i < model.chrome.buffers.length; i++) { chromeBands.addBand( new Events(model.chrome.buffers[i], 500, 599), topBandHeight, topBandPadding); @@ -1477,7 +1477,7 @@ model.android.global_events, 405 /* kSurfaceFlingerCompositionJank */, 405 /* kSurfaceFlingerCompositionJank */)); - for (i = 0; i < model.views.length; i++) { + for (var i = 0; i < model.views.length; i++) { var view = model.views[i]; var activityTitleText; var icon; @@ -1493,7 +1493,7 @@ var activityBands = new EventBands( activityTitle, 'arc-events-band', resolution, 0, model.duration); activityBands.setWidth(activityBands.timestampToOffset(model.duration)); - for (j = 0; j < view.buffers.length; j++) { + for (var j = 0; j < view.buffers.length; j++) { // Android buffer events. activityBands.addBand( new Events(view.buffers[j], 100, 199), innerBandHeight,
diff --git a/chrome/browser/resources/print_preview/print_preview.html b/chrome/browser/resources/print_preview/print_preview.html index b9f98af..4bbfa95 100644 --- a/chrome/browser/resources/print_preview/print_preview.html +++ b/chrome/browser/resources/print_preview/print_preview.html
@@ -49,7 +49,7 @@ content: ''; display: block; height: 100%; - width: 326px; /* --print-preview-sidebar-width */ + width: 384px; /* --print-preview-sidebar-width */ } [new-print-preview-layout].loading body::before {
diff --git a/chrome/browser/resources/print_preview/ui/destination_select.html b/chrome/browser/resources/print_preview/ui/destination_select.html index a7dd8886..54a9487 100644 --- a/chrome/browser/resources/print_preview/ui/destination_select.html +++ b/chrome/browser/resources/print_preview/ui/destination_select.html
@@ -23,10 +23,11 @@ --printer-icon-size: 20px; } - .md-select { + select.md-select { background-position: var(--printer-icon-side-padding) center, calc(100% - var(--md-select-side-padding)) center; background-size: var(--printer-icon-size), var(--md-arrow-width); + margin: 2px; padding-inline-start: 32px; --md-select-width: calc(100% - 4px); }
diff --git a/chrome/browser/resources/print_preview/ui/destination_settings.html b/chrome/browser/resources/print_preview/ui/destination_settings.html index 2e686dc3d..1f53fe3 100644 --- a/chrome/browser/resources/print_preview/ui/destination_settings.html +++ b/chrome/browser/resources/print_preview/ui/destination_settings.html
@@ -49,7 +49,7 @@ #destinationSelect { /* Reduce margin by 2px so that the <select> inside this element will be aligned with others after adding margin for the border. */ - margin-inline-start: calc(var(--print-preview-sidebar-margin) - 2px); + margin: 0 calc(var(--print-preview-sidebar-margin) - 2px); } #destination-status-wrapper,
diff --git a/chrome/browser/resources/print_preview/ui/dpi_settings.html b/chrome/browser/resources/print_preview/ui/dpi_settings.html index 1f534bf..a9c68bbe 100644 --- a/chrome/browser/resources/print_preview/ui/dpi_settings.html +++ b/chrome/browser/resources/print_preview/ui/dpi_settings.html
@@ -10,6 +10,9 @@ <dom-module id="print-preview-dpi-settings"> <template> <style include="print-preview-shared"> + :host print-preview-settings-select { + margin: 0 calc(var(--print-preview-sidebar-margin) - 2px); + } </style> <print-preview-settings-section> <span id="dpi-label" slot="title">$i18n{dpiLabel}</span>
diff --git a/chrome/browser/resources/print_preview/ui/header.html b/chrome/browser/resources/print_preview/ui/header.html index 30d16a7..4a88f67 100644 --- a/chrome/browser/resources/print_preview/ui/header.html +++ b/chrome/browser/resources/print_preview/ui/header.html
@@ -18,10 +18,7 @@ :host { border-bottom: var(--print-preview-settings-border); display: block; - padding-bottom: 8px; - padding-inline-end: 16px; - padding-inline-start: 19px; - padding-top: 20px; + padding: 20px var(--print-preview-sidebar-margin) 8px; } :host-context(html:not([dark])) {
diff --git a/chrome/browser/resources/print_preview/ui/header_new.html b/chrome/browser/resources/print_preview/ui/header_new.html index 8187496..88746dd 100644 --- a/chrome/browser/resources/print_preview/ui/header_new.html +++ b/chrome/browser/resources/print_preview/ui/header_new.html
@@ -17,7 +17,7 @@ align-items: center; display: flex; justify-content: space-between; - padding: 20px 16px 12px; + padding: 20px var(--print-preview-sidebar-margin) 12px; } :host-context(html:not([dark])) {
diff --git a/chrome/browser/resources/print_preview/ui/link_container.html b/chrome/browser/resources/print_preview/ui/link_container.html index 875819d..3268cb4 100644 --- a/chrome/browser/resources/print_preview/ui/link_container.html +++ b/chrome/browser/resources/print_preview/ui/link_container.html
@@ -42,7 +42,7 @@ align-items: center; display: flex; min-height: 46px; - padding: 0 19px; + padding: 0 var(--print-preview-sidebar-margin); } #systemDialogLink {
diff --git a/chrome/browser/resources/print_preview/ui/media_size_settings.html b/chrome/browser/resources/print_preview/ui/media_size_settings.html index 03223df..fb55307 100644 --- a/chrome/browser/resources/print_preview/ui/media_size_settings.html +++ b/chrome/browser/resources/print_preview/ui/media_size_settings.html
@@ -8,6 +8,9 @@ <dom-module id="print-preview-media-size-settings"> <template> <style include="print-preview-shared"> + :host print-preview-settings-select { + margin: 0 calc(var(--print-preview-sidebar-margin) - 2px); + } </style> <print-preview-settings-section> <span id="media-size-label" slot="title">$i18n{mediaSizeLabel}</span>
diff --git a/chrome/browser/resources/print_preview/ui/more_settings.html b/chrome/browser/resources/print_preview/ui/more_settings.html index 5bb57a4..994e944 100644 --- a/chrome/browser/resources/print_preview/ui/more_settings.html +++ b/chrome/browser/resources/print_preview/ui/more_settings.html
@@ -10,6 +10,7 @@ <template> <style include="cr-hidden-style print-preview-shared"> :host { + border-top: var(--print-preview-settings-border); display: block; } @@ -19,16 +20,14 @@ div { align-items: center; - border-top: var(--print-preview-settings-border); display: flex; font: inherit; - margin: 0 auto; + margin: 0 var(--print-preview-sidebar-margin); min-height: 48px; - padding: 0 var(--print-preview-sidebar-padding); } :host cr-expand-button { - margin-inline-end: 4px; + margin-inline-end: 6px; --cr-expand-button-size: 28px; }
diff --git a/chrome/browser/resources/print_preview/ui/print_preview_shared_css.html b/chrome/browser/resources/print_preview/ui/print_preview_shared_css.html index a4cd75ef..cfacf959 100644 --- a/chrome/browser/resources/print_preview/ui/print_preview_shared_css.html +++ b/chrome/browser/resources/print_preview/ui/print_preview_shared_css.html
@@ -9,7 +9,8 @@ <style include="cr-shared-style"> /* Default state ********************************************************/ select.md-select { - margin: 2px; + margin-bottom: 2px; + margin-top: 2px; min-height: 32px; padding-bottom: 1px; <if expr="is_win or is_macosx"> @@ -21,6 +22,7 @@ padding-inline-end: 32px; padding-top: 1px; user-select: none; + --md-select-width: calc(100% - 2 * var(--print-preview-sidebar-margin)); } .checkbox cr-checkbox { @@ -47,7 +49,7 @@ } print-preview-settings-section [slot=controls] > * { - margin-inline-start: var(--print-preview-sidebar-margin); + margin: 0 var(--print-preview-sidebar-margin); } /* Default print preview dialog styles. */
diff --git a/chrome/browser/resources/print_preview/ui/print_preview_vars_css.html b/chrome/browser/resources/print_preview/ui/print_preview_vars_css.html index 948b8de3..3ded67f 100644 --- a/chrome/browser/resources/print_preview/ui/print_preview_vars_css.html +++ b/chrome/browser/resources/print_preview/ui/print_preview_vars_css.html
@@ -7,17 +7,13 @@ <style> html { --print-preview-row-height: 38px; - --print-preview-sidebar-width: 326px; - --print-preview-sidebar-padding: 20px; - --print-preview-title-width: 100px; - --print-preview-sidebar-margin: 15px; + --print-preview-sidebar-width: 384px; + --print-preview-title-width: 120px; + --print-preview-sidebar-margin: 24px; --cr-input-row-container: { min-height: var(--print-preview-row-height); }; - /* Full width - sidebar margin - 2px for end focus ring border */ - --md-select-width: calc( - 100% - var(--print-preview-sidebar-margin) - 2px); --print-preview-settings-border: 1px solid var(--google-grey-200); --print-preview-dialog-margin: 34px; --print-preview-disabled-label: {
diff --git a/chrome/browser/resources/print_preview/ui/settings_section.html b/chrome/browser/resources/print_preview/ui/settings_section.html index d25422b..42248000 100644 --- a/chrome/browser/resources/print_preview/ui/settings_section.html +++ b/chrome/browser/resources/print_preview/ui/settings_section.html
@@ -8,7 +8,7 @@ <style include="print-preview-shared"> :host { display: flex; - padding: 0 var(--print-preview-sidebar-padding); + padding-inline-start: var(--print-preview-sidebar-margin); } ::slotted([slot=controls]),
diff --git a/chrome/browser/resources/print_preview/ui/settings_select.html b/chrome/browser/resources/print_preview/ui/settings_select.html index 60fc2b36..b5d8e61 100644 --- a/chrome/browser/resources/print_preview/ui/settings_select.html +++ b/chrome/browser/resources/print_preview/ui/settings_select.html
@@ -10,6 +10,7 @@ <template> <style include="print-preview-shared md-select"> select.md-select { + margin: 2px; --md-select-width: calc(100% - 4px); } </style>
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc index d22ce50..d7141a4 100644 --- a/chrome/browser/safe_browsing/safe_browsing_service.cc +++ b/chrome/browser/safe_browsing/safe_browsing_service.cc
@@ -42,6 +42,7 @@ #include "components/safe_browsing/db/database_manager.h" #include "components/safe_browsing/ping_manager.h" #include "components/safe_browsing/triggers/trigger_manager.h" +#include "components/safe_browsing/web_ui/safe_browsing_ui.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_service.h" @@ -174,6 +175,9 @@ base::BindRepeating(&SafeBrowsingService::CreateNetworkContextParams, base::Unretained(this))); + WebUIInfoSingleton::GetInstance()->set_network_context( + network_context_.get()); + ui_manager_ = CreateUIManager(); navigation_observer_manager_ = new SafeBrowsingNavigationObserverManager();
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc index 002556f..d714cfa9 100644 --- a/chrome/browser/search/local_ntp_source.cc +++ b/chrome/browser/search/local_ntp_source.cc
@@ -143,12 +143,12 @@ "image/jpg"}, }; -// This enum must match the numbering for NTPSearchSuggestionsRequestStatus in +// This enum must match the numbering for NTPSearchSuggestionsRequestStatusi in // enums.xml. Do not reorder or remove items, and update kMaxValue when new // items are added. enum class SearchSuggestionsRequestStatus { UNKNOWN_ERROR = 0, - SENT = 1, + RECEIVED_RESPONSE = 1, SIGNED_OUT = 2, OPTED_OUT = 3, IMPRESSION_CAP = 4, @@ -1146,7 +1146,7 @@ base::TimeTicks now = base::TimeTicks::Now(); for (const auto& request : search_suggest_requests_) { base::TimeDelta delta = now - request.start_time; - UMA_HISTOGRAM_MEDIUM_TIMES("NewTabPage.SearchSuggestions.RequestLatency", + UMA_HISTOGRAM_MEDIUM_TIMES("NewTabPage.SearchSuggestions.RequestLatencyV2", delta); SearchSuggestionsRequestStatus request_status = SearchSuggestionsRequestStatus::UNKNOWN_ERROR; @@ -1159,16 +1159,24 @@ request_status = SearchSuggestionsRequestStatus::IMPRESSION_CAP; } else if (result == SearchSuggestLoader::Status::REQUESTS_FROZEN) { request_status = SearchSuggestionsRequestStatus::FROZEN; - } else if (result == SearchSuggestLoader::Status::OK) { - request_status = SearchSuggestionsRequestStatus::SENT; + } else if (result == SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS) { + request_status = SearchSuggestionsRequestStatus::RECEIVED_RESPONSE; UMA_HISTOGRAM_MEDIUM_TIMES( - "NewTabPage.SearchSuggestions.RequestLatency.Success", delta); + "NewTabPage.SearchSuggestions.RequestLatencyV2." + "SuccessWithSuggestions", + delta); + } else if (result == SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS) { + request_status = SearchSuggestionsRequestStatus::RECEIVED_RESPONSE; + UMA_HISTOGRAM_MEDIUM_TIMES( + "NewTabPage.SearchSuggestions.RequestLatencyV2." + "SuccessWithoutSuggestions", + delta); } else if (result == SearchSuggestLoader::Status::FATAL_ERROR) { request_status = SearchSuggestionsRequestStatus::FATAL_ERROR; UMA_HISTOGRAM_MEDIUM_TIMES( - "NewTabPage.SearchSuggestions.RequestLatency.Failure", delta); + "NewTabPage.SearchSuggestions.RequestLatencyV2.Failure", delta); } - UMA_HISTOGRAM_ENUMERATION("NewTabPage.SearchSuggestions.RequestStatus", + UMA_HISTOGRAM_ENUMERATION("NewTabPage.SearchSuggestions.RequestStatusV2", request_status); } search_suggest_requests_.clear(); @@ -1185,7 +1193,8 @@ base::Optional<SearchSuggestData> data = search_suggest_service_->search_suggest_data(); - if (data.has_value()) { + if (search_suggest_service_->search_suggest_status() == + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS) { search_suggest_service_->SuggestionsDisplayed(); } scoped_refptr<base::RefCountedString> result;
diff --git a/chrome/browser/search/search_suggest/search_suggest_loader.h b/chrome/browser/search/search_suggest/search_suggest_loader.h index 8209726c..ace379c 100644 --- a/chrome/browser/search/search_suggest/search_suggest_loader.h +++ b/chrome/browser/search/search_suggest/search_suggest_loader.h
@@ -17,8 +17,10 @@ class SearchSuggestLoader { public: enum class Status { - // Received a valid response. - OK, + // Received a valid response that contained search suggestions. + OK_WITH_SUGGESTIONS, + // Received a valid response that did not contain search suggestions. + OK_WITHOUT_SUGGESTIONS, // User is signed out, no request was made. SIGNED_OUT, // Some transient error occurred, e.g. the network request failed because
diff --git a/chrome/browser/search/search_suggest/search_suggest_loader_impl.cc b/chrome/browser/search/search_suggest/search_suggest_loader_impl.cc index 4b81c7af..b10c2da 100644 --- a/chrome/browser/search/search_suggest/search_suggest_loader_impl.cc +++ b/chrome/browser/search/search_suggest/search_suggest_loader_impl.cc
@@ -37,71 +37,82 @@ const char kSearchSuggestResponsePreamble[] = ")]}'"; -base::Optional<SearchSuggestData> JsonToSearchSuggestionData( - const base::Value& value) { +// Parses an update proto from |value|. Will return false if |value| +// is not of the form: +// {"update":{"query_suggestions":{"query_suggestions_with_html": "", "script": +// "", impression_cap_expire_time_ms: "", request_freeze_time_ms: "", +// max_impressions: ""}}}. +// Additionally |data| will be base::nullopt if "query_suggestions" keys is not +// present. +bool JsonToSearchSuggestionData(const base::Value& value, + base::Optional<SearchSuggestData>& data) { + data = base::nullopt; + + bool all_fields_present = true; + const base::DictionaryValue* dict = nullptr; if (!value.GetAsDictionary(&dict)) { DVLOG(1) << "Parse error: top-level dictionary not found"; - return base::nullopt; + return false; } const base::DictionaryValue* update = nullptr; if (!dict->GetDictionary("update", &update)) { DVLOG(1) << "Parse error: no update"; - return base::nullopt; + return false; } const base::DictionaryValue* query_suggestions = nullptr; if (!update->GetDictionary("query_suggestions", &query_suggestions)) { DVLOG(1) << "Parse error: no query_suggestions"; - return base::nullopt; + return false; } + SearchSuggestData result; + data = result; + std::string suggestions_html = std::string(); if (!query_suggestions->GetString("query_suggestions_with_html", &suggestions_html)) { DVLOG(1) << "Parse error: no query_suggestions_with_html"; - return base::nullopt; + all_fields_present = false; } - SearchSuggestData result; - result.suggestions_html = suggestions_html; - std::string end_of_body_script = std::string(); if (!query_suggestions->GetString("script", &end_of_body_script)) { DVLOG(1) << "Parse error: no script"; - return base::nullopt; + all_fields_present = false; } - result.end_of_body_script = end_of_body_script; - int impression_cap_expire_time_ms; if (!query_suggestions->GetInteger("impression_cap_expire_time_ms", &impression_cap_expire_time_ms)) { DVLOG(1) << "Parse error: no impression_cap_expire_time_ms"; - return base::nullopt; + all_fields_present = false; } - result.impression_cap_expire_time_ms = impression_cap_expire_time_ms; - int request_freeze_time_ms; if (!query_suggestions->GetInteger("request_freeze_time_ms", &request_freeze_time_ms)) { DVLOG(1) << "Parse error: no request_freeze_time_ms"; - return base::nullopt; + all_fields_present = false; } - result.request_freeze_time_ms = request_freeze_time_ms; - int max_impressions; if (!query_suggestions->GetInteger("max_impressions", &max_impressions)) { DVLOG(1) << "Parse error: no max_impressions"; - return base::nullopt; + all_fields_present = false; } + result.suggestions_html = suggestions_html; + result.end_of_body_script = end_of_body_script; + result.impression_cap_expire_time_ms = impression_cap_expire_time_ms; + result.request_freeze_time_ms = request_freeze_time_ms; result.max_impressions = max_impressions; - return result; + data = result; + + return all_fields_present; } } // namespace @@ -267,8 +278,14 @@ } void SearchSuggestLoaderImpl::JsonParsed(std::unique_ptr<base::Value> value) { - base::Optional<SearchSuggestData> result = JsonToSearchSuggestionData(*value); - Respond(result.has_value() ? Status::OK : Status::FATAL_ERROR, result); + base::Optional<SearchSuggestData> result; + if (JsonToSearchSuggestionData(*value, result)) { + Respond(Status::OK_WITH_SUGGESTIONS, result); + } else if (result.has_value()) { + Respond(Status::OK_WITHOUT_SUGGESTIONS, result); + } else { + Respond(Status::FATAL_ERROR, result); + } } void SearchSuggestLoaderImpl::JsonParseFailed(const std::string& message) {
diff --git a/chrome/browser/search/search_suggest/search_suggest_loader_impl_unittest.cc b/chrome/browser/search/search_suggest/search_suggest_loader_impl_unittest.cc index f5b5b20..5950459 100644 --- a/chrome/browser/search/search_suggest/search_suggest_loader_impl_unittest.cc +++ b/chrome/browser/search/search_suggest/search_suggest_loader_impl_unittest.cc
@@ -38,11 +38,14 @@ const char kApplicationLocale[] = "us"; -const char kMinimalValidResponse[] = R"json({"update": { "query_suggestions": { - "query_suggestions_with_html": "", "script": "", - "impression_cap_expire_time_ms": 0, "request_freeze_time_ms": 0, - "max_impressions": 0 -}}})json"; +const char kMinimalValidResponseNoSuggestions[] = + R"json({"update": { "query_suggestions": { "impression_cap_expire_time_ms": + 1, "request_freeze_time_ms": 2, "max_impressions": 3}}})json"; + +const char kMinimalValidResponseWithSuggestions[] = + R"json({"update": { "query_suggestions": {"query_suggestions_with_html": + "<div></div>", "script": "<script></script>","impression_cap_expire_time_ms" + : 1, "request_freeze_time_ms": 2,"max_impressions": 3}}})json"; // Required to instantiate a GoogleUrlTracker in UNIT_TEST_MODE. class GoogleURLTrackerClientStub : public GoogleURLTrackerClient { @@ -138,7 +141,7 @@ }; TEST_F(SearchSuggestLoaderImplTest, RequestReturns) { - SetUpResponseWithData(kMinimalValidResponse); + SetUpResponseWithData(kMinimalValidResponseWithSuggestions); base::MockCallback<SearchSuggestLoader::SearchSuggestionsCallback> callback; std::string blocklist; @@ -146,7 +149,8 @@ base::Optional<SearchSuggestData> data; base::RunLoop loop; - EXPECT_CALL(callback, Run(SearchSuggestLoader::Status::OK, _)) + EXPECT_CALL(callback, + Run(SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, _)) .WillOnce(DoAll(SaveArg<1>(&data), Quit(&loop))); loop.Run(); @@ -156,7 +160,8 @@ TEST_F(SearchSuggestLoaderImplTest, HandlesResponsePreamble) { // The response may contain a ")]}'" prefix. The loader should ignore that // during parsing. - SetUpResponseWithData(std::string(")]}'") + kMinimalValidResponse); + SetUpResponseWithData(std::string(")]}'") + + kMinimalValidResponseWithSuggestions); base::MockCallback<SearchSuggestLoader::SearchSuggestionsCallback> callback; std::string blocklist; @@ -164,7 +169,8 @@ base::Optional<SearchSuggestData> data; base::RunLoop loop; - EXPECT_CALL(callback, Run(SearchSuggestLoader::Status::OK, _)) + EXPECT_CALL(callback, + Run(SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, _)) .WillOnce(DoAll(SaveArg<1>(&data), Quit(&loop))); loop.Run(); @@ -172,11 +178,7 @@ } TEST_F(SearchSuggestLoaderImplTest, ParsesFullResponse) { - SetUpResponseWithData(R"json({"update": { "query_suggestions": { - "query_suggestions_with_html": "<div></div>", - "script": "<script></script>", "impression_cap_expire_time_ms": 1, - "request_freeze_time_ms": 2, "max_impressions": 3 - }}})json"); + SetUpResponseWithData(kMinimalValidResponseWithSuggestions); base::MockCallback<SearchSuggestLoader::SearchSuggestionsCallback> callback; std::string blocklist; @@ -184,7 +186,8 @@ base::Optional<SearchSuggestData> data; base::RunLoop loop; - EXPECT_CALL(callback, Run(SearchSuggestLoader::Status::OK, _)) + EXPECT_CALL(callback, + Run(SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, _)) .WillOnce(DoAll(SaveArg<1>(&data), Quit(&loop))); loop.Run(); @@ -196,8 +199,30 @@ EXPECT_EQ(3, data->max_impressions); } +TEST_F(SearchSuggestLoaderImplTest, ParsesValidResponseWithNoSuggestions) { + SetUpResponseWithData(kMinimalValidResponseNoSuggestions); + + base::MockCallback<SearchSuggestLoader::SearchSuggestionsCallback> callback; + std::string blocklist; + search_suggest_loader()->Load(blocklist, callback.Get()); + + base::Optional<SearchSuggestData> data; + base::RunLoop loop; + EXPECT_CALL(callback, + Run(SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS, _)) + .WillOnce(DoAll(SaveArg<1>(&data), Quit(&loop))); + loop.Run(); + + ASSERT_TRUE(data.has_value()); + EXPECT_EQ(std::string(), data->suggestions_html); + EXPECT_EQ(std::string(), data->end_of_body_script); + EXPECT_EQ(1, data->impression_cap_expire_time_ms); + EXPECT_EQ(2, data->request_freeze_time_ms); + EXPECT_EQ(3, data->max_impressions); +} + TEST_F(SearchSuggestLoaderImplTest, CoalescesMultipleRequests) { - SetUpResponseWithData(kMinimalValidResponse); + SetUpResponseWithData(kMinimalValidResponseWithSuggestions); // Trigger two requests. base::MockCallback<SearchSuggestLoader::SearchSuggestionsCallback> @@ -213,9 +238,11 @@ base::Optional<SearchSuggestData> second_data; base::RunLoop loop; - EXPECT_CALL(first_callback, Run(SearchSuggestLoader::Status::OK, _)) + EXPECT_CALL(first_callback, + Run(SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, _)) .WillOnce(SaveArg<1>(&first_data)); - EXPECT_CALL(second_callback, Run(SearchSuggestLoader::Status::OK, _)) + EXPECT_CALL(second_callback, + Run(SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, _)) .WillOnce(DoAll(SaveArg<1>(&second_data), Quit(&loop))); loop.Run(); @@ -240,7 +267,8 @@ // Flaky, see https://crbug.com/923953. TEST_F(SearchSuggestLoaderImplTest, DISABLED_InvalidJsonErrorIsFatal) { - SetUpResponseWithData(kMinimalValidResponse + std::string(")")); + SetUpResponseWithData(kMinimalValidResponseWithSuggestions + + std::string(")")); base::MockCallback<SearchSuggestLoader::SearchSuggestionsCallback> callback; std::string blocklist;
diff --git a/chrome/browser/search/search_suggest/search_suggest_service.cc b/chrome/browser/search/search_suggest/search_suggest_service.cc index 475e506..22420f3 100644 --- a/chrome/browser/search/search_suggest/search_suggest_service.cc +++ b/chrome/browser/search/search_suggest/search_suggest_service.cc
@@ -102,7 +102,9 @@ identity_manager, base::BindRepeating(&SearchSuggestService::SigninStatusChanged, base::Unretained(this)))), - profile_(profile) {} + profile_(profile), + search_suggest_data_(base::nullopt), + search_suggest_status_(SearchSuggestLoader::Status::FATAL_ERROR) {} SearchSuggestService::~SearchSuggestService() = default; @@ -120,6 +122,11 @@ return search_suggest_data_; } +const SearchSuggestLoader::Status& SearchSuggestService::search_suggest_status() + const { + return search_suggest_status_; +} + void SearchSuggestService::Refresh() { const std::string blocklist = GetBlocklistAsString(); MaybeLoadWithBlocklist(blocklist); @@ -175,13 +182,16 @@ DictionaryPrefUpdate update(profile_->GetPrefs(), prefs::kNtpSearchSuggestionsImpressions); - if (data.has_value()) { + if (status == SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS || + status == SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS) { base::DictionaryValue* dict = update.Get(); dict->SetInteger(kMaxImpressions, data->max_impressions); dict->SetInteger(kImpressionCapExpireTimeMs, data->impression_cap_expire_time_ms); dict->SetInteger(kRequestFreezeTimeMs, data->request_freeze_time_ms); - } else if (status == SearchSuggestLoader::Status::FATAL_ERROR) { + } + + if (status == SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS) { base::DictionaryValue* dict = update.Get(); dict->SetBoolean(kIsRequestFrozen, true); dict->SetInteger(kRequestFrozenTimeMs, base::Time::Now().ToTimeT());
diff --git a/chrome/browser/search/search_suggest/search_suggest_service.h b/chrome/browser/search/search_suggest/search_suggest_service.h index 59077fc..813dda7 100644 --- a/chrome/browser/search/search_suggest/search_suggest_service.h +++ b/chrome/browser/search/search_suggest/search_suggest_service.h
@@ -40,9 +40,7 @@ // Virtual for testing. virtual const base::Optional<SearchSuggestData>& search_suggest_data() const; - const SearchSuggestLoader::Status& search_suggest_status() const { - return search_suggest_status_; - } + virtual const SearchSuggestLoader::Status& search_suggest_status() const; // Determines if a request for search suggestions should be made. If a request // should not be made immediately call SearchSuggestDataLoaded with the
diff --git a/chrome/browser/search/search_suggest/search_suggest_service_unittest.cc b/chrome/browser/search/search_suggest/search_suggest_service_unittest.cc index 119de9c..19f9207 100644 --- a/chrome/browser/search/search_suggest/search_suggest_service_unittest.cc +++ b/chrome/browser/search/search_suggest/search_suggest_service_unittest.cc
@@ -159,7 +159,8 @@ // Fulfill it. SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); // Request another refresh. @@ -171,7 +172,8 @@ // Fulfill the second request. SearchSuggestData other_data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, other_data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, other_data); EXPECT_EQ(other_data, service()->search_suggest_data()); } @@ -182,7 +184,8 @@ // Load some data. service()->Refresh(); SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); ASSERT_EQ(data, service()->search_suggest_data()); // Request a refresh and respond with a transient error. @@ -200,7 +203,8 @@ // Load some data. service()->Refresh(); SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); ASSERT_EQ(data, service()->search_suggest_data()); // Request a refresh and respond with a fatal error. @@ -218,7 +222,8 @@ // Load some data. service()->Refresh(); SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); ASSERT_EQ(data, service()->search_suggest_data()); // Sign out. This should clear the cached data and notify the observer. @@ -300,7 +305,8 @@ // Fulfill it. SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); // Select a suggestion to blocklist. @@ -312,7 +318,8 @@ // Fulfill the second request. SearchSuggestData other_data; other_data.suggestions_html = "<div>Different!</div>"; - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, other_data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, other_data); EXPECT_EQ(other_data, service()->search_suggest_data()); } @@ -328,7 +335,8 @@ // Fulfill it. SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); // Select a suggestion to blocklist. @@ -342,7 +350,8 @@ // Fulfill the second request. SearchSuggestData other_data; other_data.suggestions_html = "<div>Different!</div>"; - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, other_data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, other_data); EXPECT_EQ(other_data, service()->search_suggest_data()); } @@ -388,7 +397,8 @@ // Fulfill it. SearchSuggestData data = TestSearchSuggestData(); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); // Request another refresh. @@ -404,7 +414,8 @@ other_data.impression_cap_expire_time_ms = 1234; other_data.request_freeze_time_ms = 4321; other_data.max_impressions = 456; - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, other_data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, other_data); EXPECT_EQ(other_data, service()->search_suggest_data()); // Ensure the pref parses successfully. @@ -441,7 +452,8 @@ // Fulfill it. SearchSuggestData data = TestSearchSuggestData(); data.max_impressions = 2; - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); service()->SuggestionsDisplayed(); @@ -452,7 +464,9 @@ // Request another refresh. service()->Refresh(); EXPECT_EQ(1u, loader()->GetCallbackCount()); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + data.suggestions_html = "<div>Different!</div>"; + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); service()->SuggestionsDisplayed(); @@ -483,7 +497,8 @@ SearchSuggestData data = TestSearchSuggestData(); data.max_impressions = 1; data.impression_cap_expire_time_ms = 1000; - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); service()->SuggestionsDisplayed(); @@ -500,7 +515,8 @@ // The impression cap timeout has expired. service()->Refresh(); EXPECT_EQ(1u, loader()->GetCallbackCount()); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); } @@ -515,15 +531,16 @@ // Fulfill it. SearchSuggestData data = TestSearchSuggestData(); data.request_freeze_time_ms = 1000; - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); // Request a refresh. That should arrive at the loader. service()->Refresh(); EXPECT_EQ(1u, loader()->GetCallbackCount()); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::FATAL_ERROR, - base::nullopt); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS, data); const base::DictionaryValue* dict = pref_service()->GetDictionary(prefs::kNtpSearchSuggestionsImpressions); @@ -540,6 +557,7 @@ // The freeze timeout has expired. service()->Refresh(); EXPECT_EQ(1u, loader()->GetCallbackCount()); - loader()->RespondToAllCallbacks(SearchSuggestLoader::Status::OK, data); + loader()->RespondToAllCallbacks( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS, data); EXPECT_EQ(data, service()->search_suggest_data()); }
diff --git a/chrome/browser/send_tab_to_self/send_tab_to_self_util.cc b/chrome/browser/send_tab_to_self/send_tab_to_self_util.cc index d74b7d0..fbb19f3 100644 --- a/chrome/browser/send_tab_to_self/send_tab_to_self_util.cc +++ b/chrome/browser/send_tab_to_self/send_tab_to_self_util.cc
@@ -14,6 +14,7 @@ #include "components/sync/device_info/device_info.h" #include "components/sync/device_info/device_info_sync_service.h" #include "components/sync/device_info/device_info_tracker.h" +#include "components/sync/driver/profile_sync_service.h" #include "components/sync/driver/sync_driver_switches.h" #include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_user_settings.h" @@ -33,6 +34,13 @@ base::FeatureList::IsEnabled(kSendTabToSelfShowSendingUI); } +bool IsSyncPaused(Profile* profile) { + syncer::ProfileSyncService* service = + ProfileSyncServiceFactory::GetAsProfileSyncServiceForProfile(profile); + return service->GetDisableReasons() == + syncer::SyncService::DISABLE_REASON_PAUSED; +} + bool IsUserSyncTypeActive(Profile* profile) { SendTabToSelfSyncService* service = SendTabToSelfSyncServiceFactory::GetForProfile(profile); @@ -50,6 +58,12 @@ device_sync_service->GetDeviceInfoTracker()->CountActiveDevices() > 1; } +bool IsSettingRequirementsMet(Profile* profile) { + // If sending is enabled, then so is receiving. + return IsSendingEnabled() && !IsSyncPaused(profile) && + IsUserSyncTypeActive(profile) && IsSyncingOnMultipleDevices(profile); +} + bool IsContentRequirementsMet(const GURL& url, Profile* profile) { bool is_http_or_https = url.SchemeIsHTTPOrHTTPS(); bool is_native_page = url.SchemeIs(content::kChromeUIScheme); @@ -65,9 +79,7 @@ Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); - // If sending is enabled, then so is receiving. - return IsSendingEnabled() && IsUserSyncTypeActive(profile) && - IsSyncingOnMultipleDevices(profile) && + return IsSettingRequirementsMet(profile) && IsContentRequirementsMet(web_contents->GetURL(), profile); } @@ -77,8 +89,7 @@ return false; Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); - return IsSendingEnabled() && IsUserSyncTypeActive(profile) && - IsSyncingOnMultipleDevices(profile) && + return IsSettingRequirementsMet(profile) && (IsContentRequirementsMet(web_contents->GetURL(), profile) || IsContentRequirementsMet(link_url, profile)); }
diff --git a/chrome/browser/send_tab_to_self/send_tab_to_self_util.h b/chrome/browser/send_tab_to_self/send_tab_to_self_util.h index 80f5c769..fa537de 100644 --- a/chrome/browser/send_tab_to_self/send_tab_to_self_util.h +++ b/chrome/browser/send_tab_to_self/send_tab_to_self_util.h
@@ -21,12 +21,18 @@ // flags are enabled. bool IsSendingEnabled(); +// Return true if the the sync mode is paused. +bool IsSyncPaused(Profile* profile); + // Returns true if the SendTabToSelf sync datatype is active. bool IsUserSyncTypeActive(Profile* profile); // Returns true if the user syncing on two or more devices. bool IsSyncingOnMultipleDevices(Profile* profile); +// Returns true if the flag and sync setting requirements are met. +bool IsSettingRequirementsMet(Profile* profile); + // Returns true if the tab and web content requirements are met: // User is viewing an HTTP or HTTPS page. // User is not on a native page.
diff --git a/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc b/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc index 1ad5fa8..ced4fa7d 100644 --- a/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc +++ b/chrome/browser/send_tab_to_self/send_tab_to_self_util_unittest.cc
@@ -185,6 +185,14 @@ EXPECT_FALSE(IsReceivingEnabled()); } +TEST_F(SendTabToSelfUtilTest, IsSyncPaused) { + EXPECT_FALSE(IsSyncPaused(profile())); + + test_sync_service_->SetDisableReasons( + syncer::SyncService::DISABLE_REASON_PAUSED); + EXPECT_TRUE(IsSyncPaused(profile())); +} + TEST_F(SendTabToSelfUtilTest, IsSyncingOnMultipleDevices_True) { mock_device_sync_service_->SetTrackerActiveDevices(2);
diff --git a/chrome/browser/site_isolation/site_isolation_policy_unittest.cc b/chrome/browser/site_isolation/site_isolation_policy_unittest.cc index 2b427ce..866f69b 100644 --- a/chrome/browser/site_isolation/site_isolation_policy_unittest.cc +++ b/chrome/browser/site_isolation/site_isolation_policy_unittest.cc
@@ -13,6 +13,7 @@ #include "chrome/test/base/testing_profile_manager.h" #include "components/prefs/scoped_user_pref_update.h" #include "content/public/browser/site_instance.h" +#include "content/public/common/content_switches.h" #include "content/public/test/test_browser_thread_bundle.h" #include "testing/gtest/include/gtest/gtest.h" @@ -67,8 +68,12 @@ } // New SiteInstances for foo.com and bar.com shouldn't require a dedicated - // process to start with. - { + // process to start with. An exception is if this test runs with a + // command-line --site-per-process flag (which might be the case on some + // bots). This will override the feature configuration in this test and make + // all sites isolated. + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kSitePerProcess)) { scoped_refptr<content::SiteInstance> foo_instance = content::SiteInstance::CreateForURL(profile, GURL("http://foo.com/1")); EXPECT_FALSE(foo_instance->RequiresDedicatedProcess()); @@ -121,6 +126,13 @@ // stored isolated origins when site isolation for password sites is off. TEST_F(NoPasswordSiteIsolationPolicyTest, PersistedIsolatedOriginsIgnoredWithoutPasswordIsolation) { + // Running this test with a command-line --site-per-process flag (which might + // be the case on some bots) doesn't make sense, as that will make all sites + // isolated, overriding the feature configuration in this test. + if (base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kSitePerProcess)) + return; + EXPECT_FALSE(SiteIsolationPolicy::IsIsolationForPasswordSitesEnabled()); TestingProfile* profile = manager()->CreateTestingProfile("Test");
diff --git a/chrome/browser/transition_manager/full_browser_transition_manager.cc b/chrome/browser/transition_manager/full_browser_transition_manager.cc index 4eb4f04..e5b0f4180 100644 --- a/chrome/browser/transition_manager/full_browser_transition_manager.cc +++ b/chrome/browser/transition_manager/full_browser_transition_manager.cc
@@ -17,7 +17,7 @@ return instance.get(); } -void FullBrowserTransitionManager::RegisterCallbackOnProfileCreation( +bool FullBrowserTransitionManager::RegisterCallbackOnProfileCreation( SimpleFactoryKey* key, OnProfileCreationCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -26,8 +26,10 @@ if (iterator != simple_key_to_profile_.end()) { // Profile has already been created, run the callback now. std::move(callback).Run(iterator->second); + return true; } else { on_profile_creation_callbacks_[key].push_back(std::move(callback)); + return false; } }
diff --git a/chrome/browser/transition_manager/full_browser_transition_manager.h b/chrome/browser/transition_manager/full_browser_transition_manager.h index de3e3f3..d60b2d9 100644 --- a/chrome/browser/transition_manager/full_browser_transition_manager.h +++ b/chrome/browser/transition_manager/full_browser_transition_manager.h
@@ -32,10 +32,11 @@ // Return the singleton instance of the class static FullBrowserTransitionManager* Get(); - // Register a callback to be called on profile creation. If a profile matching - // the key has already been created (i.e. full browser has been loaded), the - // callback is run immediately. - void RegisterCallbackOnProfileCreation(SimpleFactoryKey* key, + // Register a |callback| to be called on profile creation. If a profile + // matching the |key| has already been created (i.e. full browser has been + // loaded), the |callback| is run immediately and this method returns true. + // Otherwise, it returns false and will be run when/if the profile is created. + bool RegisterCallbackOnProfileCreation(SimpleFactoryKey* key, OnProfileCreationCallback callback); // Marks that a |profile| has been created.
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc index e4efc9d..23fa75e 100644 --- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc +++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_unittest.cc
@@ -339,18 +339,6 @@ ash::mojom::ShelfItemDelegatePtr) override { set_delegate_count_++; } - void GetAutoHideBehaviorForTesting( - int64_t display_id, - GetAutoHideBehaviorForTestingCallback callback) override { - std::move(callback).Run(auto_hide_behavior_); - } - void SetAutoHideBehaviorForTesting( - int64_t display_id, - ash::ShelfAutoHideBehavior behavior, - SetAutoHideBehaviorForTestingCallback callback) override { - auto_hide_behavior_ = behavior; - std::move(callback).Run(); - } // Helper that waits for idle and extracts the non-default bitmap from the // last updated item in shelf controller. @@ -389,8 +377,6 @@ base::OnceClosure updated_callback_; size_t set_delegate_count_ = 0; ash::ShelfItem last_item_; - ash::ShelfAutoHideBehavior auto_hide_behavior_ = - ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; ash::mojom::ShelfObserverAssociatedPtr observer_; mojo::Binding<ash::mojom::ShelfController> binding_;
diff --git a/chrome/browser/ui/search/local_ntp_suggestions_browsertest.cc b/chrome/browser/ui/search/local_ntp_suggestions_browsertest.cc index 7b4cbd8..9eb8e57 100644 --- a/chrome/browser/ui/search/local_ntp_suggestions_browsertest.cc +++ b/chrome/browser/ui/search/local_ntp_suggestions_browsertest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/optional.h" +#include "base/test/metrics/histogram_tester.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/search/one_google_bar/one_google_bar_service.h" #include "chrome/browser/search/one_google_bar/one_google_bar_service_factory.h" @@ -27,8 +28,7 @@ MOCK_METHOD0(Refresh, void()); void RefreshImpl() { - SearchSuggestDataLoaded(SearchSuggestLoader::Status::OK, - search_suggest_data_); + SearchSuggestDataLoaded(search_suggest_status_, search_suggest_data_); } explicit MockSearchSuggestService(Profile* profile) @@ -38,18 +38,28 @@ search_suggest_data_ = search_suggest_data; } - const base::Optional<SearchSuggestData>& search_suggest_data() - const override { - return search_suggest_data_; + void set_search_suggest_status( + const SearchSuggestLoader::Status search_suggest_status) { + search_suggest_status_ = search_suggest_status; } void SuggestionsDisplayed() override { impression_count_++; } int impression_count() { return impression_count_; } + const base::Optional<SearchSuggestData>& search_suggest_data() + const override { + return search_suggest_data_; + } + + const SearchSuggestLoader::Status& search_suggest_status() const override { + return search_suggest_status_; + } + private: int impression_count_ = 0; base::Optional<SearchSuggestData> search_suggest_data_; + SearchSuggestLoader::Status search_suggest_status_; }; class LocalNTPSearchSuggestTest : public InProcessBrowserTest { @@ -94,10 +104,14 @@ OneGoogleBarServiceFactory::GetForProfile(browser()->profile()); one_google_bar_service->SetLanguageCodeForTesting("en-US"); + base::HistogramTester histograms; + SearchSuggestData data; data.suggestions_html = "<div>suggestions</div>"; data.end_of_body_script = "console.log('suggestions-done')"; search_suggest_service()->set_search_suggest_data(data); + search_suggest_service()->set_search_suggest_status( + SearchSuggestLoader::Status::OK_WITH_SUGGESTIONS); EXPECT_CALL(*search_suggest_service(), Refresh()) .WillOnce(Invoke(search_suggest_service(), @@ -120,11 +134,69 @@ &result)); EXPECT_TRUE(result); EXPECT_EQ(1, search_suggest_service()->impression_count()); + + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.SuccessWithSuggestions", + 1); + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.SuccessWithoutSuggestions", + 0); + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.Failure", 0); + histograms.ExpectTotalCount("NewTabPage.SearchSuggestions.RequestStatusV2", + 1); +} + +IN_PROC_BROWSER_TEST_F( + LocalNTPSearchSuggestTest, + NoSuggestionsjectedIntoPageOnResponseWithoutSuggestions) { + EXPECT_EQ(base::nullopt, search_suggest_service()->search_suggest_data()); + + base::HistogramTester histograms; + SearchSuggestData data; + search_suggest_service()->set_search_suggest_data(data); + search_suggest_service()->set_search_suggest_status( + SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS); + + OneGoogleBarService* one_google_bar_service = + OneGoogleBarServiceFactory::GetForProfile(browser()->profile()); + one_google_bar_service->SetLanguageCodeForTesting("en-US"); + + EXPECT_CALL(*search_suggest_service(), Refresh()) + .WillOnce(Invoke(search_suggest_service(), + &MockSearchSuggestService::RefreshImpl)); + + content::WebContents* active_tab = + local_ntp_test_utils::OpenNewTab(browser(), GURL("about:blank")); + local_ntp_test_utils::NavigateToNTPAndWaitUntilLoaded(browser(), + /*delay=*/1000); + + bool result; + ASSERT_TRUE(instant_test_utils::GetBoolFromJS( + active_tab, "$('suggestions') === null", &result)); + EXPECT_TRUE(result); + EXPECT_EQ(0, search_suggest_service()->impression_count()); + + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.SuccessWithSuggestions", + 0); + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.SuccessWithoutSuggestions", + 1); + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.Failure", 0); + histograms.ExpectTotalCount("NewTabPage.SearchSuggestions.RequestStatusV2", + 1); } IN_PROC_BROWSER_TEST_F(LocalNTPSearchSuggestTest, SuggestionsNotInjectedIntoPageNonEnUS) { EXPECT_EQ(base::nullopt, search_suggest_service()->search_suggest_data()); + search_suggest_service()->set_search_suggest_status( + SearchSuggestLoader::Status::FATAL_ERROR); + search_suggest_service()->Refresh(); + + base::HistogramTester histograms; OneGoogleBarService* one_google_bar_service = OneGoogleBarServiceFactory::GetForProfile(browser()->profile()); @@ -152,11 +224,16 @@ EmptySuggestionsNotInjectedIntoPage) { EXPECT_EQ(base::nullopt, search_suggest_service()->search_suggest_data()); + base::HistogramTester histograms; + OneGoogleBarService* one_google_bar_service = OneGoogleBarServiceFactory::GetForProfile(browser()->profile()); one_google_bar_service->SetLanguageCodeForTesting("en-US"); SearchSuggestData data; + search_suggest_service()->set_search_suggest_data(data); + search_suggest_service()->set_search_suggest_status( + SearchSuggestLoader::Status::OK_WITHOUT_SUGGESTIONS); EXPECT_CALL(*search_suggest_service(), Refresh()) .WillOnce(Invoke(search_suggest_service(), &MockSearchSuggestService::RefreshImpl)); @@ -171,4 +248,15 @@ active_tab, "$('suggestions') === null", &result)); EXPECT_TRUE(result); EXPECT_EQ(0, search_suggest_service()->impression_count()); + + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.SuccessWithSuggestions", + 0); + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.SuccessWithoutSuggestions", + 1); + histograms.ExpectTotalCount( + "NewTabPage.SearchSuggestions.RequestLatencyV2.Failure", 0); + histograms.ExpectTotalCount("NewTabPage.SearchSuggestions.RequestStatusV2", + 1); }
diff --git a/chrome/browser/ui/search/ntp_user_data_logger.cc b/chrome/browser/ui/search/ntp_user_data_logger.cc index 151079a..60be683 100644 --- a/chrome/browser/ui/search/ntp_user_data_logger.cc +++ b/chrome/browser/ui/search/ntp_user_data_logger.cc
@@ -437,6 +437,26 @@ } } +void NTPUserDataLogger::LogSuggestionEventWithValue( + NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time) { + // Only logged on the Google NTP. + if (!DefaultSearchProviderIsGoogle()) { + return; + } + + switch (event) { + case NTPSuggestionsLoggingEventType::kShownCount: + UMA_HISTOGRAM_COUNTS_100("NewTabPage.SearchSuggestions.ShownCount", data); + break; + case NTPSuggestionsLoggingEventType::kIndexClicked: + UMA_HISTOGRAM_COUNTS_100("NewTabPage.SearchSuggestions.IndexClicked", + data); + break; + } +} + void NTPUserDataLogger::LogMostVisitedImpression( const ntp_tiles::NTPTileImpression& impression) { if ((impression.index >= kNumMostVisited) ||
diff --git a/chrome/browser/ui/search/ntp_user_data_logger.h b/chrome/browser/ui/search/ntp_user_data_logger.h index 8893e1d3..676ee17 100644 --- a/chrome/browser/ui/search/ntp_user_data_logger.h +++ b/chrome/browser/ui/search/ntp_user_data_logger.h
@@ -47,6 +47,15 @@ // all others require Google as the default search provider. void LogEvent(NTPLoggingEventType event, base::TimeDelta time); + // Called when a search suggestion event occurs on the NTP that has an integer + // value associated with it; N suggestions were shown on this NTP load, the + // Nth suggestion was clicked, etc. |time| is the delta time from navigation + // start until this event happened. Requires Google as the default search + // provider. + void LogSuggestionEventWithValue(NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time); + // Logs an impression on one of the NTP tiles by given details. void LogMostVisitedImpression(const ntp_tiles::NTPTileImpression& impression);
diff --git a/chrome/browser/ui/search/search_ipc_router.cc b/chrome/browser/ui/search/search_ipc_router.cc index 726a217..dde5d39 100644 --- a/chrome/browser/ui/search/search_ipc_router.cc +++ b/chrome/browser/ui/search/search_ipc_router.cc
@@ -281,6 +281,20 @@ delegate_->OnLogEvent(event, time); } +void SearchIPCRouter::LogSuggestionEventWithValue( + int page_seq_no, + NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time) { + if (page_seq_no != commit_counter_) + return; + + if (!policy_->ShouldProcessLogSuggestionEventWithValue()) + return; + + delegate_->OnLogSuggestionEventWithValue(event, data, time); +} + void SearchIPCRouter::LogMostVisitedImpression( int page_seq_no, const ntp_tiles::NTPTileImpression& impression) {
diff --git a/chrome/browser/ui/search/search_ipc_router.h b/chrome/browser/ui/search/search_ipc_router.h index 2528709..435934f 100644 --- a/chrome/browser/ui/search/search_ipc_router.h +++ b/chrome/browser/ui/search/search_ipc_router.h
@@ -85,6 +85,13 @@ virtual void OnLogEvent(NTPLoggingEventType event, base::TimeDelta time) = 0; + // Called to signal that an event has occurred on the New Tab Page at a + // particular time since navigation start, and provide an int value. + virtual void OnLogSuggestionEventWithValue( + NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time) = 0; + // Called to log an impression from a given provider on the New Tab Page. virtual void OnLogMostVisitedImpression( const ntp_tiles::NTPTileImpression& impression) = 0; @@ -156,6 +163,7 @@ virtual bool ShouldProcessUndoCustomLinkAction() = 0; virtual bool ShouldProcessResetCustomLinks() = 0; virtual bool ShouldProcessLogEvent() = 0; + virtual bool ShouldProcessLogSuggestionEventWithValue() = 0; virtual bool ShouldProcessPasteIntoOmnibox(bool is_active_tab) = 0; virtual bool ShouldSendSetInputInProgress(bool is_active_tab) = 0; virtual bool ShouldSendOmniboxFocusChanged() = 0; @@ -237,6 +245,10 @@ void LogEvent(int page_seq_no, NTPLoggingEventType event, base::TimeDelta time) override; + void LogSuggestionEventWithValue(int page_seq_no, + NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time) override; void LogMostVisitedImpression( int page_seq_no, const ntp_tiles::NTPTileImpression& impression) override;
diff --git a/chrome/browser/ui/search/search_ipc_router_policy_impl.cc b/chrome/browser/ui/search/search_ipc_router_policy_impl.cc index 2773548..6fd38bb 100644 --- a/chrome/browser/ui/search/search_ipc_router_policy_impl.cc +++ b/chrome/browser/ui/search/search_ipc_router_policy_impl.cc
@@ -69,6 +69,10 @@ return !is_incognito_ && search::IsInstantNTP(web_contents_); } +bool SearchIPCRouterPolicyImpl::ShouldProcessLogSuggestionEventWithValue() { + return !is_incognito_ && search::IsInstantNTP(web_contents_); +} + bool SearchIPCRouterPolicyImpl::ShouldProcessPasteIntoOmnibox( bool is_active_tab) { return is_active_tab && !is_incognito_ && search::IsInstantNTP(web_contents_);
diff --git a/chrome/browser/ui/search/search_ipc_router_policy_impl.h b/chrome/browser/ui/search/search_ipc_router_policy_impl.h index 9bd24323..5b96046 100644 --- a/chrome/browser/ui/search/search_ipc_router_policy_impl.h +++ b/chrome/browser/ui/search/search_ipc_router_policy_impl.h
@@ -39,6 +39,7 @@ bool ShouldProcessUndoCustomLinkAction() override; bool ShouldProcessResetCustomLinks() override; bool ShouldProcessLogEvent() override; + bool ShouldProcessLogSuggestionEventWithValue() override; bool ShouldProcessPasteIntoOmnibox(bool is_active_tab) override; bool ShouldSendSetInputInProgress(bool is_active_tab) override; bool ShouldSendOmniboxFocusChanged() override;
diff --git a/chrome/browser/ui/search/search_ipc_router_unittest.cc b/chrome/browser/ui/search/search_ipc_router_unittest.cc index 2d720d1..a1664cd 100644 --- a/chrome/browser/ui/search/search_ipc_router_unittest.cc +++ b/chrome/browser/ui/search/search_ipc_router_unittest.cc
@@ -74,6 +74,10 @@ MOCK_METHOD0(OnResetCustomLinks, void()); MOCK_METHOD2(OnLogEvent, void(NTPLoggingEventType event, base::TimeDelta time)); + MOCK_METHOD3(OnLogSuggestionEventWithValue, + void(NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time)); MOCK_METHOD1(OnLogMostVisitedImpression, void(const ntp_tiles::NTPTileImpression& impression)); MOCK_METHOD1(OnLogMostVisitedNavigation, @@ -111,6 +115,7 @@ MOCK_METHOD0(ShouldProcessUndoCustomLinkAction, bool()); MOCK_METHOD0(ShouldProcessResetCustomLinks, bool()); MOCK_METHOD0(ShouldProcessLogEvent, bool()); + MOCK_METHOD0(ShouldProcessLogSuggestionEventWithValue, bool()); MOCK_METHOD1(ShouldProcessPasteIntoOmnibox, bool(bool)); MOCK_METHOD0(ShouldProcessSetCustomBackgroundURL, bool()); MOCK_METHOD0(ShouldProcessSetCustomBackgroundURLWithAttributions, bool()); @@ -304,6 +309,42 @@ delta); } +TEST_F(SearchIPCRouterTest, ProcessLogSuggestionEventWithValueMsg) { + base::TimeDelta delta = base::TimeDelta::FromMilliseconds(123); + NavigateAndCommitActiveTab(GURL(chrome::kChromeSearchLocalNtpUrl)); + SetupMockDelegateAndPolicy(); + MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy(); + EXPECT_CALL(*mock_delegate(), + OnLogSuggestionEventWithValue( + NTPSuggestionsLoggingEventType::kShownCount, 1, delta)) + .Times(1); + EXPECT_CALL(*policy, ShouldProcessLogSuggestionEventWithValue()) + .Times(1) + .WillOnce(Return(true)); + + GetSearchIPCRouter().LogSuggestionEventWithValue( + GetSearchIPCRouterSeqNo(), NTPSuggestionsLoggingEventType::kShownCount, 1, + delta); +} + +TEST_F(SearchIPCRouterTest, IgnoreLogSuggestionEventWithValueMsg) { + base::TimeDelta delta = base::TimeDelta::FromMilliseconds(123); + NavigateAndCommitActiveTab(GURL("chrome-search://foo/bar")); + SetupMockDelegateAndPolicy(); + MockSearchIPCRouterPolicy* policy = GetSearchIPCRouterPolicy(); + EXPECT_CALL(*mock_delegate(), + OnLogSuggestionEventWithValue( + NTPSuggestionsLoggingEventType::kShownCount, 1, delta)) + .Times(0); + EXPECT_CALL(*policy, ShouldProcessLogSuggestionEventWithValue()) + .Times(1) + .WillOnce(Return(false)); + + GetSearchIPCRouter().LogSuggestionEventWithValue( + GetSearchIPCRouterSeqNo(), NTPSuggestionsLoggingEventType::kShownCount, 1, + delta); +} + TEST_F(SearchIPCRouterTest, ProcessLogMostVisitedImpressionMsg) { const ntp_tiles::NTPTileImpression impression( 3, ntp_tiles::TileSource::SUGGESTIONS_SERVICE,
diff --git a/chrome/browser/ui/search/search_tab_helper.cc b/chrome/browser/ui/search/search_tab_helper.cc index 58b19135..77b66b7 100644 --- a/chrome/browser/ui/search/search_tab_helper.cc +++ b/chrome/browser/ui/search/search_tab_helper.cc
@@ -334,6 +334,14 @@ ->LogEvent(event, time); } +void SearchTabHelper::OnLogSuggestionEventWithValue( + NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time) { + NTPUserDataLogger::GetOrCreateFromWebContents(web_contents()) + ->LogSuggestionEventWithValue(event, data, time); +} + void SearchTabHelper::OnLogMostVisitedImpression( const ntp_tiles::NTPTileImpression& impression) { NTPUserDataLogger::GetOrCreateFromWebContents(web_contents())
diff --git a/chrome/browser/ui/search/search_tab_helper.h b/chrome/browser/ui/search/search_tab_helper.h index d2332be5..9ccfad5 100644 --- a/chrome/browser/ui/search/search_tab_helper.h +++ b/chrome/browser/ui/search/search_tab_helper.h
@@ -101,6 +101,9 @@ void OnUndoCustomLinkAction() override; void OnResetCustomLinks() override; void OnLogEvent(NTPLoggingEventType event, base::TimeDelta time) override; + void OnLogSuggestionEventWithValue(NTPSuggestionsLoggingEventType event, + int data, + base::TimeDelta time) override; void OnLogMostVisitedImpression( const ntp_tiles::NTPTileImpression& impression) override; void OnLogMostVisitedNavigation(
diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.cc b/chrome/browser/ui/views/overlay/overlay_window_views.cc index 777c3b8f..39e0fca8 100644 --- a/chrome/browser/ui/views/overlay/overlay_window_views.cc +++ b/chrome/browser/ui/views/overlay/overlay_window_views.cc
@@ -342,12 +342,13 @@ // views::View that is displayed when video is hidden. ---------------------- // Adding an extra pixel to width/height makes sure controls background cover // entirely window when platform has fractional scale applied. - gfx::Rect larger_window_bounds = GetBounds(); + gfx::Rect larger_window_bounds = + gfx::Rect(0, 0, GetBounds().width(), GetBounds().height()); larger_window_bounds.Inset(-1, -1); - window_background_view_->SetSize(larger_window_bounds.size()); + window_background_view_->SetBoundsRect(larger_window_bounds); window_background_view_->SetPaintToLayer(ui::LAYER_SOLID_COLOR); window_background_view_->layer()->set_name("WindowBackgroundView"); - GetWindowBackgroundLayer()->SetColor(SK_ColorBLACK); + window_background_view_->layer()->SetColor(SK_ColorBLACK); // views::View that holds the scrim, which appears with the controls. ------- controls_scrim_view_->SetSize(GetBounds().size()); @@ -390,6 +391,9 @@ // view::View that holds the video. ----------------------------------------- video_view_->SetPaintToLayer(ui::LAYER_TEXTURED); + video_view_->SetSize(GetBounds().size()); + video_view_->layer()->SetMasksToBounds(true); + video_view_->layer()->SetFillsBoundsOpaquely(false); video_view_->layer()->set_name("VideoView"); // views::View that toggles play/pause/replay. ------------------------------ @@ -415,6 +419,8 @@ controls_parent_view_->AddChildView(play_pause_controls_view_.get()); controls_parent_view_->AddChildView(next_track_controls_view_.get()); controls_parent_view_->AddChildView(previous_track_controls_view_.get()); + GetContentsView()->AddChildView(window_background_view_.get()); + GetContentsView()->AddChildView(video_view_.get()); GetContentsView()->AddChildView(controls_scrim_view_.get()); GetContentsView()->AddChildView(controls_parent_view_.get()); GetContentsView()->AddChildView(skip_ad_controls_view_.get()); @@ -461,6 +467,13 @@ UpdateControlsBounds(); // Update the surface layer bounds to scale with window size changes. + window_background_view_->SetBoundsRect( + gfx::Rect(gfx::Point(0, 0), GetBounds().size())); + video_view_->SetBoundsRect(video_bounds_); + if (video_view_->layer()->has_external_content()) + video_view_->layer()->SetSurfaceSize(video_bounds_.size()); + + // Notify the controller that the bounds have changed. controller_->UpdateLayerBounds(); } @@ -489,10 +502,10 @@ void OverlayWindowViews::UpdateControlsBounds() { // Adding an extra pixel to width/height makes sure the scrim covers the // entire window when the platform has fractional scaling applied. - gfx::Rect larger_window_bounds = GetBounds(); + gfx::Rect larger_window_bounds = + gfx::Rect(0, 0, GetBounds().width(), GetBounds().height()); larger_window_bounds.Inset(-1, -1); - controls_scrim_view_->SetBoundsRect( - gfx::Rect(gfx::Point(0, 0), larger_window_bounds.size())); + controls_scrim_view_->SetBoundsRect(larger_window_bounds); WindowQuadrant quadrant = GetCurrentWindowQuadrant(GetBounds(), controller_); back_to_tab_controls_view_->SetPosition(GetBounds().size(), quadrant); @@ -558,6 +571,9 @@ void OverlayWindowViews::Close() { views::Widget::Close(); + + if (auto* frame_sink_id = GetCurrentFrameSinkId()) + GetCompositor()->RemoveChildFrameSink(*frame_sink_id); } void OverlayWindowViews::ShowInactive() { @@ -588,10 +604,6 @@ return true; } -ui::Layer* OverlayWindowViews::GetLayer() { - return GetRootView()->layer(); -} - gfx::Rect OverlayWindowViews::GetBounds() const { return views::Widget::GetRestoredBounds(); } @@ -642,16 +654,20 @@ UpdateControlsBounds(); } -ui::Layer* OverlayWindowViews::GetWindowBackgroundLayer() { - return window_background_view_->layer(); -} +void OverlayWindowViews::SetSurfaceId(const viz::SurfaceId& surface_id) { + // TODO(https://crbug.com/925346): We also want to unregister the page that + // used to embed the video as its parent. + if (!GetCurrentFrameSinkId()) { + GetCompositor()->AddChildFrameSink(surface_id.frame_sink_id()); + } else if (*GetCurrentFrameSinkId() != surface_id.frame_sink_id()) { + GetCompositor()->RemoveChildFrameSink(*GetCurrentFrameSinkId()); + GetCompositor()->AddChildFrameSink(surface_id.frame_sink_id()); + } -ui::Layer* OverlayWindowViews::GetVideoLayer() { - return video_view_->layer(); -} - -gfx::Rect OverlayWindowViews::GetVideoBounds() { - return video_bounds_; + video_view_->layer()->SetShowSurface( + surface_id, GetBounds().size(), SK_ColorBLACK, + cc::DeadlinePolicy::UseDefaultDeadline(), + true /* stretch_content_to_fill_bounds */); } void OverlayWindowViews::OnNativeBlur() { @@ -767,7 +783,7 @@ // On Windows, ui::ET_MOUSE_EXITED is triggered when hovering over the // media controls because of the HitTest. This check ensures the controls // are visible if the mouse is still over the window. - if (!GetVideoBounds().Contains(event->location())) + if (!video_bounds_.Contains(event->location())) UpdateControlsVisibility(false); break; @@ -1010,3 +1026,18 @@ const { return muted_state_for_testing_; } + +ui::Layer* OverlayWindowViews::video_layer_for_testing() const { + return video_view_->layer(); +} + +cc::Layer* OverlayWindowViews::GetLayerForTesting() { + return GetRootView()->layer()->cc_layer_for_testing(); +} + +const viz::FrameSinkId* OverlayWindowViews::GetCurrentFrameSinkId() const { + if (auto* surface = video_view_->layer()->GetSurfaceId()) + return &surface->frame_sink_id(); + + return nullptr; +}
diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.h b/chrome/browser/ui/views/overlay/overlay_window_views.h index 09dd141..4607592 100644 --- a/chrome/browser/ui/views/overlay/overlay_window_views.h +++ b/chrome/browser/ui/views/overlay/overlay_window_views.h
@@ -45,7 +45,6 @@ void Hide() override; bool IsVisible() const override; bool IsAlwaysOnTop() const override; - ui::Layer* GetLayer() override; gfx::Rect GetBounds() const override; void UpdateVideoSize(const gfx::Size& natural_size) override; void SetPlaybackState(PlaybackState playback_state) override; @@ -54,9 +53,7 @@ void SetSkipAdButtonVisibility(bool is_visible) override; void SetNextTrackButtonVisibility(bool is_visible) override; void SetPreviousTrackButtonVisibility(bool is_visible) override; - ui::Layer* GetWindowBackgroundLayer() override; - ui::Layer* GetVideoLayer() override; - gfx::Rect GetVideoBounds() override; + void SetSurfaceId(const viz::SurfaceId& surface_id) override; // views::Widget: void OnNativeBlur() override; @@ -102,6 +99,8 @@ views::View* controls_parent_view_for_testing() const; OverlayWindowViews::PlaybackState playback_state_for_testing() const; OverlayWindowViews::MutedState muted_state_for_testing() const; + ui::Layer* video_layer_for_testing() const; + cc::Layer* GetLayerForTesting() override; private: // Determine the intended bounds of |this|. This should be called when there @@ -162,6 +161,11 @@ // state. void ToggleMute(); + // Returns the current frame sink id for the surface displayed in the + // |video_view_]. If |video_view_| is not currently displaying a surface then + // returns nullptr. + const viz::FrameSinkId* GetCurrentFrameSinkId() const; + // Not owned; |controller_| owns |this|. content::PictureInPictureWindowController* controller_;
diff --git a/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.cc index 60b1c10d..803ccc5 100644 --- a/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.cc
@@ -27,6 +27,8 @@ namespace chromeos { +constexpr StaticOobeScreenId AppDownloadingScreenView::kScreenId; + AppDownloadingScreenHandler::AppDownloadingScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.h index a4a24de..8634d27 100644 --- a/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/app_downloading_screen_handler.h
@@ -14,7 +14,8 @@ class AppDownloadingScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_APP_DOWNLOADING; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_APP_DOWNLOADING; virtual ~AppDownloadingScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc index 9b9707d..9865a343 100644 --- a/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.cc
@@ -39,6 +39,8 @@ namespace chromeos { +constexpr StaticOobeScreenId AppLaunchSplashScreenView::kScreenId; + AppLaunchSplashScreenHandler::AppLaunchSplashScreenHandler( JSCallsContainer* js_calls_container, const scoped_refptr<NetworkStateInformer>& network_state_informer,
diff --git a/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.h index 52d9c9a..814a6fd 100644 --- a/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/app_launch_splash_screen_handler.h
@@ -28,7 +28,8 @@ APP_LAUNCH_STATE_SHOWING_NETWORK_CONFIGURE_UI, }; - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_APP_LAUNCH_SPLASH; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_APP_LAUNCH_SPLASH; virtual ~AppLaunchSplashScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc index ae7fa0e..3cf432e7 100644 --- a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.cc
@@ -19,6 +19,8 @@ namespace chromeos { +constexpr StaticOobeScreenId ArcKioskSplashScreenView::kScreenId; + ArcKioskSplashScreenHandler::ArcKioskSplashScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {}
diff --git a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h index 0b0a86bc..0f86eca4 100644 --- a/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/arc_kiosk_splash_screen_handler.h
@@ -27,7 +27,8 @@ WAITING_APP_WINDOW, }; - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_ARC_KIOSK_SPLASH; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_ARC_KIOSK_SPLASH; ArcKioskSplashScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc index 7ea6598..1cad4778 100644 --- a/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.cc
@@ -44,6 +44,8 @@ namespace chromeos { +constexpr StaticOobeScreenId ArcTermsOfServiceScreenView::kScreenId; + ArcTermsOfServiceScreenHandler::ArcTermsOfServiceScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container), @@ -85,8 +87,8 @@ } void ArcTermsOfServiceScreenHandler::OnCurrentScreenChanged( - OobeScreen current_screen, - OobeScreen new_screen) { + OobeScreenId current_screen, + OobeScreenId new_screen) { if (new_screen != OobeScreen::SCREEN_GAIA_SIGNIN) return;
diff --git a/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.h index cff8cb2..d6bed17a 100644 --- a/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/arc_terms_of_service_screen_handler.h
@@ -47,7 +47,7 @@ class ArcTermsOfServiceScreenView { public: - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_ARC_TERMS_OF_SERVICE; virtual ~ArcTermsOfServiceScreenView() = default; @@ -102,8 +102,8 @@ void Bind(ArcTermsOfServiceScreen* screen) override; // OobeUI::Observer: - void OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) override; + void OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) override; void OnDestroyingOobeUI() override {} // system::TimezoneSettings::Observer:
diff --git a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc index eeb7fb6..f6955fe 100644 --- a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.cc
@@ -40,6 +40,8 @@ } // namespace +constexpr StaticOobeScreenId AssistantOptInFlowScreenView::kScreenId; + AssistantOptInFlowScreenHandler::AssistantOptInFlowScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container),
diff --git a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h index 71319f1..5e5353f 100644 --- a/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/assistant_optin_flow_screen_handler.h
@@ -23,7 +23,7 @@ // and its WebUI representation. class AssistantOptInFlowScreenView { public: - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_ASSISTANT_OPTIN_FLOW; virtual ~AssistantOptInFlowScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/auto_enrollment_check_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/auto_enrollment_check_screen_handler.cc index 0bd92519..2d2b8c6 100644 --- a/chrome/browser/ui/webui/chromeos/login/auto_enrollment_check_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/auto_enrollment_check_screen_handler.cc
@@ -10,6 +10,8 @@ namespace chromeos { +constexpr StaticOobeScreenId AutoEnrollmentCheckScreenView::kScreenId; + AutoEnrollmentCheckScreenHandler::AutoEnrollmentCheckScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/base_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/base_screen_handler.cc index 57c6e84..bf93f4d 100644 --- a/chrome/browser/ui/webui/chromeos/login/base_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/base_screen_handler.cc
@@ -10,7 +10,7 @@ namespace chromeos { -BaseScreenHandler::BaseScreenHandler(OobeScreen oobe_screen, +BaseScreenHandler::BaseScreenHandler(OobeScreenId oobe_screen, JSCallsContainer* js_calls_container) : BaseWebUIHandler(js_calls_container), oobe_screen_(oobe_screen) {}
diff --git a/chrome/browser/ui/webui/chromeos/login/base_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/base_screen_handler.h index 027f4a8b..3476168 100644 --- a/chrome/browser/ui/webui/chromeos/login/base_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/base_screen_handler.h
@@ -17,11 +17,11 @@ // to a particular OobeScreen. class BaseScreenHandler : public BaseWebUIHandler { public: - BaseScreenHandler(OobeScreen oobe_screen, + BaseScreenHandler(OobeScreenId oobe_screen, JSCallsContainer* js_calls_container); ~BaseScreenHandler() override; - OobeScreen oobe_screen() const { return oobe_screen_; } + OobeScreenId oobe_screen() const { return oobe_screen_; } void SetBaseScreen(BaseScreen* base_screen); @@ -48,7 +48,7 @@ std::string user_acted_method_path_; // OobeScreen that this handler corresponds to. - OobeScreen oobe_screen_ = OobeScreen::SCREEN_UNKNOWN; + OobeScreenId oobe_screen_ = OobeScreen::SCREEN_UNKNOWN; BaseScreen* base_screen_ = nullptr;
diff --git a/chrome/browser/ui/webui/chromeos/login/base_webui_handler.cc b/chrome/browser/ui/webui/chromeos/login/base_webui_handler.cc index 021907c..fc43edd7 100644 --- a/chrome/browser/ui/webui/chromeos/login/base_webui_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/base_webui_handler.cc
@@ -36,16 +36,16 @@ void BaseWebUIHandler::GetAdditionalParameters(base::DictionaryValue* dict) {} -void BaseWebUIHandler::ShowScreen(OobeScreen screen) { +void BaseWebUIHandler::ShowScreen(OobeScreenId screen) { ShowScreenWithData(screen, nullptr); } -void BaseWebUIHandler::ShowScreenWithData(OobeScreen screen, +void BaseWebUIHandler::ShowScreenWithData(OobeScreenId screen, const base::DictionaryValue* data) { if (!web_ui()) return; base::DictionaryValue screen_params; - screen_params.SetString("id", GetOobeScreenName(screen)); + screen_params.SetString("id", screen.name); if (data) { screen_params.SetKey("data", data->Clone()); } @@ -56,7 +56,7 @@ return static_cast<OobeUI*>(web_ui()->GetController()); } -OobeScreen BaseWebUIHandler::GetCurrentScreen() const { +OobeScreenId BaseWebUIHandler::GetCurrentScreen() const { OobeUI* oobe_ui = GetOobeUI(); if (!oobe_ui) return OobeScreen::SCREEN_UNKNOWN;
diff --git a/chrome/browser/ui/webui/chromeos/login/base_webui_handler.h b/chrome/browser/ui/webui/chromeos/login/base_webui_handler.h index 61c9eef..9bc7641 100644 --- a/chrome/browser/ui/webui/chromeos/login/base_webui_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/base_webui_handler.h
@@ -115,16 +115,17 @@ virtual void Initialize() = 0; // Show selected WebUI |screen|. - void ShowScreen(OobeScreen screen); + void ShowScreen(OobeScreenId screen); // Show selected WebUI |screen|. Pass screen initialization using the |data| // parameter. - void ShowScreenWithData(OobeScreen screen, const base::DictionaryValue* data); + void ShowScreenWithData(OobeScreenId screen, + const base::DictionaryValue* data); // Returns the OobeUI instance. OobeUI* GetOobeUI() const; // Returns current visible OOBE screen. - OobeScreen GetCurrentScreen() const; + OobeScreenId GetCurrentScreen() const; // Whether page is ready. bool page_is_ready() const { return page_is_ready_; }
diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc index 8dd92f55..ca429de 100644 --- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc
@@ -320,7 +320,7 @@ void CoreOobeHandler::HandleUpdateCurrentScreen( const std::string& screen_name) { - const OobeScreen screen = GetOobeScreenFromName(screen_name); + const OobeScreenId screen(screen_name); GetOobeUI()->CurrentScreenChanged(screen); content::ServiceManagerConnection* connection =
diff --git a/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.cc index 6bd0e9b..56bc0e1 100644 --- a/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.cc
@@ -11,6 +11,8 @@ namespace chromeos { +constexpr StaticOobeScreenId DemoPreferencesScreenView::kScreenId; + DemoPreferencesScreenView::~DemoPreferencesScreenView() = default; DemoPreferencesScreenHandler::DemoPreferencesScreenHandler(
diff --git a/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.h index 55459002..59f453f 100644 --- a/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/demo_preferences_screen_handler.h
@@ -16,7 +16,7 @@ // Interface of the demo mode preferences screen view. class DemoPreferencesScreenView { public: - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_OOBE_DEMO_PREFERENCES; virtual ~DemoPreferencesScreenView();
diff --git a/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.cc index 38627639..0d3868e 100644 --- a/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.cc
@@ -14,6 +14,8 @@ namespace chromeos { +constexpr StaticOobeScreenId DemoSetupScreenView::kScreenId; + DemoSetupScreenView::~DemoSetupScreenView() = default; DemoSetupScreenHandler::DemoSetupScreenHandler(
diff --git a/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.h index 74e2d4b..77e9095 100644 --- a/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/demo_setup_screen_handler.h
@@ -15,7 +15,8 @@ // Interface of the demo mode setup screen view. class DemoSetupScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_DEMO_SETUP; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_OOBE_DEMO_SETUP; virtual ~DemoSetupScreenView();
diff --git a/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.cc index c327e31..a0b5afe 100644 --- a/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.cc
@@ -12,6 +12,8 @@ namespace chromeos { +constexpr StaticOobeScreenId DeviceDisabledScreenView::kScreenId; + DeviceDisabledScreenHandler::DeviceDisabledScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.h index f90ad43..15760661 100644 --- a/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/device_disabled_screen_handler.h
@@ -15,7 +15,8 @@ // Interface between the device disabled screen and its representation. class DeviceDisabledScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_DEVICE_DISABLED; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_DEVICE_DISABLED; virtual ~DeviceDisabledScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.cc index 520c7c1..beb21b7 100644 --- a/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.cc
@@ -8,6 +8,8 @@ namespace chromeos { +constexpr StaticOobeScreenId DiscoverScreenView::kScreenId; + DiscoverScreenHandler::DiscoverScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.h index 495d3f6..8510831 100644 --- a/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/discover_screen_handler.h
@@ -17,7 +17,7 @@ // WebUI representation. class DiscoverScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_DISCOVER; + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_DISCOVER; virtual ~DiscoverScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.cc index 5f616a8..a8d2778 100644 --- a/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.cc
@@ -32,6 +32,8 @@ namespace chromeos { +constexpr StaticOobeScreenId EnableDebuggingScreenView::kScreenId; + EnableDebuggingScreenHandler::EnableDebuggingScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container),
diff --git a/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.h index f145b4b1e..9664897d 100644 --- a/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/enable_debugging_screen_handler.h
@@ -22,7 +22,7 @@ // Note, do not forget to call OnViewDestroyed in the dtor. class EnableDebuggingScreenView { public: - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_OOBE_ENABLE_DEBUGGING; virtual ~EnableDebuggingScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc index eadeaee..638501b 100644 --- a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.cc
@@ -253,6 +253,8 @@ namespace chromeos { +constexpr StaticOobeScreenId EncryptionMigrationScreenView::kScreenId; + EncryptionMigrationScreenHandler::EncryptionMigrationScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container),
diff --git a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h index 68916602..cdfafacc 100644 --- a/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/encryption_migration_screen_handler.h
@@ -37,7 +37,7 @@ using ContinueLoginCallback = base::OnceCallback<void(const UserContext&)>; using RestartLoginCallback = base::OnceCallback<void(const UserContext&)>; - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_ENCRYPTION_MIGRATION; virtual ~EncryptionMigrationScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc index bb90faa..c8065702 100644 --- a/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
@@ -170,6 +170,8 @@ } // namespace +constexpr StaticOobeScreenId EnrollmentScreenView::kScreenId; + // EnrollmentScreenHandler, public ------------------------------ EnrollmentScreenHandler::EnrollmentScreenHandler(
diff --git a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc index 1ed2833..e15b21036 100644 --- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.cc
@@ -15,6 +15,8 @@ namespace chromeos { +constexpr StaticOobeScreenId ErrorScreenView::kScreenId; + ErrorScreenHandler::ErrorScreenHandler(JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) { set_user_acted_method_path("login.ErrorMessageScreen.userActed"); @@ -52,7 +54,7 @@ BaseScreenHandler::SetBaseScreen(nullptr); } -void ErrorScreenHandler::ShowOobeScreen(OobeScreen screen) { +void ErrorScreenHandler::ShowOobeScreen(OobeScreenId screen) { ShowScreen(screen); }
diff --git a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.h index b31cd28d..9db0b684 100644 --- a/chrome/browser/ui/webui/chromeos/login/error_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/error_screen_handler.h
@@ -17,7 +17,8 @@ // representation. Owned by ErrorScreen. class ErrorScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_ERROR_MESSAGE; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_ERROR_MESSAGE; virtual ~ErrorScreenView() {} @@ -34,7 +35,7 @@ virtual void Unbind() = 0; // Switches to |screen|. - virtual void ShowOobeScreen(OobeScreen screen) = 0; + virtual void ShowOobeScreen(OobeScreenId screen) = 0; // Sets current error state of the screen. virtual void SetErrorStateCode(NetworkError::ErrorState error_state) = 0; @@ -69,7 +70,7 @@ void Hide() override; void Bind(ErrorScreen* screen) override; void Unbind() override; - void ShowOobeScreen(OobeScreen screen) override; + void ShowOobeScreen(OobeScreenId screen) override; void SetErrorStateCode(NetworkError::ErrorState error_state) override; void SetErrorStateNetwork(const std::string& network_name) override; void SetGuestSigninAllowed(bool value) override;
diff --git a/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc index bec7655..e0638ca 100644 --- a/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc
@@ -27,6 +27,8 @@ namespace chromeos { +constexpr StaticOobeScreenId EulaView::kScreenId; + EulaScreenHandler::EulaScreenHandler(JSCallsContainer* js_calls_container, CoreOobeView* core_oobe_view) : BaseScreenHandler(kScreenId, js_calls_container),
diff --git a/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h index 4d77296b..e6aea40f 100644 --- a/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h
@@ -27,7 +27,7 @@ // dtor. class EulaView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_EULA; + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_OOBE_EULA; virtual ~EulaView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc index 3a5f917..df238a1 100644 --- a/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.cc
@@ -47,6 +47,8 @@ namespace chromeos { +constexpr StaticOobeScreenId FingerprintSetupScreenView::kScreenId; + FingerprintSetupScreenHandler::FingerprintSetupScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h index 8eb35772..c13329e 100644 --- a/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h
@@ -18,7 +18,8 @@ // WebUI representation. class FingerprintSetupScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_FINGERPRINT_SETUP; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_FINGERPRINT_SETUP; virtual ~FingerprintSetupScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc index 4b7654a..d687bea 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -240,6 +240,8 @@ } // namespace +constexpr StaticOobeScreenId GaiaView::kScreenId; + // A class that's used to specify the way how Gaia should be loaded. struct GaiaScreenHandler::GaiaContext { GaiaContext();
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h index 6f2a772..b5d2ba0 100644 --- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.h
@@ -36,7 +36,8 @@ class GaiaView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_GAIA_SIGNIN; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_GAIA_SIGNIN; GaiaView() = default; virtual ~GaiaView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc index 5664949..2025c505 100644 --- a/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.cc
@@ -22,6 +22,8 @@ namespace chromeos { +constexpr StaticOobeScreenId HIDDetectionView::kScreenId; + HIDDetectionScreenHandler::HIDDetectionScreenHandler( JSCallsContainer* js_calls_container, CoreOobeView* core_oobe_view)
diff --git a/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h index 8dbda25..55d60aa4 100644 --- a/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/hid_detection_screen_handler.h
@@ -24,7 +24,8 @@ // dtor. class HIDDetectionView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_HID_DETECTION; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_OOBE_HID_DETECTION; virtual ~HIDDetectionView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.cc index 5d503645..865def1b 100644 --- a/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.cc
@@ -27,6 +27,8 @@ namespace chromeos { +constexpr StaticOobeScreenId KioskAutolaunchScreenView::kScreenId; + KioskAutolaunchScreenHandler::KioskAutolaunchScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h index b841c25..11ad4ab0 100644 --- a/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/kiosk_autolaunch_screen_handler.h
@@ -19,7 +19,8 @@ // Note, do not forget to call OnViewDestroyed in the dtor. class KioskAutolaunchScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_KIOSK_AUTOLAUNCH; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_KIOSK_AUTOLAUNCH; virtual ~KioskAutolaunchScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.cc index 82951c24..476a82c 100644 --- a/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.cc
@@ -20,6 +20,8 @@ namespace chromeos { +constexpr StaticOobeScreenId KioskEnableScreenView::kScreenId; + KioskEnableScreenHandler::KioskEnableScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container),
diff --git a/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h index c82e3f1..ca852c8 100644 --- a/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/kiosk_enable_screen_handler.h
@@ -19,7 +19,8 @@ // Note, do not forget to call OnViewDestroyed in the dtor. class KioskEnableScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_KIOSK_ENABLE; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_KIOSK_ENABLE; virtual ~KioskEnableScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.cc index d0cdb09..01da3bd 100644 --- a/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.cc
@@ -10,6 +10,8 @@ namespace chromeos { +constexpr StaticOobeScreenId MarketingOptInScreenView::kScreenId; + MarketingOptInScreenHandler::MarketingOptInScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.h index 3f934b9e..bf08657 100644 --- a/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/marketing_opt_in_screen_handler.h
@@ -16,7 +16,8 @@ // WebUI representation. class MarketingOptInScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_MARKETING_OPT_IN; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_MARKETING_OPT_IN; virtual ~MarketingOptInScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc index 4ceafb89..030ddf0c 100644 --- a/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.cc
@@ -11,6 +11,8 @@ namespace chromeos { +constexpr StaticOobeScreenId MultiDeviceSetupScreenView::kScreenId; + MultiDeviceSetupScreenHandler::MultiDeviceSetupScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h index 3b0579e..bd11dc7 100644 --- a/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/multidevice_setup_screen_handler.h
@@ -16,7 +16,8 @@ // WebUI representation. class MultiDeviceSetupScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_MULTIDEVICE_SETUP; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_MULTIDEVICE_SETUP; virtual ~MultiDeviceSetupScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc index 02cd99f7..007078bc 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.cc
@@ -19,6 +19,8 @@ namespace chromeos { +constexpr StaticOobeScreenId NetworkScreenView::kScreenId; + NetworkScreenHandler::NetworkScreenHandler(JSCallsContainer* js_calls_container, CoreOobeView* core_oobe_view) : BaseScreenHandler(kScreenId, js_calls_container),
diff --git a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h index 94e179f..5a7c8d0 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/network_screen_handler.h
@@ -17,7 +17,8 @@ // Interface of network screen. Owned by NetworkScreen. class NetworkScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_NETWORK; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_OOBE_NETWORK; virtual ~NetworkScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc index 059aa11..8e2a4e5 100644 --- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc +++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -583,7 +583,7 @@ handler->InitializeBase(); } -void OobeUI::CurrentScreenChanged(OobeScreen new_screen) { +void OobeUI::CurrentScreenChanged(OobeScreenId new_screen) { previous_screen_ = current_screen_; current_screen_ = new_screen; @@ -591,7 +591,7 @@ observer.OnCurrentScreenChanged(current_screen_, new_screen); } -bool OobeUI::IsScreenInitialized(OobeScreen screen) { +bool OobeUI::IsScreenInitialized(OobeScreenId screen) { for (BaseScreenHandler* handler : screen_handlers_) { if (handler->oobe_screen() == screen) { return handler->page_is_ready();
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h index 88d13769..6361eae 100644 --- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h +++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
@@ -58,8 +58,8 @@ class Observer { public: Observer() {} - virtual void OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) = 0; + virtual void OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) = 0; virtual void OnDestroyingOobeUI() = 0; @@ -81,9 +81,9 @@ void InitializeHandlers(); // Called when the screen has changed. - void CurrentScreenChanged(OobeScreen screen); + void CurrentScreenChanged(OobeScreenId screen); - bool IsScreenInitialized(OobeScreen screen); + bool IsScreenInitialized(OobeScreenId screen); bool IsJSReady(const base::Closure& display_is_ready_callback); @@ -105,9 +105,9 @@ void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); - OobeScreen current_screen() const { return current_screen_; } + OobeScreenId current_screen() const { return current_screen_; } - OobeScreen previous_screen() const { return previous_screen_; } + OobeScreenId previous_screen() const { return previous_screen_; } const std::string& display_type() const { return display_type_; } @@ -137,14 +137,13 @@ // Find a handler instance. template <typename THandler> THandler* GetHandler() { - OobeScreen expected_screen = THandler::kScreenId; + OobeScreenId expected_screen = THandler::kScreenId; for (BaseScreenHandler* handler : screen_handlers_) { if (expected_screen == handler->oobe_screen()) return static_cast<THandler*>(handler); } - NOTREACHED() << "Unable to find handler for screen " - << GetOobeScreenName(expected_screen); + NOTREACHED() << "Unable to find handler for screen " << expected_screen; return nullptr; } @@ -184,10 +183,10 @@ std::unique_ptr<ErrorScreen> error_screen_; // Id of the current oobe/login screen. - OobeScreen current_screen_ = OobeScreen::SCREEN_UNKNOWN; + OobeScreenId current_screen_ = OobeScreen::SCREEN_UNKNOWN; // Id of the previous oobe/login screen. - OobeScreen previous_screen_ = OobeScreen::SCREEN_UNKNOWN; + OobeScreenId previous_screen_ = OobeScreen::SCREEN_UNKNOWN; // Flag that indicates whether JS part is fully loaded and ready to accept // calls.
diff --git a/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc index 0a97448d..d8a5fa1 100644 --- a/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.cc
@@ -71,6 +71,8 @@ namespace chromeos { +constexpr StaticOobeScreenId RecommendAppsScreenView::kScreenId; + RecommendAppsScreenHandler::RecommendAppsScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h index 23b672f..2f7231b 100644 --- a/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h
@@ -18,7 +18,8 @@ // WebUI representation. class RecommendAppsScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_RECOMMEND_APPS; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_RECOMMEND_APPS; virtual ~RecommendAppsScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc index 187aa5d..8187335 100644 --- a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.cc
@@ -19,6 +19,8 @@ namespace chromeos { +constexpr StaticOobeScreenId ResetView::kScreenId; + ResetScreenHandler::ResetScreenHandler(JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) { set_user_acted_method_path("login.ResetScreen.userActed");
diff --git a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h index c9ea00c..3c820bb 100644 --- a/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h
@@ -19,7 +19,7 @@ // representation, either views based or WebUI. class ResetView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_RESET; + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_OOBE_RESET; virtual ~ResetView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc index 8ca1c8c3c..b25784e 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -188,7 +188,7 @@ frame_error == net::ERR_TUNNEL_CONNECTION_FAILED)); } -bool IsSigninScreen(const OobeScreen screen) { +bool IsSigninScreen(const OobeScreenId screen) { return screen == OobeScreen::SCREEN_GAIA_SIGNIN || screen == OobeScreen::SCREEN_ACCOUNT_PICKER; } @@ -820,8 +820,8 @@ registry->RegisterDictionaryPref(prefs::kUsersLastInputMethod); } -void SigninScreenHandler::OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) { +void SigninScreenHandler::OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) { if (new_screen == OobeScreen::SCREEN_ACCOUNT_PICKER) { // Restore active IME state if returning to user pod row screen. input_method::InputMethodManager::Get()->SetState(ime_state_);
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h index 9256d90..c2ab54e 100644 --- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
@@ -221,8 +221,8 @@ static void RegisterPrefs(PrefRegistrySimple* registry); // OobeUI::Observer implementation: - void OnCurrentScreenChanged(OobeScreen current_screen, - OobeScreen new_screen) override; + void OnCurrentScreenChanged(OobeScreenId current_screen, + OobeScreenId new_screen) override; void OnDestroyingOobeUI() override {} // ash::mojom::WallpaperObserver implementation:
diff --git a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc index afbd0859..e12cdea 100644 --- a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.cc
@@ -27,6 +27,8 @@ namespace chromeos { +constexpr StaticOobeScreenId SupervisionTransitionScreenView::kScreenId; + SupervisionTransitionScreenHandler::SupervisionTransitionScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h index 502e70fd..5796eb1c 100644 --- a/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h
@@ -23,7 +23,7 @@ // and its WebUI representation. class SupervisionTransitionScreenView { public: - constexpr static OobeScreen kScreenId = + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_SUPERVISION_TRANSITION; virtual ~SupervisionTransitionScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.cc index b9f404d..2ec300f 100644 --- a/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.cc
@@ -55,6 +55,8 @@ namespace chromeos { +constexpr StaticOobeScreenId SyncConsentScreenView::kScreenId; + SyncConsentScreenHandler::SyncConsentScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h index fa73bb4..a90acd5 100644 --- a/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h
@@ -18,7 +18,8 @@ // WebUI representation. class SyncConsentScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_SYNC_CONSENT; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_SYNC_CONSENT; virtual ~SyncConsentScreenView() = default;
diff --git a/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.cc index 8811d88..e384545e 100644 --- a/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.cc
@@ -33,6 +33,8 @@ namespace chromeos { +constexpr StaticOobeScreenId TermsOfServiceScreenView::kScreenId; + TermsOfServiceScreenHandler::TermsOfServiceScreenHandler( JSCallsContainer* js_calls_container, CoreOobeView* core_oobe_view)
diff --git a/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h index a26fdf6..616b58c 100644 --- a/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h
@@ -21,7 +21,8 @@ // WebUI representation. class TermsOfServiceScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_TERMS_OF_SERVICE; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_TERMS_OF_SERVICE; virtual ~TermsOfServiceScreenView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.cc index a91034af..1a557a31 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.cc
@@ -15,6 +15,8 @@ namespace chromeos { +constexpr StaticOobeScreenId UpdateRequiredView::kScreenId; + UpdateRequiredScreenHandler::UpdateRequiredScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.h index 7b05a5a..c188346 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/update_required_screen_handler.h
@@ -21,7 +21,8 @@ class UpdateRequiredView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_UPDATE_REQUIRED; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_UPDATE_REQUIRED; virtual ~UpdateRequiredView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc index caa21e6..dc272b0 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.cc
@@ -15,6 +15,8 @@ namespace chromeos { +constexpr StaticOobeScreenId UpdateView::kScreenId; + UpdateScreenHandler::UpdateScreenHandler(JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) { set_user_acted_method_path("login.UpdateScreen.userActed");
diff --git a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h index b8bec37..d12758e 100644 --- a/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/update_screen_handler.h
@@ -19,7 +19,8 @@ // representation. Owned by UpdateScreen. class UpdateView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_UPDATE; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_OOBE_UPDATE; virtual ~UpdateView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/user_board_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/user_board_screen_handler.cc index 857cdfe0..bea38eec 100644 --- a/chrome/browser/ui/webui/chromeos/login/user_board_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/user_board_screen_handler.cc
@@ -9,6 +9,8 @@ namespace chromeos { +constexpr StaticOobeScreenId UserBoardView::kScreenId; + UserBoardScreenHandler::UserBoardScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container), weak_factory_(this) {}
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc index e9c476d..cf6cf3e 100644 --- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.cc
@@ -37,6 +37,8 @@ namespace chromeos { +constexpr StaticOobeScreenId WelcomeView::kScreenId; + // WelcomeScreenHandler, public: ----------------------------------------------- WelcomeScreenHandler::WelcomeScreenHandler(JSCallsContainer* js_calls_container,
diff --git a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h index b3313a6..efecb62 100644 --- a/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/welcome_screen_handler.h
@@ -23,7 +23,8 @@ // Interface for WelcomeScreenHandler. class WelcomeView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_OOBE_WELCOME; + constexpr static StaticOobeScreenId kScreenId = + OobeScreen::SCREEN_OOBE_WELCOME; virtual ~WelcomeView() {}
diff --git a/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.cc index 1851eed..e1b8a87d 100644 --- a/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.cc +++ b/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.cc
@@ -11,6 +11,8 @@ namespace chromeos { +constexpr StaticOobeScreenId WrongHWIDScreenView::kScreenId; + WrongHWIDScreenHandler::WrongHWIDScreenHandler( JSCallsContainer* js_calls_container) : BaseScreenHandler(kScreenId, js_calls_container) {
diff --git a/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h index 12e68a51..73ebaa4 100644 --- a/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h +++ b/chrome/browser/ui/webui/chromeos/login/wrong_hwid_screen_handler.h
@@ -18,7 +18,7 @@ // Note, do not forget to call OnViewDestroyed in the dtor. class WrongHWIDScreenView { public: - constexpr static OobeScreen kScreenId = OobeScreen::SCREEN_WRONG_HWID; + constexpr static StaticOobeScreenId kScreenId = OobeScreen::SCREEN_WRONG_HWID; virtual ~WrongHWIDScreenView() {}
diff --git a/chrome/browser/ui/webui/discards/OWNERS b/chrome/browser/ui/webui/discards/OWNERS index 763236c6..4406fd7e 100644 --- a/chrome/browser/ui/webui/discards/OWNERS +++ b/chrome/browser/ui/webui/discards/OWNERS
@@ -1,4 +1,4 @@ -file://services/resource_coordinator/OWNERS +file://chrome/browser/performance_manager/OWNERS per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/chrome/common/extensions/api/autotest_private.idl b/chrome/common/extensions/api/autotest_private.idl index 4b78056d..856f6600 100644 --- a/chrome/common/extensions/api/autotest_private.idl +++ b/chrome/common/extensions/api/autotest_private.idl
@@ -8,6 +8,10 @@ implemented_in="chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h"] namespace autotestPrivate { + enum ShelfAlignmentType { + Bottom, Left, Right, BottomLocked + }; + dictionary LoginStatusDict { // Are we logged in? boolean isLoggedIn; @@ -166,6 +170,8 @@ callback GetShelfAutoHideBehaviorCallback = void (DOMString behavior); + callback GetShelfAlignmentCallback = void (ShelfAlignmentType alignment); + callback VoidCallback = void (); interface Functions { @@ -372,6 +378,19 @@ static void setShelfAutoHideBehavior(DOMString displayId, DOMString behavior, VoidCallback callback); + // Get the shelf alignment. + // |displayId|: display that contains the shelf. + // |callback| is invoked with the shelf alignment type. + static void getShelfAlignment(DOMString displayId, + GetShelfAlignmentCallback callback); + + // Set the shelf alignment. + // |displayId|: display that contains the shelf. + // |alignment|: the type of alignment to set. + // |callback|: Called when the operation has completed. + static void setShelfAlignment(DOMString displayId, + ShelfAlignmentType alignment, VoidCallback callback); + // Show virtual keyboard of the current input method if it's available. static void showVirtualKeyboardIfEnabled(); };
diff --git a/chrome/common/extensions/api/extension_action/action_info.cc b/chrome/common/extensions/api/extension_action/action_info.cc index d108f433..e51cf98 100644 --- a/chrome/common/extensions/api/extension_action/action_info.cc +++ b/chrome/common/extensions/api/extension_action/action_info.cc
@@ -24,8 +24,8 @@ constexpr char kEnabled[] = "enabled"; constexpr char kDisabled[] = "disabled"; -// The manifest data container for the ActionInfos for BrowserActions, -// PageActions and SystemIndicators. +// The manifest data container for the ActionInfos for BrowserActions and +// PageActions. struct ActionInfoData : public Extension::ManifestData { explicit ActionInfoData(std::unique_ptr<ActionInfo> action_info); ~ActionInfoData() override; @@ -164,12 +164,6 @@ } // static -const ActionInfo* ActionInfo::GetSystemIndicatorInfo( - const Extension* extension) { - return GetActionInfo(extension, keys::kSystemIndicator); -} - -// static void ActionInfo::SetExtensionActionInfo(Extension* extension, std::unique_ptr<ActionInfo> info) { extension->SetManifestData(keys::kAction, @@ -191,13 +185,6 @@ } // static -void ActionInfo::SetSystemIndicatorInfo(Extension* extension, - std::unique_ptr<ActionInfo> info) { - extension->SetManifestData(keys::kSystemIndicator, - std::make_unique<ActionInfoData>(std::move(info))); -} - -// static bool ActionInfo::IsVerboseInstallMessage(const Extension* extension) { const ActionInfo* page_action_info = GetPageActionInfo(extension); return page_action_info &&
diff --git a/chrome/common/extensions/api/extension_action/action_info.h b/chrome/common/extensions/api/extension_action/action_info.h index 6be0b7b..344fefb 100644 --- a/chrome/common/extensions/api/extension_action/action_info.h +++ b/chrome/common/extensions/api/extension_action/action_info.h
@@ -30,7 +30,6 @@ enum Type { TYPE_BROWSER, TYPE_PAGE, - TYPE_SYSTEM_INDICATOR, }; enum DefaultState { @@ -44,8 +43,7 @@ base::string16* error); // Returns any action associated with the extension, whether it's specified - // under the "page_action", "browser_action", or "action" key (note this does - // *not* check system indicator). + // under the "page_action", "browser_action", or "action" key. // TODO(devlin): This is a crutch while moving away from the distinct action // types. Remove it when that's done. static const ActionInfo* GetAnyActionInfo(const Extension* extension); @@ -59,9 +57,6 @@ // Returns the extension's page action, if any. static const ActionInfo* GetPageActionInfo(const Extension* extension); - // Returns the extension's system indicator, if any. - static const ActionInfo* GetSystemIndicatorInfo(const Extension* extension); - // Sets the extension's action. static void SetExtensionActionInfo(Extension* extension, std::unique_ptr<ActionInfo> info); @@ -74,10 +69,6 @@ static void SetPageActionInfo(Extension* extension, std::unique_ptr<ActionInfo> info); - // Sets the extension's system indicator. - static void SetSystemIndicatorInfo(Extension* extension, - std::unique_ptr<ActionInfo> info); - // Returns true if the extension needs a verbose install message because // of its page action. static bool IsVerboseInstallMessage(const Extension* extension);
diff --git a/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc b/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc index e96dcb5..9269b42 100644 --- a/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc +++ b/chrome/common/extensions/api/system_indicator/system_indicator_handler.cc
@@ -8,35 +8,96 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" -#include "chrome/common/extensions/api/extension_action/action_info.h" +#include "extensions/common/constants.h" #include "extensions/common/extension.h" +#include "extensions/common/extension_icon_set.h" #include "extensions/common/manifest_constants.h" +#include "extensions/common/manifest_handler_helpers.h" namespace extensions { +namespace { + +struct SystemIndicatorInfo : public Extension::ManifestData { + SystemIndicatorInfo(); + ~SystemIndicatorInfo() override; + + ExtensionIconSet icon_set; + + DISALLOW_COPY_AND_ASSIGN(SystemIndicatorInfo); +}; + +SystemIndicatorInfo::SystemIndicatorInfo() {} +SystemIndicatorInfo::~SystemIndicatorInfo() = default; + +} // namespace + SystemIndicatorHandler::SystemIndicatorHandler() { } SystemIndicatorHandler::~SystemIndicatorHandler() { } +const ExtensionIconSet* SystemIndicatorHandler::GetSystemIndicatorIcon( + const Extension& extension) { + const auto* info = static_cast<SystemIndicatorInfo*>( + extension.GetManifestData(manifest_keys::kSystemIndicator)); + return info ? &info->icon_set : nullptr; +} + bool SystemIndicatorHandler::Parse(Extension* extension, base::string16* error) { - const base::DictionaryValue* system_indicator_value = NULL; + const base::DictionaryValue* system_indicator_value = nullptr; if (!extension->manifest()->GetDictionary( manifest_keys::kSystemIndicator, &system_indicator_value)) { *error = base::ASCIIToUTF16(manifest_errors::kInvalidSystemIndicator); return false; } - std::unique_ptr<ActionInfo> action_info = - ActionInfo::Load(extension, system_indicator_value, error); + auto set_manifest_data = [extension](const ExtensionIconSet& icon_set) { + auto info = std::make_unique<SystemIndicatorInfo>(); + info->icon_set = icon_set; + extension->SetManifestData(manifest_keys::kSystemIndicator, + std::move(info)); + }; - if (!action_info.get()) - return false; + const base::Value* icon_value = + system_indicator_value->FindKey(manifest_keys::kActionDefaultIcon); + if (!icon_value) { + // Empty icon set. + set_manifest_data(ExtensionIconSet()); + return true; + } - ActionInfo::SetSystemIndicatorInfo(extension, std::move(action_info)); - return true; + // The |default_icon| value can be either dictionary {icon size -> icon path} + // or a non-empty string value. + ExtensionIconSet icons; + if (icon_value->is_dict()) { + if (!manifest_handler_helpers::LoadIconsFromDictionary( + static_cast<const base::DictionaryValue*>(icon_value), &icons, + error)) { + return false; + } + set_manifest_data(icons); + return true; + } + + if (icon_value->is_string()) { + std::string default_icon = icon_value->GetString(); + if (!manifest_handler_helpers::NormalizeAndValidatePath(&default_icon)) { + *error = base::ASCIIToUTF16(manifest_errors::kInvalidActionDefaultIcon); + return false; + } + // Choose the most optimistic (highest) icon density regardless of the + // actual icon resolution, whatever that happens to be. Code elsewhere + // knows how to scale down to 19. + icons.Add(extension_misc::EXTENSION_ICON_GIGANTOR, default_icon); + set_manifest_data(icons); + return true; + } + + *error = base::ASCIIToUTF16(manifest_errors::kInvalidActionDefaultIcon); + return false; } base::span<const char* const> SystemIndicatorHandler::Keys() const {
diff --git a/chrome/common/extensions/api/system_indicator/system_indicator_handler.h b/chrome/common/extensions/api/system_indicator/system_indicator_handler.h index fc3be9c2e..b6c4b27b 100644 --- a/chrome/common/extensions/api/system_indicator/system_indicator_handler.h +++ b/chrome/common/extensions/api/system_indicator/system_indicator_handler.h
@@ -10,6 +10,8 @@ #include "extensions/common/extension.h" #include "extensions/common/manifest_handler.h" +class ExtensionIconSet; + namespace extensions { // Parses the "system_indicator" manifest key. @@ -18,6 +20,14 @@ SystemIndicatorHandler(); ~SystemIndicatorHandler() override; + // Returns the default system indicator icon for the given |extension|, if + // the extension has a system indicator, and null otherwise. Note that if the + // extension has a system indicator, the result is never null (though the + // set may be empty). + static const ExtensionIconSet* GetSystemIndicatorIcon( + const Extension& extension); + + // ManifestHandler: bool Parse(Extension* extension, base::string16* error) override; private:
diff --git a/chrome/common/extensions/api/system_indicator/system_indicator_handler_unittest.cc b/chrome/common/extensions/api/system_indicator/system_indicator_handler_unittest.cc new file mode 100644 index 0000000..60af0df --- /dev/null +++ b/chrome/common/extensions/api/system_indicator/system_indicator_handler_unittest.cc
@@ -0,0 +1,94 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/extensions/api/system_indicator/system_indicator_handler.h" + +#include "base/test/values_test_util.h" +#include "components/version_info/channel.h" +#include "extensions/common/constants.h" +#include "extensions/common/extension_icon_set.h" +#include "extensions/common/features/feature_channel.h" +#include "extensions/common/manifest_test.h" +#include "testing/gmock/include/gmock/gmock.h" + +namespace extensions { + +using SystemIndicatorHandlerTest = ManifestTest; + +TEST_F(SystemIndicatorHandlerTest, BasicTests) { + ScopedCurrentChannel current_channel(version_info::Channel::DEV); + + // Simple icon path. + { + constexpr char kManifest[] = + R"({ + "name": "System Indicator", + "manifest_version": 2, + "version": "0.1", + "system_indicator": { "default_icon": "icon.png" } + })"; + scoped_refptr<const Extension> extension = LoadAndExpectSuccess( + ManifestData(base::test::ParseJson(kManifest), "icon")); + ASSERT_TRUE(extension); + const ExtensionIconSet* icon = + SystemIndicatorHandler::GetSystemIndicatorIcon(*extension); + ASSERT_TRUE(icon); + // Make a copy of the map since [] is more readable than find() for + // comparing values. + ExtensionIconSet::IconMap icon_map = icon->map(); + EXPECT_THAT(icon_map, + testing::ElementsAre(std::make_pair( + extension_misc::EXTENSION_ICON_GIGANTOR, "icon.png"))); + } + + // Icon dictionary. + { + constexpr char kManifest[] = + R"({ + "name": "System Indicator", + "manifest_version": 2, + "version": "0.1", + "system_indicator": { + "default_icon": { + "24": "icon24.png", + "48": "icon48.png", + "79": "icon79.png" + } + } + })"; + scoped_refptr<const Extension> extension = LoadAndExpectSuccess( + ManifestData(base::test::ParseJson(kManifest), "icon")); + ASSERT_TRUE(extension); + const ExtensionIconSet* icon = + SystemIndicatorHandler::GetSystemIndicatorIcon(*extension); + ASSERT_TRUE(icon); + // Make a copy of the map since [] is more readable than find() for + // comparing values. + ExtensionIconSet::IconMap icon_map = icon->map(); + EXPECT_THAT(icon_map, + testing::ElementsAre(std::make_pair(24, "icon24.png"), + std::make_pair(48, "icon48.png"), + std::make_pair(79, "icon79.png"))); + } + + // Empty dictionary. + { + constexpr char kManifest[] = + R"({ + "name": "System Indicator", + "manifest_version": 2, + "version": "0.1", + "system_indicator": {} + })"; + scoped_refptr<const Extension> extension = LoadAndExpectSuccess( + ManifestData(base::test::ParseJson(kManifest), "icon")); + ASSERT_TRUE(extension); + const ExtensionIconSet* icon = + SystemIndicatorHandler::GetSystemIndicatorIcon(*extension); + ASSERT_TRUE(icon); + EXPECT_TRUE(icon->empty()); + } +} + +} // namespace extensions
diff --git a/chrome/common/features.gni b/chrome/common/features.gni index e62b5a4..628c4e2c 100644 --- a/chrome/common/features.gni +++ b/chrome/common/features.gni
@@ -43,7 +43,7 @@ enable_one_click_signin = is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast) - enable_service_discovery = (enable_mdns && !is_android && !is_ios) || is_mac + enable_service_discovery = (enable_mdns && !is_android) || is_mac # Enables use of the session service, which is enabled by default. # Android stores them separately on the Java side.
diff --git a/chrome/common/instant_struct_traits.h b/chrome/common/instant_struct_traits.h index 698800bf..961d1589 100644 --- a/chrome/common/instant_struct_traits.h +++ b/chrome/common/instant_struct_traits.h
@@ -20,6 +20,9 @@ IPC_ENUM_TRAITS_MAX_VALUE(NTPLoggingEventType, NTP_EVENT_TYPE_LAST) +IPC_ENUM_TRAITS_MAX_VALUE(NTPSuggestionsLoggingEventType, + NTPSuggestionsLoggingEventType::kMaxValue) + IPC_ENUM_TRAITS_MAX_VALUE(ntp_tiles::TileTitleSource, ntp_tiles::TileTitleSource::LAST)
diff --git a/chrome/common/media_router/discovery/media_sink_internal.h b/chrome/common/media_router/discovery/media_sink_internal.h index a472aae..5dce50cd 100644 --- a/chrome/common/media_router/discovery/media_sink_internal.h +++ b/chrome/common/media_router/discovery/media_sink_internal.h
@@ -90,6 +90,9 @@ const MediaSink& sink() const { return sink_; } MediaSink& sink() { return sink_; } + // TOOD(jrw): Use this method where appropriate. + const MediaSink::Id& id() const { return sink_.id(); } + void set_dial_data(const DialSinkExtraData& dial_data); // Must only be called if the sink is a DIAL sink.
diff --git a/chrome/common/search.mojom b/chrome/common/search.mojom index c94ff17..6b7f168 100644 --- a/chrome/common/search.mojom +++ b/chrome/common/search.mojom
@@ -12,6 +12,9 @@ enum NTPLoggingEventType; [Native] +enum NTPSuggestionsLoggingEventType; + +[Native] enum OmniboxFocusState; [Native] @@ -77,6 +80,14 @@ NTPLoggingEventType event, mojo_base.mojom.TimeDelta time); + // Logs events related to search suggestions from InstantExtended New Tab + // Pages along with an integer value. These events currently include number + // of suggestion chips shown and the index of chips that were clicked. + LogSuggestionEventWithValue(int32 page_seq_no, + NTPSuggestionsLoggingEventType event, + int32 data, + mojo_base.mojom.TimeDelta time); + // Logs an impression on one of the Most Visited tile on the InstantExtended // New Tab Page. LogMostVisitedImpression(int32 page_seq_no, NTPTileImpression impression);
diff --git a/chrome/common/search.typemap b/chrome/common/search.typemap index 808df6e..680cc1d 100644 --- a/chrome/common/search.typemap +++ b/chrome/common/search.typemap
@@ -16,6 +16,7 @@ ] type_mappings = [ "chrome.mojom.NTPLoggingEventType=::NTPLoggingEventType", + "chrome.mojom.NTPSuggestionsLoggingEventType=::NTPSuggestionsLoggingEventType", "chrome.mojom.NTPTileImpression=::ntp_tiles::NTPTileImpression", "chrome.mojom.OmniboxFocusState=::OmniboxFocusState", "chrome.mojom.OmniboxFocusChangeReason=::OmniboxFocusChangeReason",
diff --git a/chrome/common/search/ntp_logging_events.h b/chrome/common/search/ntp_logging_events.h index 5e6e11b..40873c4c 100644 --- a/chrome/common/search/ntp_logging_events.h +++ b/chrome/common/search/ntp_logging_events.h
@@ -136,4 +136,16 @@ NTP_EVENT_TYPE_LAST = NTP_MIDDLE_SLOT_PROMO_LINK_CLICKED }; +// The different types of events that are logged for NTP search suggestions, +// such as number of chips shown and the index of chips that are clicked. This +// enum is used to transfer information from the NTP javascript to the renderer +// and is *not* used as a UMA enum histogram's logged value. These events may be +// logged by javascript served from GWS, see +// google3/java/com/google/gws/plugins/newtab/suggestions.js. +enum class NTPSuggestionsLoggingEventType { + kShownCount = 0, + kIndexClicked = 1, + kMaxValue = kIndexClicked, +}; + #endif // CHROME_COMMON_SEARCH_NTP_LOGGING_EVENTS_H_
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc index f58352d9..a9a24e1 100644 --- a/chrome/renderer/searchbox/searchbox.cc +++ b/chrome/renderer/searchbox/searchbox.cc
@@ -221,6 +221,17 @@ embedded_search_service_->LogEvent(page_seq_no_, event, delta); } +void SearchBox::LogSuggestionEventWithValue( + NTPSuggestionsLoggingEventType event, + int data) { + base::Time navigation_start = base::Time::FromDoubleT( + render_frame()->GetWebFrame()->Performance().NavigationStart()); + base::Time now = base::Time::Now(); + base::TimeDelta delta = now - navigation_start; + embedded_search_service_->LogSuggestionEventWithValue(page_seq_no_, event, + data, delta); +} + void SearchBox::LogMostVisitedImpression( const ntp_tiles::NTPTileImpression& impression) { embedded_search_service_->LogMostVisitedImpression(page_seq_no_, impression);
diff --git a/chrome/renderer/searchbox/searchbox.h b/chrome/renderer/searchbox/searchbox.h index 1a8fd427..2575d72 100644 --- a/chrome/renderer/searchbox/searchbox.h +++ b/chrome/renderer/searchbox/searchbox.h
@@ -47,6 +47,10 @@ // Sends LogEvent to the browser. void LogEvent(NTPLoggingEventType event); + // Sends LogSuggestionEventWithValue to the browser. + void LogSuggestionEventWithValue(NTPSuggestionsLoggingEventType event, + int data); + // Sends LogMostVisitedImpression to the browser. void LogMostVisitedImpression(const ntp_tiles::NTPTileImpression& impression);
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc index 7311716..6f843b8 100644 --- a/chrome/renderer/searchbox/searchbox_extension.cc +++ b/chrome/renderer/searchbox/searchbox_extension.cc
@@ -569,6 +569,7 @@ static void ResetCustomLinks(); static std::string FixupAndValidateUrl(const std::string& url); static void LogEvent(int event); + static void LogSuggestionEventWithValue(int event, int data); static void LogMostVisitedImpression( int position, int tile_title_source, @@ -634,6 +635,8 @@ .SetMethod("fixupAndValidateUrl", &NewTabPageBindings::FixupAndValidateUrl) .SetMethod("logEvent", &NewTabPageBindings::LogEvent) + .SetMethod("logSuggestionEventWithValue", + &NewTabPageBindings::LogSuggestionEventWithValue) .SetMethod("logMostVisitedImpression", &NewTabPageBindings::LogMostVisitedImpression) .SetMethod("logMostVisitedNavigation", @@ -879,6 +882,18 @@ } // static +void NewTabPageBindings::LogSuggestionEventWithValue(int event, int data) { + SearchBox* search_box = GetSearchBoxForCurrentContext(); + if (!search_box) { + return; + } + if (event <= static_cast<int>(NTPSuggestionsLoggingEventType::kMaxValue)) { + search_box->LogSuggestionEventWithValue( + static_cast<NTPSuggestionsLoggingEventType>(event), data); + } +} + +// static void NewTabPageBindings::LogMostVisitedImpression( int position, int tile_title_source,
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 3becaca..ee684c6 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -32,6 +32,8 @@ import("//ui/views/features.gni") import("//v8/gni/v8.gni") +assert(!is_ios, "Chromium/iOS shouldn't use anything in //chrome") + if (is_android) { import("//build/config/android/rules.gni") import("//tools/v8_context_snapshot/v8_context_snapshot.gni") @@ -53,7 +55,7 @@ "$root_out_dir/pyproto/components/policy/proto/cloud_policy_pb2.py", ] - if (!is_android && !is_ios) { + if (!is_android) { # Used by chrome/browser/policy/test/policy_testserver.py data += [ "$root_out_dir/pyproto/components/policy/proto/chrome_extension_policy_pb2.py" ] } @@ -1838,6 +1840,7 @@ "../browser/chromeos/login/enterprise_enrollment_browsertest.cc", "../browser/chromeos/login/eula_browsertest.cc", "../browser/chromeos/login/existing_user_controller_browsertest.cc", + "../browser/chromeos/login/guest_login_browsertest.cc", "../browser/chromeos/login/hid_detection_browsertest.cc", "../browser/chromeos/login/kiosk_browsertest.cc", "../browser/chromeos/login/lock/fingerprint_unlock_browsertest.cc", @@ -2788,9 +2791,9 @@ "../browser/performance_manager/decorators/frozen_frame_aggregator_unittest.cc", "../browser/performance_manager/decorators/page_almost_idle_decorator_unittest.cc", "../browser/performance_manager/graph/frame_node_impl_unittest.cc", + "../browser/performance_manager/graph/graph_impl_unittest.cc", "../browser/performance_manager/graph/graph_test_harness.cc", "../browser/performance_manager/graph/graph_test_harness.h", - "../browser/performance_manager/graph/graph_unittest.cc", "../browser/performance_manager/graph/mock_graphs.cc", "../browser/performance_manager/graph/mock_graphs.h", "../browser/performance_manager/graph/node_attached_data_unittest.cc", @@ -3054,7 +3057,7 @@ } } - if (!is_android && !is_ios) { + if (!is_android) { # CRLSets are not supported on Android or iOS, but available on all other # platforms. sources += [ @@ -3600,6 +3603,7 @@ "../browser/media/router/mojo/media_router_mojo_metrics_unittest.cc", "../browser/media/router/mojo/media_sink_service_status_unittest.cc", "../browser/media/router/providers/cast/cast_activity_manager_unittest.cc", + "../browser/media/router/providers/cast/cast_activity_record_unittest.cc", "../browser/media/router/providers/cast/cast_app_availability_tracker_unittest.cc", "../browser/media/router/providers/cast/cast_app_discovery_service_unittest.cc", "../browser/media/router/providers/cast/cast_internal_message_util_unittest.cc", @@ -4054,6 +4058,7 @@ "../common/extensions/api/extension_action/browser_action_manifest_unittest.cc", "../common/extensions/api/extension_action/page_action_manifest_unittest.cc", "../common/extensions/api/storage/storage_schema_manifest_handler_unittest.cc", + "../common/extensions/api/system_indicator/system_indicator_handler_unittest.cc", "../common/extensions/chrome_extensions_client_unittest.cc", "../common/extensions/chrome_manifest_url_handlers_unittest.cc", "../common/extensions/command_unittest.cc",
diff --git a/chrome/test/data/extensions/api_test/autotest_private/test.js b/chrome/test/data/extensions/api_test/autotest_private/test.js index ba8d5b8..2a0f0cf 100644 --- a/chrome/test/data/extensions/api_test/autotest_private/test.js +++ b/chrome/test/data/extensions/api_test/autotest_private/test.js
@@ -341,14 +341,43 @@ var behavior = behaviors[i]; chrome.autotestPrivate.setShelfAutoHideBehavior(displayId, behavior, function() { + chrome.test.assertNoLastError(); chrome.autotestPrivate.getShelfAutoHideBehavior(displayId, function(newBehavior) { - chrome.test.assertTrue(behavior === newBehavior); chrome.test.assertNoLastError(); - chrome.test.succeed(); + chrome.test.assertEq(behavior, newBehavior); }); }); } + chrome.test.succeed(); + }); + }, + // This test verifies that changing the shelf alignment works as expected. + function setShelfAlignment() { + // Using shelf from primary display. + var displayId = "-1"; + chrome.system.display.getInfo(function(info) { + var l = info.length; + for (var i = 0; i < l; i++) { + if (info[i].isPrimary === true) { + displayId = info[i].id; + break; + } + } + chrome.test.assertTrue(displayId != "-1"); + // When running 'browser_tests', Chrome OS reports itself as locked, + // so the only valid shelf is Bottom Locked. + var alignment = chrome.autotestPrivate.ShelfAlignmentType.BOTTOM_LOCKED; + chrome.autotestPrivate.setShelfAlignment(displayId, alignment, + function() { + chrome.test.assertNoLastError(); + chrome.autotestPrivate.getShelfAlignment(displayId, + function(newAlignment) { + chrome.test.assertNoLastError(); + chrome.test.assertEq(newAlignment, alignment); + chrome.test.succeed(); + }); + }); }); }, ];
diff --git a/chrome/test/data/webui/BUILD.gn b/chrome/test/data/webui/BUILD.gn index 6e1a50df..efedeb6 100644 --- a/chrome/test/data/webui/BUILD.gn +++ b/chrome/test/data/webui/BUILD.gn
@@ -125,7 +125,7 @@ ] } if (enable_print_preview) { - sources += [ "print_preview/new_print_preview_ui_browsertest.js" ] + sources += [ "print_preview/print_preview_ui_browsertest.js" ] } deps = [ "//chrome/browser/ui",
diff --git a/chrome/test/data/webui/print_preview/destination_search_test.js b/chrome/test/data/webui/print_preview/destination_search_test.js index ec5a066..5ee5ec78 100644 --- a/chrome/test/data/webui/print_preview/destination_search_test.js +++ b/chrome/test/data/webui/print_preview/destination_search_test.js
@@ -14,7 +14,7 @@ 'receive successful setup with policies', }; - const suiteName = 'NewDestinationSearchTest'; + const suiteName = 'DestinationSearchTest'; suite(suiteName, function() { /** @type {?PrintPreviewDestinationDialogElement} */ let dialog = null;
diff --git a/chrome/test/data/webui/print_preview/new_print_preview_ui_browsertest.js b/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js similarity index 91% rename from chrome/test/data/webui/print_preview/new_print_preview_ui_browsertest.js rename to chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js index 3ab107c6..7c95c767 100644 --- a/chrome/test/data/webui/print_preview/new_print_preview_ui_browsertest.js +++ b/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -/** @fileoverview Runs the Print Preview tests for the new UI. */ +/** @fileoverview Runs the Print Preview tests. */ GEN_INCLUDE(['//chrome/test/data/webui/polymer_browser_test_base.js']); -const NewPrintPreviewTest = class extends PolymerTest { +const PrintPreviewTest = class extends PolymerTest { /** @override */ get browsePreload() { return 'chrome://print/'; @@ -31,7 +31,7 @@ } }; -PrintPreviewAppTest = class extends NewPrintPreviewTest { +PrintPreviewAppTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -64,7 +64,7 @@ this.runMochaTest(print_preview_app_test.TestNames.PrintPresets); }); -PrintPreviewSidebarTest = class extends NewPrintPreviewTest { +PrintPreviewSidebarTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/sidebar.html'; @@ -94,7 +94,7 @@ .SettingsSectionsVisibilityChange); }); -PrintPreviewPagesSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewPagesSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/pages_settings.html'; @@ -131,7 +131,7 @@ this.runMochaTest(pages_settings_test.TestNames.NupChangesPages); }); -PrintPreviewPolicyTest = class extends NewPrintPreviewTest { +PrintPreviewPolicyTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -171,7 +171,7 @@ this.runMochaTest(policy_tests.TestNames.DisableHeaderFooterByPolicy); }); -PrintPreviewSettingsSelectTest = class extends NewPrintPreviewTest { +PrintPreviewSettingsSelectTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/settings_select.html'; @@ -191,7 +191,7 @@ mocha.run(); }); -PrintPreviewSelectBehaviorTest = class extends NewPrintPreviewTest { +PrintPreviewSelectBehaviorTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/select_behavior.html'; @@ -215,7 +215,7 @@ this.runMochaTest(select_behavior_test.TestNames.CallProcessSelectChange); }); -PrintPreviewNumberSettingsSectionTest = class extends NewPrintPreviewTest { +PrintPreviewNumberSettingsSectionTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/number_settings_section.html'; @@ -235,12 +235,13 @@ } }; -TEST_F('PrintPreviewNumberSettingsSectionTest', 'BlocksInvalidKeys', - function() { - this.runMochaTest(number_settings_section_test.TestNames.BlocksInvalidKeys); -}); +TEST_F( + 'PrintPreviewNumberSettingsSectionTest', 'BlocksInvalidKeys', function() { + this.runMochaTest( + number_settings_section_test.TestNames.BlocksInvalidKeys); + }); -PrintPreviewRestoreStateTest = class extends NewPrintPreviewTest { +PrintPreviewRestoreStateTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -275,7 +276,7 @@ this.runMochaTest(restore_state_test.TestNames.SaveValues); }); -PrintPreviewModelTest = class extends NewPrintPreviewTest { +PrintPreviewModelTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/data/model.html'; @@ -316,7 +317,7 @@ this.runMochaTest(model_test.TestNames.ChangeDestination); }); -PrintPreviewModelSettingsAvailabilityTest = class extends NewPrintPreviewTest { +PrintPreviewModelSettingsAvailabilityTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/data/model.html'; @@ -337,7 +338,7 @@ }); GEN('#if defined(OS_CHROMEOS)'); -PrintPreviewModelSettingsPolicyTest = class extends NewPrintPreviewTest { +PrintPreviewModelSettingsPolicyTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/data/model.html'; @@ -358,7 +359,7 @@ }); GEN('#endif'); -PrintPreviewPreviewGenerationTest = class extends NewPrintPreviewTest { +PrintPreviewPreviewGenerationTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -447,7 +448,7 @@ }); GEN('#if !defined(OS_CHROMEOS)'); -PrintPreviewLinkContainerTest = class extends NewPrintPreviewTest { +PrintPreviewLinkContainerTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/link_container.html'; @@ -488,7 +489,7 @@ GEN('#endif'); // defined(OS_MACOSX) GEN('#if defined(OS_WIN) || defined(OS_MACOSX)'); -PrintPreviewSystemDialogBrowserTest = class extends NewPrintPreviewTest { +PrintPreviewSystemDialogBrowserTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -527,7 +528,7 @@ }); GEN('#endif'); // defined(OS_WIN) || defined(OS_MACOSX) -PrintPreviewInvalidSettingsBrowserTest = class extends NewPrintPreviewTest { +PrintPreviewInvalidSettingsBrowserTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -580,7 +581,7 @@ .InvalidCertificateErrorReselectDestination); }); -PrintPreviewDestinationSelectTest = class extends NewPrintPreviewTest { +PrintPreviewDestinationSelectTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/destination_settings.html'; @@ -671,7 +672,7 @@ destination_select_test.TestNames.MultipleRecentDestinationsAccounts); }); -PrintPreviewDestinationDialogTest = class extends NewPrintPreviewTest { +PrintPreviewDestinationDialogTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/destination_dialog.html'; @@ -717,7 +718,7 @@ this.runMochaTest(destination_dialog_test.TestNames.UserAccounts); }); -PrintPreviewAdvancedDialogTest = class extends NewPrintPreviewTest { +PrintPreviewAdvancedDialogTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/advanced_settings_dialog.html'; @@ -760,7 +761,7 @@ this.runMochaTest(advanced_dialog_test.TestNames.AdvancedSettingsFilter); }); -PrintPreviewCustomMarginsTest = class extends NewPrintPreviewTest { +PrintPreviewCustomMarginsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/margin_control_container.html'; @@ -838,7 +839,7 @@ custom_margins_test.TestNames.RequestScrollToOutOfBoundsTextbox); }); -PrintPreviewNewDestinationSearchTest = class extends NewPrintPreviewTest { +PrintPreviewDestinationSearchTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/destination_dialog.html'; @@ -863,40 +864,37 @@ }; TEST_F( - 'PrintPreviewNewDestinationSearchTest', 'ReceiveSuccessfulSetup', - function() { + 'PrintPreviewDestinationSearchTest', 'ReceiveSuccessfulSetup', function() { this.runMochaTest( destination_search_test.TestNames.ReceiveSuccessfulSetup); }); GEN('#if defined(OS_CHROMEOS)'); -TEST_F('PrintPreviewNewDestinationSearchTest', 'ResolutionFails', function() { +TEST_F('PrintPreviewDestinationSearchTest', 'ResolutionFails', function() { this.runMochaTest(destination_search_test.TestNames.ResolutionFails); }); -TEST_F( - 'PrintPreviewNewDestinationSearchTest', 'ReceiveFailedSetup', function() { - this.runMochaTest(destination_search_test.TestNames.ReceiveFailedSetup); - }); +TEST_F('PrintPreviewDestinationSearchTest', 'ReceiveFailedSetup', function() { + this.runMochaTest(destination_search_test.TestNames.ReceiveFailedSetup); +}); TEST_F( - 'PrintPreviewNewDestinationSearchTest', - 'ReceiveSuccessfultSetupWithPolicies', function() { + 'PrintPreviewDestinationSearchTest', 'ReceiveSuccessfultSetupWithPolicies', + function() { this.runMochaTest(destination_search_test.TestNames.ResolutionFails); }); GEN('#else'); // !defined(OS_CHROMEOS) -TEST_F( - 'PrintPreviewNewDestinationSearchTest', 'GetCapabilitiesFails', function() { - this.runMochaTest(destination_search_test.TestNames.GetCapabilitiesFails); - }); +TEST_F('PrintPreviewDestinationSearchTest', 'GetCapabilitiesFails', function() { + this.runMochaTest(destination_search_test.TestNames.GetCapabilitiesFails); +}); GEN('#endif'); // defined(OS_CHROMEOS) -TEST_F('PrintPreviewNewDestinationSearchTest', 'CloudKioskPrinter', function() { +TEST_F('PrintPreviewDestinationSearchTest', 'CloudKioskPrinter', function() { this.runMochaTest(destination_search_test.TestNames.CloudKioskPrinter); }); -PrintPreviewHeaderTest = class extends NewPrintPreviewTest { +PrintPreviewHeaderTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/header.html'; @@ -940,7 +938,7 @@ this.runMochaTest(header_test.TestNames.EnterprisePolicy); }); -PrintPreviewHeaderNewTest = class extends NewPrintPreviewTest { +PrintPreviewHeaderNewTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/header_new.html'; @@ -980,7 +978,7 @@ this.runMochaTest(header_new_test.TestNames.EnterprisePolicy); }); -PrintPreviewButtonStripTest = class extends NewPrintPreviewTest { +PrintPreviewButtonStripTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/button_strip.html'; @@ -1012,7 +1010,7 @@ this.runMochaTest(button_strip_test.TestNames.ButtonStripFiresEvents); }); -PrintPreviewDestinationItemTest = class extends NewPrintPreviewTest { +PrintPreviewDestinationItemTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/destination_list_item.html'; @@ -1052,7 +1050,7 @@ this.runMochaTest(destination_item_test.TestNames.QueryDescription); }); -PrintPreviewAdvancedItemTest = class extends NewPrintPreviewTest { +PrintPreviewAdvancedItemTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/advanced_settings_item.html'; @@ -1097,7 +1095,7 @@ this.runMochaTest(advanced_item_test.TestNames.QueryOption); }); -PrintPreviewDestinationListTest = class extends NewPrintPreviewTest { +PrintPreviewDestinationListTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/destination_list.html'; @@ -1121,12 +1119,13 @@ this.runMochaTest(destination_list_test.TestNames.FilterDestinations); }); -TEST_F('PrintPreviewDestinationListTest', 'FireDestinationSelected', - function() { - this.runMochaTest(destination_list_test.TestNames.FireDestinationSelected); -}); +TEST_F( + 'PrintPreviewDestinationListTest', 'FireDestinationSelected', function() { + this.runMochaTest( + destination_list_test.TestNames.FireDestinationSelected); + }); -PrintPreviewPrintButtonTest = class extends NewPrintPreviewTest { +PrintPreviewPrintButtonTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -1157,7 +1156,7 @@ this.runMochaTest(print_button_test.TestNames.PDFPrintVisiblePreview); }); -PrintPreviewKeyEventTest = class extends NewPrintPreviewTest { +PrintPreviewKeyEventTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/app.html'; @@ -1219,7 +1218,7 @@ this.runMochaTest(key_event_test.TestNames.CtrlShiftPOpensSystemDialog); }); -PrintPreviewDestinationSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewDestinationSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/destination_settings.html'; @@ -1302,7 +1301,7 @@ destination_settings_test.TestNames.UpdateRecentDestinations); }); -PrintPreviewScalingSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewScalingSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/scaling_settings.html'; @@ -1341,7 +1340,7 @@ scaling_settings_test.TestNames.InputNotDisabledOnValidityChange); }); -PrintPreviewCopiesSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewCopiesSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/copies_settings.html'; @@ -1361,7 +1360,7 @@ mocha.run(); }); -PrintPreviewMediaSizeSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewMediaSizeSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/media_size_settings.html'; @@ -1381,7 +1380,7 @@ mocha.run(); }); -PrintPreviewDpiSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewDpiSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/dpi_settings.html'; @@ -1401,7 +1400,7 @@ mocha.run(); }); -PrintPreviewOtherOptionsSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewOtherOptionsSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/other_options_settings.html'; @@ -1421,7 +1420,7 @@ mocha.run(); }); -PrintPreviewLayoutSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewLayoutSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/layout_settings.html'; @@ -1441,7 +1440,7 @@ mocha.run(); }); -PrintPreviewColorSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewColorSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/color_settings.html'; @@ -1461,7 +1460,7 @@ mocha.run(); }); -PrintPreviewMarginsSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewMarginsSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/margins_settings.html'; @@ -1481,7 +1480,7 @@ mocha.run(); }); -PrintPreviewPagesPerSheetSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewPagesPerSheetSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/pages_per_sheet_settings.html'; @@ -1501,7 +1500,7 @@ mocha.run(); }); -PrintPreviewDuplexSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewDuplexSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/duplex_settings.html'; @@ -1522,7 +1521,7 @@ }); GEN('#if defined(OS_CHROMEOS)'); -PrintPreviewPinSettingsTest = class extends NewPrintPreviewTest { +PrintPreviewPinSettingsTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { return 'chrome://print/ui/pin_settings.html';
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js index 8e7bd966..e8b92b6 100644 --- a/chrome/test/data/webui/settings/cr_settings_browsertest.js +++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -12,6 +12,7 @@ GEN('#endif // defined(OS_CHROMEOS)'); GEN('#include "chrome/common/chrome_features.h"'); +GEN('#include "chromeos/constants/chromeos_features.h"'); GEN('#include "components/autofill/core/common/autofill_features.h"'); GEN('#include "components/omnibox/common/omnibox_features.h"'); @@ -2496,4 +2497,27 @@ mocha.run(); }); +CrSettingsSplitSettingsFlagTest = class extends CrSettingsBrowserTest { + /** @override */ + get browsePreload() { + return 'chrome://settings/basic_page/basic_page.html'; + } + + /** @override */ + get featureList() { + return ['chromeos::features::kSplitSettings', '']; + } + + /** @override */ + get extraLibraries() { + return super.extraLibraries.concat([ + 'split_settings_flag_test.js', + ]); + } +}; + +TEST_F('CrSettingsSplitSettingsFlagTest', 'All', function() { + mocha.run(); +}); + GEN('#endif // defined(OS_CHROMEOS)');
diff --git a/chrome/test/data/webui/settings/split_settings_flag_test.js b/chrome/test/data/webui/settings/split_settings_flag_test.js new file mode 100644 index 0000000..3a57bac8 --- /dev/null +++ b/chrome/test/data/webui/settings/split_settings_flag_test.js
@@ -0,0 +1,86 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +cr.define('split_settings_flag', function() { + suite('splitSettingsFlag', function() { + const attachedSections = new Set(); + + /** + * Names of settings sections that affect Chrome browser (and possibly CrOS) + * and therefore should appear in browser settings even when SettingsSplit + * feature is enabled. + * @type {!Array<string>} + */ + const BROWSER_SETTINGS_SECTIONS = [ + 'a11y', + 'appearance', + 'autofill', + 'languages', + 'onStartup', + 'printing', + 'privacy', + 'search', + ]; + + /** + * Names of settings sections that affect only CrOS (i.e. not the Chrome + * broswer) and therefore should not appear in browser settings when + * SettingsSplit feature is enabled. + * @type {!Array<string>} + */ + const OS_SETTINGS_ONLY_SECTIONS = [ + 'androidApps', + 'bluetooth', + 'changePassword', + 'crostini', + 'date-time', + 'device', + 'internet', + 'kiosk-next-shell', + 'multidevice', + 'people', + ]; + + const UNMIGRATED_SECTIONS = [ + 'changePassword', + 'date-time', + 'people', + 'reset', + ]; + + setup(async function() { + PolymerTest.clearBody(); + const browserSettings = document.createElement('settings-basic-page'); + // In prod, page visibility is passed via Polymer binding layers but it + // is always set to settings.pageVisibility. + browserSettings.pageVisibility = settings.pageVisibility; + document.body.appendChild(browserSettings); + Polymer.dom.flush(); + + // Expand <settings-idle-load> containing advanced section + await browserSettings.$$('#advancedPageTemplate').get(); + + browserSettings.shadowRoot.querySelectorAll('settings-section') + .forEach(element => attachedSections.add(element.section)); + }); + + test( + 'Browser settings page contains all browser-relevant settings', + function() { + for (let section of BROWSER_SETTINGS_SECTIONS) { + assertTrue(attachedSections.has(section)); + } + }); + + test( + 'Browser settings page contains no migrated CrOS-only settings', + function() { + const attachedOsSections = + OS_SETTINGS_ONLY_SECTIONS.filter(e => attachedSections.has(e)); + for (let section of attachedOsSections) { + assertTrue(UNMIGRATED_SECTIONS.includes(section)); + } + }); + }); +});
diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.cc b/chromecast/media/cma/pipeline/media_pipeline_impl.cc index 01f4b82..26add94 100644 --- a/chromecast/media/cma/pipeline/media_pipeline_impl.cc +++ b/chromecast/media/cma/pipeline/media_pipeline_impl.cc
@@ -14,6 +14,7 @@ #include "base/logging.h" #include "base/single_thread_task_runner.h" #include "base/threading/thread_task_runner_handle.h" +#include "base/time/default_tick_clock.h" #include "chromecast/base/metrics/cast_metrics_helper.h" #include "chromecast/media/cdm/cast_cdm_context.h" #include "chromecast/media/cma/backend/cma_backend.h" @@ -99,6 +100,7 @@ video_bytes_for_bitrate_estimation_(0), playback_stalled_(false), playback_stalled_notification_sent_(false), + media_time_interpolator_(base::DefaultTickClock::GetInstance()), weak_factory_(this) { LOG(INFO) << __FUNCTION__; weak_this_ = weak_factory_.GetWeakPtr(); @@ -248,6 +250,9 @@ waiting_for_first_have_enough_data_ = true; + media_time_interpolator_.SetBounds(time, time, base::TimeTicks::Now()); + media_time_interpolator_.StartInterpolating(); + // Setup the audio and video pipeline for the new timeline. if (audio_pipeline_) { scoped_refptr<BufferingState> buffering_state; @@ -277,6 +282,8 @@ DCHECK(audio_pipeline_ || video_pipeline_); DCHECK(!pending_flush_task_); + media_time_interpolator_.StopInterpolating(); + buffering_controller_->Reset(); // Flush both audio and video pipeline. This will flush the frame @@ -308,6 +315,7 @@ if (rate != 0.0f) { media_pipeline_backend_->SetPlaybackRate(rate); + media_time_interpolator_.SetPlaybackRate(rate); if (backend_state_ == BACKEND_STATE_PAUSED) { media_pipeline_backend_->Resume(); backend_state_ = BACKEND_STATE_PLAYING; @@ -317,6 +325,7 @@ } } else if (backend_state_ == BACKEND_STATE_PLAYING) { media_pipeline_backend_->Pause(); + media_time_interpolator_.SetPlaybackRate(0.f); backend_state_ = BACKEND_STATE_PAUSED; metrics::CastMetricsHelper::GetInstance()->RecordApplicationEvent( "Cast.Platform.Pause"); @@ -403,6 +412,7 @@ if (is_buffering && (backend_state_ == BACKEND_STATE_PLAYING)) { media_pipeline_backend_->Pause(); + media_time_interpolator_.SetPlaybackRate(0.f); backend_state_ = BACKEND_STATE_PAUSED; metrics::CastMetricsHelper::GetInstance()->RecordApplicationEvent( "Cast.Platform.Pause"); @@ -501,9 +511,14 @@ statistics_rolling_counter_ = (statistics_rolling_counter_ + 1) % kStatisticsUpdatePeriod; + // Wait until the first available timestamp returned from backend, which means + // the actual playback starts. Some of the rest of the logic, mainly media + // time interpolating, expects a valid timestamp as baseline. base::TimeDelta media_time = base::TimeDelta::FromMicroseconds( media_pipeline_backend_->GetCurrentPts()); - if (media_time == ::media::kNoTimestamp) { + if (media_time == ::media::kNoTimestamp && + (last_media_time_ == ::media::kNoTimestamp || + !media_time_interpolator_.interpolating())) { pending_time_update_task_ = true; base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, @@ -511,8 +526,23 @@ kTimeUpdateInterval); return; } + base::TimeTicks stc = base::TimeTicks::Now(); + if (media_time == ::media::kNoTimestamp) { + DCHECK(media_time_interpolator_.interpolating()); + media_time = media_time_interpolator_.GetInterpolatedTime(); + + LOG(WARNING) << "Backend returns invalid timestamp. Estimated time is " + << media_time; + } else { + // It's safe to use kInfiniteDuration as upper bound. When pipeline + // rebuffers, time interpolator is also paused, in which case it returns + // the timestamp when pausing it. + media_time_interpolator_.SetBounds(media_time, ::media::kInfiniteDuration, + stc); + } + CheckForPlaybackStall(media_time, stc); base::TimeDelta max_rendering_time = media_time;
diff --git a/chromecast/media/cma/pipeline/media_pipeline_impl.h b/chromecast/media/cma/pipeline/media_pipeline_impl.h index 53b1f324..564db33f8 100644 --- a/chromecast/media/cma/pipeline/media_pipeline_impl.h +++ b/chromecast/media/cma/pipeline/media_pipeline_impl.h
@@ -17,6 +17,7 @@ #include "chromecast/media/cma/backend/cma_backend.h" #include "chromecast/media/cma/pipeline/load_type.h" #include "chromecast/media/cma/pipeline/media_pipeline_client.h" +#include "media/base/time_delta_interpolator.h" namespace media { class AudioDecoderConfig; @@ -123,6 +124,10 @@ base::TimeTicks playback_stalled_time_; bool playback_stalled_notification_sent_; + // It's used to estimate current media time when the timestamp returned by + // backend is invalid. + ::media::TimeDeltaInterpolator media_time_interpolator_; + bool waiting_for_first_have_enough_data_ = true; base::WeakPtr<MediaPipelineImpl> weak_this_;
diff --git a/chromeos/dbus/README.md b/chromeos/dbus/README.md index 00b22d98..2484befe5 100644 --- a/chromeos/dbus/README.md +++ b/chromeos/dbus/README.md
@@ -41,6 +41,10 @@ (Many existing clients provide additional test functionality in the fake implementation, however this complicates tests and the fake implementation). +* These clients do not have any dependency on FeatureList, and care should be + taken regarding initialization order if such dependencies are added (see + BluezDBusManager for an example of such client). + ## Shill clients Shill clients will eventually only be available to Chrome. As such, the
diff --git a/chromeos/dbus/session_manager/fake_session_manager_client.cc b/chromeos/dbus/session_manager/fake_session_manager_client.cc index 515e419..f5ddf40 100644 --- a/chromeos/dbus/session_manager/fake_session_manager_client.cc +++ b/chromeos/dbus/session_manager/fake_session_manager_client.cc
@@ -271,7 +271,16 @@ void FakeSessionManagerClient::RestartJob(int socket_fd, const std::vector<std::string>& argv, - VoidDBusMethodCallback callback) {} + VoidDBusMethodCallback callback) { + DCHECK(supports_browser_restart_); + + restart_job_argv_ = argv; + if (restart_job_callback_) + std::move(restart_job_callback_).Run(); + + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::BindOnce(std::move(callback), true)); +} void FakeSessionManagerClient::SaveLoginPassword(const std::string& password) {} @@ -516,8 +525,8 @@ } } -bool FakeSessionManagerClient::SupportsRestartToApplyUserFlags() const { - return supports_restart_to_apply_user_flags_; +bool FakeSessionManagerClient::SupportsBrowserRestart() const { + return supports_browser_restart_; } void FakeSessionManagerClient::SetFlagsForUser(
diff --git a/chromeos/dbus/session_manager/fake_session_manager_client.h b/chromeos/dbus/session_manager/fake_session_manager_client.h index 780c256..c4b40ae 100644 --- a/chromeos/dbus/session_manager/fake_session_manager_client.h +++ b/chromeos/dbus/session_manager/fake_session_manager_client.h
@@ -102,7 +102,7 @@ void StorePolicy(const login_manager::PolicyDescriptor& descriptor, const std::string& policy_blob, VoidDBusMethodCallback callback) override; - bool SupportsRestartToApplyUserFlags() const override; + bool SupportsBrowserRestart() const override; void SetFlagsForUser(const cryptohome::AccountIdentifier& cryptohome_id, const std::vector<std::string>& flags) override; void GetServerBackedStateKeys(StateKeysCallback callback) override; @@ -133,14 +133,21 @@ std::vector<std::string>* out_flags_for_user) const; // Sets whether FakeSessionManagerClient should advertise (through - // |SupportsRestartToApplyUserFlags|) that it supports restarting chrome to - // apply user-session flags. The default is |false|. - void set_supports_restart_to_apply_user_flags( - bool supports_restart_to_apply_user_flags) { - supports_restart_to_apply_user_flags_ = - supports_restart_to_apply_user_flags; + // |SupportsBrowserRestart|) that it supports restarting Chrome. For example, + // to apply user-session flags, or to start guest session. + // The default is |false|. + void set_supports_browser_restart(bool supports_browser_restart) { + supports_browser_restart_ = supports_browser_restart; } + // Requires set_support_restart_job() to be called. + void set_restart_job_callback(base::OnceClosure callback) { + restart_job_callback_ = std::move(callback); + } + + const base::Optional<std::vector<std::string>>& restart_job_argv() const { + return restart_job_argv_; + } // If |force_failure| is true, forces StorePolicy() to fail. void ForceStorePolicyFailure(bool force_failure) { force_store_policy_failure_ = force_failure; @@ -245,7 +252,15 @@ } private: - bool supports_restart_to_apply_user_flags_ = false; + // Whether browser restarts should be handled - intended for use in tests. + bool supports_browser_restart_ = false; + + // Callback that will be run, if set, when RestartJob() is called. + base::OnceClosure restart_job_callback_; + + // If restart job was requested, and the client supports restart job, the + // requested restarted arguments. + base::Optional<std::vector<std::string>> restart_job_argv_; base::ObserverList<Observer>::Unchecked observers_; SessionManagerClient::ActiveSessionsMap user_sessions_;
diff --git a/chromeos/dbus/session_manager/session_manager_client.cc b/chromeos/dbus/session_manager/session_manager_client.cc index ca500cc..cccdcdf 100644 --- a/chromeos/dbus/session_manager/session_manager_client.cc +++ b/chromeos/dbus/session_manager/session_manager_client.cc
@@ -369,7 +369,7 @@ CallStorePolicy(descriptor, policy_blob, std::move(callback)); } - bool SupportsRestartToApplyUserFlags() const override { return true; } + bool SupportsBrowserRestart() const override { return true; } void SetFlagsForUser(const cryptohome::AccountIdentifier& cryptohome_id, const std::vector<std::string>& flags) override {
diff --git a/chromeos/dbus/session_manager/session_manager_client.h b/chromeos/dbus/session_manager/session_manager_client.h index 1492996c..d4e543d 100644 --- a/chromeos/dbus/session_manager/session_manager_client.h +++ b/chromeos/dbus/session_manager/session_manager_client.h
@@ -309,8 +309,10 @@ VoidDBusMethodCallback callback) = 0; // Returns whether session manager can be used to restart Chrome in order to - // apply per-user session flags. - virtual bool SupportsRestartToApplyUserFlags() const = 0; + // apply per-user session flags, or start guest session. + // This returns true for the real session manager client implementation, and + // false for the fake (unless explicitly set by a test). + virtual bool SupportsBrowserRestart() const = 0; // Sets the flags to be applied next time by the session manager when Chrome // is restarted inside an already started session for a particular user.
diff --git a/chromeos/services/device_sync/cryptauth_api_call_flow.cc b/chromeos/services/device_sync/cryptauth_api_call_flow.cc index 495dce1..ec01c92 100644 --- a/chromeos/services/device_sync/cryptauth_api_call_flow.cc +++ b/chromeos/services/device_sync/cryptauth_api_call_flow.cc
@@ -4,9 +4,9 @@ #include "chromeos/services/device_sync/cryptauth_api_call_flow.h" -#include "base/optional.h" #include "base/strings/string_number_conversions.h" #include "chromeos/components/multidevice/logging/logging.h" +#include "net/base/url_util.h" #include "net/traffic_annotation/network_traffic_annotation.h" #include "services/network/public/cpp/shared_url_loader_factory.h" @@ -17,6 +17,10 @@ namespace { const char kPost[] = "POST"; +const char kGet[] = "GET"; +const char kProtobufContentType[] = "application/x-protobuf"; +const char kQueryParameterAlternateOutputKey[] = "alt"; +const char kQueryParameterAlternateOutputProto[] = "proto"; NetworkRequestError GetErrorForHttpResponseCode(int response_code) { if (response_code == 400) @@ -40,11 +44,11 @@ CryptAuthApiCallFlow::~CryptAuthApiCallFlow() {} -void CryptAuthApiCallFlow::Start( +void CryptAuthApiCallFlow::StartPostRequest( const GURL& request_url, + const std::string& serialized_request, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, const std::string& access_token, - const std::string& serialized_request, const ResultCallback& result_callback, const ErrorCallback& error_callback) { request_url_ = request_url; @@ -54,21 +58,60 @@ OAuth2ApiCallFlow::Start(std::move(url_loader_factory), access_token); } +void CryptAuthApiCallFlow::StartGetRequest( + const GURL& request_url, + const std::vector<std::pair<std::string, std::string>>& + request_as_query_parameters, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + const std::string& access_token, + const ResultCallback& result_callback, + const ErrorCallback& error_callback) { + request_url_ = request_url; + request_as_query_parameters_ = request_as_query_parameters; + result_callback_ = result_callback; + error_callback_ = error_callback; + OAuth2ApiCallFlow::Start(std::move(url_loader_factory), access_token); +} + GURL CryptAuthApiCallFlow::CreateApiCallUrl() { + // Specifies that the server's response body should be formatted as a + // serialized proto. + request_url_ = + net::AppendQueryParameter(request_url_, kQueryParameterAlternateOutputKey, + kQueryParameterAlternateOutputProto); + + // GET requests encode the request proto as query parameters. + if (request_as_query_parameters_) { + for (const auto& key_value_pair : *request_as_query_parameters_) { + request_url_ = net::AppendQueryParameter( + request_url_, key_value_pair.first, key_value_pair.second); + } + } + return request_url_; } std::string CryptAuthApiCallFlow::CreateApiCallBody() { - return serialized_request_; + return serialized_request_.value_or(std::string()); } std::string CryptAuthApiCallFlow::CreateApiCallBodyContentType() { - return "application/x-protobuf"; + return serialized_request_ ? kProtobufContentType : std::string(); } +// Note: Unlike OAuth2ApiCallFlow, we do *not* determine the request type +// based on whether or not the body is empty. It is possible to send a POST +// request with an empty body because a proto with default parameters is +// encoded as an empty string. std::string CryptAuthApiCallFlow::GetRequestTypeForBody( const std::string& body) { - return kPost; + if (serialized_request_) { + DCHECK(!request_as_query_parameters_); + return kPost; + } + + DCHECK(request_as_query_parameters_); + return kGet; } void CryptAuthApiCallFlow::ProcessApiCallSuccess(
diff --git a/chromeos/services/device_sync/cryptauth_api_call_flow.h b/chromeos/services/device_sync/cryptauth_api_call_flow.h index 94239f49..06da1c7 100644 --- a/chromeos/services/device_sync/cryptauth_api_call_flow.h +++ b/chromeos/services/device_sync/cryptauth_api_call_flow.h
@@ -6,9 +6,12 @@ #define CHROMEOS_SERVICES_DEVICE_SYNC_CRYPTAUTH_API_CALL_FLOW_H_ #include <string> +#include <utility> +#include <vector> #include "base/callback.h" #include "base/macros.h" +#include "base/optional.h" #include "chromeos/services/device_sync/network_request_error.h" #include "google_apis/gaia/oauth2_api_call_flow.h" #include "services/network/public/cpp/resource_response.h" @@ -19,7 +22,12 @@ // Google API call flow implementation underlying all CryptAuth API calls. // CryptAuth is a Google service that manages authorization and cryptographic -// credentials for users' devices (eg. public keys). +// credentials for users' devices (eg. public keys). We assume the following: +// * A POST request's body is the serialized request proto, +// * A GET request encodes the request proto as query parameters and has no +// body, +// * The response body is the serialized response proto. + class CryptAuthApiCallFlow : public OAuth2ApiCallFlow { public: typedef base::Callback<void(const std::string& serialized_response)> @@ -29,19 +37,36 @@ CryptAuthApiCallFlow(); ~CryptAuthApiCallFlow() override; - // Starts the API call. - // request_url: The URL endpoint of the API request. - // context: The URL context used to make the request. - // access_token: The access token for whom to make the to make the request. - // serialized_request: A serialized proto containing the request data. - // result_callback: Called when the flow completes successfully with a - // serialized response proto. - // error_callback: Called when the flow completes with an error. - virtual void Start( + // Starts the API POST request call. + // |request_url|: The URL endpoint of the API request. + // |serialized_request|: A serialized proto containing the request data. + // |access_token|: The access token for whom to make the request. + // |result_callback|: Called when the flow completes successfully + // with a serialized response proto. + // |error_callback|: Called when the flow completes with an error. + virtual void StartPostRequest( const GURL& request_url, + const std::string& serialized_request, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, const std::string& access_token, - const std::string& serialized_request, + const ResultCallback& result_callback, + const ErrorCallback& error_callback); + + // Starts the API GET request call. + // |request_url|: The URL endpoint of the API request. + // |request_as_query_parameters|: The request proto represented as key-value + // pairs to be sent as query parameters. + // Note: A key can have multiple values. + // |access_token|: The access token for whom to make the request. + // |result_callback|: Called when the flow completes successfully + // with a serialized response proto. + // |error_callback|: Called when the flow completes with an error. + virtual void StartGetRequest( + const GURL& request_url, + const std::vector<std::pair<std::string, std::string>>& + request_as_query_parameters, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + const std::string& access_token, const ResultCallback& result_callback, const ErrorCallback& error_callback); @@ -75,8 +100,15 @@ // The URL of the CryptAuth endpoint serving the request. GURL request_url_; - // Serialized request message proto that will be sent in the API request. - std::string serialized_request_; + // Serialized request message proto that will be sent in the API POST request. + // Null if request type is not POST. + base::Optional<std::string> serialized_request_; + + // The request message proto represented as key-value pairs that will be sent + // as query parameters in the API GET request. Note: A key can have multiple + // values. Null if request type is not GET. + base::Optional<std::vector<std::pair<std::string, std::string>>> + request_as_query_parameters_; // Callback invoked with the serialized response message proto when the flow // completes successfully.
diff --git a/chromeos/services/device_sync/cryptauth_api_call_flow_unittest.cc b/chromeos/services/device_sync/cryptauth_api_call_flow_unittest.cc index 93d1fa1..b8d56d6 100644 --- a/chromeos/services/device_sync/cryptauth_api_call_flow_unittest.cc +++ b/chromeos/services/device_sync/cryptauth_api_call_flow_unittest.cc
@@ -5,12 +5,17 @@ #include "chromeos/services/device_sync/cryptauth_api_call_flow.h" #include <memory> +#include <string> +#include <utility> +#include <vector> #include "base/bind.h" #include "base/macros.h" +#include "base/optional.h" #include "base/test/scoped_task_environment.h" #include "chromeos/services/device_sync/network_request_error.h" #include "net/base/net_errors.h" +#include "net/base/url_util.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" #include "services/network/test/test_url_loader_factory.h" @@ -26,6 +31,47 @@ const char kSerializedRequestProto[] = "serialized_request_proto"; const char kSerializedResponseProto[] = "result_proto"; const char kRequestUrl[] = "https://googleapis.com/cryptauth/test"; +const char kAccessToken[] = "access_token"; +const char kQueryParameterAlternateOutputKey[] = "alt"; +const char kQueryParameterAlternateOutputProto[] = "proto"; + +const std::vector<std::pair<std::string, std::string>>& +GetTestRequestProtoAsQueryParameters() { + static const base::NoDestructor< + std::vector<std::pair<std::string, std::string>>> + request_as_query_parameters([] { + std::vector<std::pair<std::string, std::string>> + request_as_query_parameters = {{"field1", "value1a"}, + {"field1", "value1b"}, + {"field2", "value2"}}; + return request_as_query_parameters; + }()); + return *request_as_query_parameters; +} + +// Adds the "alt=proto" query parameters which specifies that the response +// should be formatted as a serialized proto. Adds the key-value pairs of +// |request_as_query_parameters| as query parameters. +// |request_as_query_parameters| is only non-null for GET requests. +GURL UrlWithQueryParameters( + const std::string& url, + const base::Optional<std::vector<std::pair<std::string, std::string>>>& + request_as_query_parameters) { + GURL url_with_qp(url); + + url_with_qp = + net::AppendQueryParameter(url_with_qp, kQueryParameterAlternateOutputKey, + kQueryParameterAlternateOutputProto); + + if (request_as_query_parameters) { + for (const auto& key_value : *request_as_query_parameters) { + url_with_qp = net::AppendQueryParameter(url_with_qp, key_value.first, + key_value.second); + } + } + + return url_with_qp; +} } // namespace @@ -39,19 +85,39 @@ PARTIAL_TRAFFIC_ANNOTATION_FOR_TESTS); } - void StartApiCallFlow() { - StartApiCallFlowWithRequest(kSerializedRequestProto); + void StartPostRequestApiCallFlow() { + StartPostRequestApiCallFlowWithSerializedRequest(kSerializedRequestProto); } - void StartApiCallFlowWithRequest(const std::string& serialized_request) { - flow_.Start(GURL(kRequestUrl), shared_factory_, "access_token", - serialized_request, - base::Bind(&DeviceSyncCryptAuthApiCallFlowTest::OnResult, - base::Unretained(this)), - base::Bind(&DeviceSyncCryptAuthApiCallFlowTest::OnError, - base::Unretained(this))); + void StartPostRequestApiCallFlowWithSerializedRequest( + const std::string& serialized_request) { + flow_.StartPostRequest( + GURL(kRequestUrl), serialized_request, shared_factory_, kAccessToken, + base::Bind(&DeviceSyncCryptAuthApiCallFlowTest::OnResult, + base::Unretained(this)), + base::Bind(&DeviceSyncCryptAuthApiCallFlowTest::OnError, + base::Unretained(this))); // A pending fetch for the API request should be created. - CheckCryptAuthHttpRequest(serialized_request); + CheckCryptAuthHttpPostRequest(serialized_request); + } + + void StartGetRequestApiCallFlow() { + StartGetRequestApiCallFlowWithRequestAsQueryParameters( + GetTestRequestProtoAsQueryParameters()); + } + + void StartGetRequestApiCallFlowWithRequestAsQueryParameters( + const std::vector<std::pair<std::string, std::string>>& + request_as_query_parameters) { + flow_.StartGetRequest( + GURL(kRequestUrl), request_as_query_parameters, shared_factory_, + kAccessToken, + base::Bind(&DeviceSyncCryptAuthApiCallFlowTest::OnResult, + base::Unretained(this)), + base::Bind(&DeviceSyncCryptAuthApiCallFlowTest::OnError, + base::Unretained(this))); + // A pending fetch for the API request should be created. + CheckCryptAuthHttpGetRequest(request_as_query_parameters); } void OnResult(const std::string& result) { @@ -64,12 +130,16 @@ network_error_.reset(new NetworkRequestError(network_error)); } - void CheckCryptAuthHttpRequest(const std::string& serialized_request) { + void CheckCryptAuthHttpPostRequest(const std::string& serialized_request) { const std::vector<network::TestURLLoaderFactory::PendingRequest>& pending = *test_url_loader_factory_.pending_requests(); ASSERT_EQ(1u, pending.size()); const network::ResourceRequest& request = pending[0].request; - EXPECT_EQ(GURL(kRequestUrl), request.url); + + EXPECT_EQ(UrlWithQueryParameters( + kRequestUrl, base::nullopt /* request_as_query_parameters */), + request.url); + EXPECT_EQ(serialized_request, network::GetUploadData(request)); std::string content_type; @@ -78,21 +148,67 @@ EXPECT_EQ("application/x-protobuf", content_type); } - // Responds to the current HTTP request. If the |error| is not |net::OK|, then - // the |response_code| and |response_string| arguments will be ignored. - void CompleteCurrentRequest(net::Error error, - int response_code, - const std::string& response_string) { + void CheckCryptAuthHttpGetRequest( + const std::vector<std::pair<std::string, std::string>>& + request_as_query_parameters) { + const std::vector<network::TestURLLoaderFactory::PendingRequest>& pending = + *test_url_loader_factory_.pending_requests(); + ASSERT_EQ(1u, pending.size()); + const network::ResourceRequest& request = pending[0].request; + + EXPECT_EQ(UrlWithQueryParameters(kRequestUrl, request_as_query_parameters), + request.url); + + // Expect no body. + EXPECT_TRUE(network::GetUploadData(request).empty()); + EXPECT_FALSE( + request.headers.HasHeader(net::HttpRequestHeaders::kContentType)); + } + + // Responds to the current HTTP POST request. If the |error| is not net::OK, + // then the |response_code| and |response_string| are null. + void CompleteCurrentPostRequest( + net::Error error, + base::Optional<int> response_code = base::nullopt, + const base::Optional<std::string>& response_string = base::nullopt) { network::URLLoaderCompletionStatus completion_status(error); network::ResourceResponseHead response_head; std::string content; if (error == net::OK) { response_head = network::CreateResourceResponseHead( - static_cast<net::HttpStatusCode>(response_code)); - content = response_string; + static_cast<net::HttpStatusCode>(*response_code)); + content = *response_string; } + + // Use kUrlMatchPrefix flag to match URL without query parameters. EXPECT_TRUE(test_url_loader_factory_.SimulateResponseForPendingRequest( - GURL(kRequestUrl), completion_status, response_head, content)); + GURL(kRequestUrl), completion_status, response_head, content, + network::TestURLLoaderFactory::ResponseMatchFlags::kUrlMatchPrefix)); + + scoped_task_environment_.RunUntilIdle(); + EXPECT_TRUE(result_ || network_error_); + } + + // Responds to the current HTTP GET request. If the |error| is not net::OK, + // then the |response_code| and |response_string| are null. + void CompleteCurrentGetRequest( + net::Error error, + base::Optional<int> response_code = base::nullopt, + const base::Optional<std::string>& response_string = base::nullopt) { + network::URLLoaderCompletionStatus completion_status(error); + network::ResourceResponseHead response_head; + std::string content; + if (error == net::OK) { + response_head = network::CreateResourceResponseHead( + static_cast<net::HttpStatusCode>(*response_code)); + content = *response_string; + } + + // Use kUrlMatchPrefix flag to match URL without query parameters. + EXPECT_TRUE(test_url_loader_factory_.SimulateResponseForPendingRequest( + GURL(kRequestUrl), completion_status, response_head, content, + network::TestURLLoaderFactory::ResponseMatchFlags::kUrlMatchPrefix)); + scoped_task_environment_.RunUntilIdle(); EXPECT_TRUE(result_ || network_error_); } @@ -110,40 +226,78 @@ DISALLOW_COPY_AND_ASSIGN(DeviceSyncCryptAuthApiCallFlowTest); }; -TEST_F(DeviceSyncCryptAuthApiCallFlowTest, RequestSuccess) { - StartApiCallFlow(); - CompleteCurrentRequest(net::OK, net::HTTP_OK, kSerializedResponseProto); +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, PostRequestSuccess) { + StartPostRequestApiCallFlow(); + CompleteCurrentPostRequest(net::OK, net::HTTP_OK, kSerializedResponseProto); EXPECT_EQ(kSerializedResponseProto, *result_); EXPECT_FALSE(network_error_); } -TEST_F(DeviceSyncCryptAuthApiCallFlowTest, RequestFailure) { - StartApiCallFlow(); - CompleteCurrentRequest(net::ERR_FAILED, 0, std::string()); +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, GetRequestSuccess) { + StartGetRequestApiCallFlow(); + CompleteCurrentGetRequest(net::OK, net::HTTP_OK, kSerializedResponseProto); + EXPECT_EQ(kSerializedResponseProto, *result_); + EXPECT_FALSE(network_error_); +} + +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, PostRequestFailure) { + StartPostRequestApiCallFlow(); + CompleteCurrentPostRequest(net::ERR_FAILED); + EXPECT_FALSE(result_); + EXPECT_EQ(NetworkRequestError::kOffline, *network_error_); +} + +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, GetRequestFailure) { + StartGetRequestApiCallFlow(); + CompleteCurrentPostRequest(net::ERR_FAILED); EXPECT_FALSE(result_); EXPECT_EQ(NetworkRequestError::kOffline, *network_error_); } TEST_F(DeviceSyncCryptAuthApiCallFlowTest, RequestStatus500) { - StartApiCallFlow(); - CompleteCurrentRequest(net::OK, net::HTTP_INTERNAL_SERVER_ERROR, - "CryptAuth Meltdown."); + StartPostRequestApiCallFlow(); + CompleteCurrentPostRequest(net::OK, net::HTTP_INTERNAL_SERVER_ERROR, + "CryptAuth Meltdown."); + EXPECT_FALSE(result_); + EXPECT_EQ(NetworkRequestError::kInternalServerError, *network_error_); +} + +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, GetRequestStatus500) { + StartGetRequestApiCallFlow(); + CompleteCurrentPostRequest(net::OK, net::HTTP_INTERNAL_SERVER_ERROR, + "CryptAuth Meltdown."); EXPECT_FALSE(result_); EXPECT_EQ(NetworkRequestError::kInternalServerError, *network_error_); } // The empty string is a valid protocol buffer message serialization. -TEST_F(DeviceSyncCryptAuthApiCallFlowTest, RequestWithNoBody) { - StartApiCallFlowWithRequest(std::string()); - CompleteCurrentRequest(net::OK, net::HTTP_OK, kSerializedResponseProto); +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, PostRequestWithNoBody) { + StartPostRequestApiCallFlowWithSerializedRequest(std::string()); + CompleteCurrentPostRequest(net::OK, net::HTTP_OK, kSerializedResponseProto); + EXPECT_EQ(kSerializedResponseProto, *result_); + EXPECT_FALSE(network_error_); +} + +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, GetRequestWithNoQueryParameters) { + StartGetRequestApiCallFlowWithRequestAsQueryParameters( + {} /* request_as_query_parameters */); + CompleteCurrentPostRequest(net::OK, net::HTTP_OK, kSerializedResponseProto); EXPECT_EQ(kSerializedResponseProto, *result_); EXPECT_FALSE(network_error_); } // The empty string is a valid protocol buffer message serialization. -TEST_F(DeviceSyncCryptAuthApiCallFlowTest, ResponseWithNoBody) { - StartApiCallFlow(); - CompleteCurrentRequest(net::OK, net::HTTP_OK, std::string()); +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, PostResponseWithNoBody) { + StartPostRequestApiCallFlow(); + CompleteCurrentPostRequest(net::OK, net::HTTP_OK, std::string()); + EXPECT_EQ(std::string(), *result_); + EXPECT_FALSE(network_error_); +} + +// The empty string is a valid protocol buffer message serialization. +TEST_F(DeviceSyncCryptAuthApiCallFlowTest, GetResponseWithNoBody) { + StartGetRequestApiCallFlow(); + CompleteCurrentPostRequest(net::OK, net::HTTP_OK, std::string()); EXPECT_EQ(std::string(), *result_); EXPECT_FALSE(network_error_); }
diff --git a/chromeos/services/device_sync/cryptauth_client_impl.cc b/chromeos/services/device_sync/cryptauth_client_impl.cc index 5bd098e..fd28c45 100644 --- a/chromeos/services/device_sync/cryptauth_client_impl.cc +++ b/chromeos/services/device_sync/cryptauth_client_impl.cc
@@ -5,7 +5,6 @@ #include "chromeos/services/device_sync/cryptauth_client_impl.h" #include <memory> -#include <utility> #include "base/bind.h" #include "base/command_line.h" @@ -13,6 +12,7 @@ #include "chromeos/components/multidevice/logging/logging.h" #include "chromeos/services/device_sync/proto/cryptauth_devicesync.pb.h" #include "chromeos/services/device_sync/proto/cryptauth_enrollment.pb.h" +#include "chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.h" #include "chromeos/services/device_sync/switches.h" #include "services/identity/public/cpp/identity_manager.h" #include "services/identity/public/cpp/primary_account_access_token_fetcher.h" @@ -24,6 +24,8 @@ namespace { +// -------------------- CryptAuth v1 Endpoints -------------------- + // Default URL of Google APIs endpoint hosting CryptAuth v1. const char kDefaultCryptAuthV1HTTPHost[] = "https://www.googleapis.com"; @@ -41,6 +43,8 @@ const char kSetupEnrollmentPath[] = "enrollment/setup"; const char kFinishEnrollmentPath[] = "enrollment/finish"; +// -------------------- CryptAuth v2 Endpoints -------------------- + // Default URL of Google APIs endpoint hosting CryptAuth v2 Enrollment. const char kDefaultCryptAuthV2EnrollmentHTTPHost[] = "https://cryptauthenrollment.googleapis.com"; @@ -61,10 +65,6 @@ const char kBatchGetFeatureStatusesPath[] = "/v1:batchGetFeatureStatuses"; const char kBatchSetFeatureStatusesPath[] = "/v1:batchSetFeatureStatuses"; -// Query string of the API URL indicating that the response should be in a -// serialized protobuf format. -const char kQueryProtobuf[] = "?alt=proto"; - const char kCryptAuthOAuth2Scope[] = "https://www.googleapis.com/auth/cryptauth"; @@ -76,8 +76,7 @@ ? GURL(command_line->GetSwitchValueASCII( switches::kCryptAuthHTTPHost)) : GURL(kDefaultCryptAuthV1HTTPHost); - return google_apis_url.Resolve(kCryptAuthV1Path + request_path + - kQueryProtobuf); + return google_apis_url.Resolve(kCryptAuthV1Path + request_path); } // Creates the full URL for endpoint to the CryptAuth v2 Enrollment API with @@ -89,7 +88,7 @@ ? GURL(command_line->GetSwitchValueASCII( switches::kCryptAuthV2EnrollmentHTTPHost)) : GURL(kDefaultCryptAuthV2EnrollmentHTTPHost); - return google_apis_url.Resolve(request_path + kQueryProtobuf); + return google_apis_url.Resolve(request_path); } // Creates the full URL for endpoint to the CryptAuth v2 DeviceSync API with @@ -101,7 +100,7 @@ ? GURL(command_line->GetSwitchValueASCII( switches::kCryptAuthV2DeviceSyncHTTPHost)) : GURL(kDefaultCryptAuthV2DeviceSyncHTTPHost); - return google_apis_url.Resolve(request_path + kQueryProtobuf); + return google_apis_url.Resolve(request_path); } } // namespace @@ -125,9 +124,10 @@ const GetMyDevicesCallback& callback, const ErrorCallback& error_callback, const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) { - MakeApiCall(CreateV1RequestUrl(kGetMyDevicesPath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + MakeApiCall(CreateV1RequestUrl(kGetMyDevicesPath), RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::FindEligibleUnlockDevices( @@ -160,8 +160,10 @@ } })"); MakeApiCall(CreateV1RequestUrl(kFindEligibleUnlockDevicesPath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::FindEligibleForPromotion( @@ -191,8 +193,10 @@ } })"); MakeApiCall(CreateV1RequestUrl(kFindEligibleForPromotionPath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::SendDeviceSyncTickle( @@ -200,9 +204,10 @@ const SendDeviceSyncTickleCallback& callback, const ErrorCallback& error_callback, const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) { - MakeApiCall(CreateV1RequestUrl(kSendDeviceSyncTicklePath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + MakeApiCall(CreateV1RequestUrl(kSendDeviceSyncTicklePath), RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::ToggleEasyUnlock( @@ -232,9 +237,10 @@ } } })"); - MakeApiCall(CreateV1RequestUrl(kToggleEasyUnlockPath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + MakeApiCall(CreateV1RequestUrl(kToggleEasyUnlockPath), RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::SetupEnrollment( @@ -267,9 +273,10 @@ } } })"); - MakeApiCall(CreateV1RequestUrl(kSetupEnrollmentPath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + MakeApiCall(CreateV1RequestUrl(kSetupEnrollmentPath), RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::FinishEnrollment( @@ -299,9 +306,10 @@ } } })"); - MakeApiCall(CreateV1RequestUrl(kFinishEnrollmentPath), - RequestWithDeviceClassifierSet(request), callback, error_callback, - partial_traffic_annotation); + MakeApiCall(CreateV1RequestUrl(kFinishEnrollmentPath), RequestType::kPost, + RequestWithDeviceClassifierSet(request).SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::SyncKeys(const cryptauthv2::SyncKeysRequest& request, @@ -334,7 +342,9 @@ } } })"); - MakeApiCall(CreateV2EnrollmentRequestUrl(kSyncKeysPath), request, callback, + MakeApiCall(CreateV2EnrollmentRequestUrl(kSyncKeysPath), RequestType::kPost, + request.SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, error_callback, partial_traffic_annotation); } @@ -368,7 +378,9 @@ } } })"); - MakeApiCall(CreateV2EnrollmentRequestUrl(kEnrollKeysPath), request, callback, + MakeApiCall(CreateV2EnrollmentRequestUrl(kEnrollKeysPath), RequestType::kPost, + request.SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, error_callback, partial_traffic_annotation); } @@ -407,8 +419,10 @@ } } })"); - MakeApiCall(CreateV2DeviceSyncRequestUrl(kSyncMetadataPath), request, - callback, error_callback, partial_traffic_annotation); + MakeApiCall(CreateV2DeviceSyncRequestUrl(kSyncMetadataPath), + RequestType::kPost, request.SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } void CryptAuthClientImpl::ShareGroupPrivateKey( @@ -444,8 +458,10 @@ } } })"); - MakeApiCall(CreateV2DeviceSyncRequestUrl(kShareGroupPrivateKeyPath), request, - callback, error_callback, partial_traffic_annotation); + MakeApiCall(CreateV2DeviceSyncRequestUrl(kShareGroupPrivateKeyPath), + RequestType::kPost, request.SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } // TODO(https://crbug.com/953087): Populate the "sender" and "trigger" fields @@ -481,8 +497,11 @@ } } })"); - MakeApiCall(CreateV2DeviceSyncRequestUrl(kBatchNotifyGroupDevicesPath), - request, callback, error_callback, partial_traffic_annotation); + MakeApiCall( + CreateV2DeviceSyncRequestUrl(kBatchNotifyGroupDevicesPath), + RequestType::kGet, base::nullopt /* serialized_request */, + cryptauthv2::BatchNotifyGroupDevicesRequestToQueryParameters(request), + callback, error_callback, partial_traffic_annotation); } // TODO(https://crbug.com/953087): Populate the "sender" and "trigger" fields @@ -516,8 +535,11 @@ } } })"); - MakeApiCall(CreateV2DeviceSyncRequestUrl(kBatchGetFeatureStatusesPath), - request, callback, error_callback, partial_traffic_annotation); + MakeApiCall( + CreateV2DeviceSyncRequestUrl(kBatchGetFeatureStatusesPath), + RequestType::kGet, base::nullopt /* serialized_request */, + cryptauthv2::BatchGetFeatureStatusesRequestToQueryParameters(request), + callback, error_callback, partial_traffic_annotation); } // TODO(https://crbug.com/953087): Populate the "sender" and "trigger" fields @@ -551,17 +573,22 @@ } })"); MakeApiCall(CreateV2DeviceSyncRequestUrl(kBatchSetFeatureStatusesPath), - request, callback, error_callback, partial_traffic_annotation); + RequestType::kPost, request.SerializeAsString(), + base::nullopt /* request_as_query_parameters */, callback, + error_callback, partial_traffic_annotation); } std::string CryptAuthClientImpl::GetAccessTokenUsed() { return access_token_used_; } -template <class RequestProto, class ResponseProto> +template <class ResponseProto> void CryptAuthClientImpl::MakeApiCall( const GURL& request_url, - const RequestProto& request_proto, + RequestType request_type, + const base::Optional<std::string>& serialized_request, + const base::Optional<std::vector<std::pair<std::string, std::string>>>& + request_as_query_parameters, const base::Callback<void(const ResponseProto&)>& response_callback, const ErrorCallback& error_callback, const net::PartialNetworkTrafficAnnotationTag& partial_traffic_annotation) { @@ -576,14 +603,6 @@ api_call_flow_->SetPartialNetworkTrafficAnnotation( partial_traffic_annotation); - std::string serialized_request; - if (!request_proto.SerializeToString(&serialized_request)) { - PA_LOG(ERROR) << "CryptAuthClientImpl::MakeApiCall(): Failure serializing " - << "request proto."; - NOTREACHED(); - return; - } - request_url_ = request_url; error_callback_ = error_callback; @@ -594,14 +613,18 @@ identity::PrimaryAccountAccessTokenFetcher>( "cryptauth_client", identity_manager_, scopes, base::BindOnce(&CryptAuthClientImpl::OnAccessTokenFetched<ResponseProto>, - weak_ptr_factory_.GetWeakPtr(), serialized_request, + weak_ptr_factory_.GetWeakPtr(), request_type, + serialized_request, request_as_query_parameters, response_callback), identity::PrimaryAccountAccessTokenFetcher::Mode::kWaitUntilAvailable); } template <class ResponseProto> void CryptAuthClientImpl::OnAccessTokenFetched( - const std::string& serialized_request, + RequestType request_type, + const base::Optional<std::string>& serialized_request, + const base::Optional<std::vector<std::pair<std::string, std::string>>>& + request_as_query_parameters, const base::Callback<void(const ResponseProto&)>& response_callback, GoogleServiceAuthError error, identity::AccessTokenInfo access_token_info) { @@ -613,12 +636,28 @@ } access_token_used_ = access_token_info.token; - api_call_flow_->Start( - request_url_, url_loader_factory_, access_token_used_, serialized_request, - base::Bind(&CryptAuthClientImpl::OnFlowSuccess<ResponseProto>, - weak_ptr_factory_.GetWeakPtr(), response_callback), - base::Bind(&CryptAuthClientImpl::OnApiCallFailed, - weak_ptr_factory_.GetWeakPtr())); + switch (request_type) { + case RequestType::kGet: + DCHECK(request_as_query_parameters && !serialized_request); + api_call_flow_->StartGetRequest( + request_url_, *request_as_query_parameters, url_loader_factory_, + access_token_used_, + base::Bind(&CryptAuthClientImpl::OnFlowSuccess<ResponseProto>, + weak_ptr_factory_.GetWeakPtr(), response_callback), + base::Bind(&CryptAuthClientImpl::OnApiCallFailed, + weak_ptr_factory_.GetWeakPtr())); + break; + case RequestType::kPost: + DCHECK(serialized_request && !request_as_query_parameters); + api_call_flow_->StartPostRequest( + request_url_, *serialized_request, url_loader_factory_, + access_token_used_, + base::Bind(&CryptAuthClientImpl::OnFlowSuccess<ResponseProto>, + weak_ptr_factory_.GetWeakPtr(), response_callback), + base::Bind(&CryptAuthClientImpl::OnApiCallFailed, + weak_ptr_factory_.GetWeakPtr())); + break; + } } template <class ResponseProto>
diff --git a/chromeos/services/device_sync/cryptauth_client_impl.h b/chromeos/services/device_sync/cryptauth_client_impl.h index b14bd43..9c906db 100644 --- a/chromeos/services/device_sync/cryptauth_client_impl.h +++ b/chromeos/services/device_sync/cryptauth_client_impl.h
@@ -5,8 +5,13 @@ #ifndef CHROMEOS_SERVICES_DEVICE_SYNC_CRYPTAUTH_CLIENT_IMPL_H_ #define CHROMEOS_SERVICES_DEVICE_SYNC_CRYPTAUTH_CLIENT_IMPL_H_ +#include <string> +#include <utility> +#include <vector> + #include "base/macros.h" #include "base/memory/weak_ptr.h" +#include "base/optional.h" #include "chromeos/services/device_sync/cryptauth_api_call_flow.h" #include "chromeos/services/device_sync/cryptauth_client.h" #include "chromeos/services/device_sync/proto/cryptauth_api.pb.h" @@ -102,13 +107,30 @@ std::string GetAccessTokenUsed() override; private: - // Starts a call to the API given by |request_url|, with the templated - // request and response types. The client first fetches the access token and - // then makes the HTTP request. - template <class RequestProto, class ResponseProto> + enum class RequestType { kGet, kPost }; + + // Starts a call to the API given by |request_url|. The client first fetches + // the access token and then makes the HTTP request. + // |request_url|: API endpoint. + // |request_type|: Whether the request is a GET or POST. + // |serialized_request|: Serialized request message proto that will be sent + // as the body of a POST request. Null if + // request type is not POST. + // |request_as_query_parameters|: The request message proto represented as + // key-value pairs that will be sent as query + // parameters in a GET request. Note: A key + // can have multiple values. Null if request + // type is not GET. + // |response_callback|: Callback for a successful request. + // |error_callback|: Callback for a failed request. + // |partial_traffic_annotation|: A partial tag used to mark a source of + template <class ResponseProto> void MakeApiCall( const GURL& request_url, - const RequestProto& request_proto, + RequestType request_type, + const base::Optional<std::string>& serialized_request, + const base::Optional<std::vector<std::pair<std::string, std::string>>>& + request_as_query_parameters, const base::Callback<void(const ResponseProto&)>& response_callback, const ErrorCallback& error_callback, const net::PartialNetworkTrafficAnnotationTag& @@ -117,7 +139,10 @@ // Called when the access token is obtained so the API request can be made. template <class ResponseProto> void OnAccessTokenFetched( - const std::string& serialized_request, + RequestType request_type, + const base::Optional<std::string>& serialized_request, + const base::Optional<std::vector<std::pair<std::string, std::string>>>& + request_as_query_parameters, const base::Callback<void(const ResponseProto&)>& response_callback, GoogleServiceAuthError error, identity::AccessTokenInfo access_token_info);
diff --git a/chromeos/services/device_sync/cryptauth_client_impl_unittest.cc b/chromeos/services/device_sync/cryptauth_client_impl_unittest.cc index dd8ca328..ad58d3ba 100644 --- a/chromeos/services/device_sync/cryptauth_client_impl_unittest.cc +++ b/chromeos/services/device_sync/cryptauth_client_impl_unittest.cc
@@ -4,10 +4,15 @@ #include "chromeos/services/device_sync/cryptauth_client_impl.h" +#include <string> +#include <utility> +#include <vector> + #include "base/bind.h" #include "base/command_line.h" #include "base/macros.h" #include "base/memory/ptr_util.h" +#include "base/strings/string_number_conversions.h" #include "base/test/gtest_util.h" #include "base/test/null_task_runner.h" #include "base/test/scoped_task_environment.h" @@ -52,6 +57,7 @@ const char kDeviceId2[] = "device_id2"; const char kFeatureType1[] = "feature_type1"; const char kFeatureType2[] = "feature_type2"; +const char kClientMetadataSessionId[] = "session_id"; // Values for the DeviceClassifier field. const int kDeviceOsVersionCode = 100; @@ -68,11 +74,21 @@ virtual ~MockCryptAuthApiCallFlow() {} MOCK_METHOD6( - Start, - void(const GURL&, + StartPostRequest, + void(const GURL& request_url, + const std::string& serialized_request, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, const std::string& access_token, - const std::string& serialized_request, + const ResultCallback& result_callback, + const ErrorCallback& error_callback)); + + MOCK_METHOD6( + StartGetRequest, + void(const GURL& request_url, + const std::vector<std::pair<std::string, std::string>>& + request_as_query_parameters, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + const std::string& access_token, const ResultCallback& result_callback, const ErrorCallback& error_callback)); @@ -144,13 +160,24 @@ shared_factory_, device_classifier)); } - // Sets up an expectation and captures a CryptAuth API request to + // Sets up an expectation and captures a CryptAuth API POST request to // |request_url|. - void ExpectRequest(const std::string& request_url) { + void ExpectPostRequest(const std::string& request_url) { GURL url(request_url); EXPECT_CALL(*api_call_flow_, - Start(url, shared_factory_, kAccessToken, _, _, _)) - .WillOnce(DoAll(SaveArg<3>(&serialized_request_), + StartPostRequest(url, _, shared_factory_, kAccessToken, _, _)) + .WillOnce(DoAll(SaveArg<1>(&serialized_request_), + SaveArg<4>(&flow_result_callback_), + SaveArg<5>(&flow_error_callback_))); + } + + // Sets up an expectation and captures a CryptAuth API GET request to + // |request_url|. + void ExpectGetRequest(const std::string& request_url) { + GURL url(request_url); + EXPECT_CALL(*api_call_flow_, + StartGetRequest(url, _, shared_factory_, kAccessToken, _, _)) + .WillOnce(DoAll(SaveArg<1>(&request_as_query_parameters_), SaveArg<4>(&flow_result_callback_), SaveArg<5>(&flow_error_callback_))); } @@ -178,14 +205,15 @@ std::unique_ptr<CryptAuthClient> client_; std::string serialized_request_; + std::vector<std::pair<std::string, std::string>> request_as_query_parameters_; CryptAuthApiCallFlow::ResultCallback flow_result_callback_; CryptAuthApiCallFlow::ErrorCallback flow_error_callback_; }; TEST_F(DeviceSyncCryptAuthClientTest, GetMyDevicesSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); cryptauth::GetMyDevicesResponse result_proto; cryptauth::GetMyDevicesRequest request_proto; @@ -228,9 +256,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, GetMyDevicesFailure) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); NetworkRequestError error; client_->GetMyDevices( @@ -247,9 +275,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, FindEligibleUnlockDevicesSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "findeligibleunlockdevices?alt=proto"); + "findeligibleunlockdevices"); cryptauth::FindEligibleUnlockDevicesResponse result_proto; cryptauth::FindEligibleUnlockDevicesRequest request_proto; @@ -295,9 +323,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, FindEligibleUnlockDevicesFailure) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "findeligibleunlockdevices?alt=proto"); + "findeligibleunlockdevices"); NetworkRequestError error; cryptauth::FindEligibleUnlockDevicesRequest request_proto; @@ -316,9 +344,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, FindEligibleForPromotionSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "findeligibleforpromotion?alt=proto"); + "findeligibleforpromotion"); cryptauth::FindEligibleForPromotionResponse result_proto; client_->FindEligibleForPromotion( @@ -339,9 +367,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, SendDeviceSyncTickleSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "senddevicesynctickle?alt=proto"); + "senddevicesynctickle"); cryptauth::SendDeviceSyncTickleResponse result_proto; client_->SendDeviceSyncTickle( @@ -362,9 +390,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, ToggleEasyUnlockSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "toggleeasyunlock?alt=proto"); + "toggleeasyunlock"); cryptauth::ToggleEasyUnlockResponse result_proto; cryptauth::ToggleEasyUnlockRequest request_proto; @@ -391,9 +419,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, SetupEnrollmentSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/enrollment/" - "setup?alt=proto"); + "setup"); std::string kApplicationId = "mkaes"; std::vector<std::string> supported_protocols; @@ -441,9 +469,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, FinishEnrollmentSuccess) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/enrollment/" - "finish?alt=proto"); + "finish"); static const char kEnrollmentSessionId[] = "enrollment_session_id"; static const char kEnrollmentMessage[] = "enrollment_message"; @@ -477,8 +505,8 @@ } TEST_F(DeviceSyncCryptAuthClientTest, SyncKeysSuccess) { - ExpectRequest( - "https://cryptauthenrollment.testgoogleapis.com/v1:syncKeys?alt=proto"); + ExpectPostRequest( + "https://cryptauthenrollment.testgoogleapis.com/v1:syncKeys"); static const char kApplicationName[] = "application_name"; static const char kRandomSessionId[] = "random_session_id"; @@ -509,8 +537,8 @@ } TEST_F(DeviceSyncCryptAuthClientTest, EnrollKeysSuccess) { - ExpectRequest( - "https://cryptauthenrollment.testgoogleapis.com/v1:enrollKeys?alt=proto"); + ExpectPostRequest( + "https://cryptauthenrollment.testgoogleapis.com/v1:enrollKeys"); static const char kRandomSessionId[] = "random_session_id"; static const char kCertificateName[] = "certificate_name"; @@ -547,9 +575,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, SyncMetadataSuccess) { - ExpectRequest( + ExpectPostRequest( "https://cryptauthdevicesync.testgoogleapis.com/" - "v1:syncMetadata?alt=proto"); + "v1:syncMetadata"); static const char kMyDeviceEncryptedMetadata[] = "my_encrypted_metadata"; static const char kOtherDeviceEncryptedMetadata[] = @@ -613,9 +641,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, ShareGroupPrivateKeySuccess) { - ExpectRequest( + ExpectPostRequest( "https://cryptauthdevicesync.testgoogleapis.com/" - "v1:shareGroupPrivateKey?alt=proto"); + "v1:shareGroupPrivateKey"); cryptauthv2::EncryptedGroupPrivateKey encrypted_group_private_key; encrypted_group_private_key.set_recipient_device_id(kDeviceId1); @@ -656,12 +684,17 @@ } TEST_F(DeviceSyncCryptAuthClientTest, BatchNotifyGroupDevicesSuccess) { - ExpectRequest( + ExpectGetRequest( "https://cryptauthdevicesync.testgoogleapis.com/" - "v1:batchNotifyGroupDevices?alt=proto"); + "v1:batchNotifyGroupDevices"); cryptauthv2::BatchNotifyGroupDevicesRequest request; - request.mutable_context()->CopyFrom(cryptauthv2::GetRequestContextForTest()); + request.mutable_context()->CopyFrom(cryptauthv2::BuildRequestContext( + cryptauthv2::kTestDeviceSyncGroupName, + BuildClientMetadata(2 /* retry_count */, + cryptauthv2::ClientMetadata::MANUAL, + kClientMetadataSessionId), + cryptauthv2::kTestInstanceId, cryptauthv2::kTestInstanceIdToken)); request.add_notify_device_ids(kDeviceId1); request.add_notify_device_ids(kDeviceId2); request.set_target_service(cryptauthv2::TargetService::DEVICE_SYNC); @@ -678,16 +711,21 @@ .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( kAccessToken, base::Time::Max()); - cryptauthv2::BatchNotifyGroupDevicesRequest expected_request; - EXPECT_TRUE(expected_request.ParseFromString(serialized_request_)); - EXPECT_EQ(cryptauthv2::GetRequestContextForTest().SerializeAsString(), - expected_request.context().SerializeAsString()); - ASSERT_EQ(2, expected_request.notify_device_ids_size()); - EXPECT_EQ(kDeviceId1, expected_request.notify_device_ids(0)); - EXPECT_EQ(kDeviceId2, expected_request.notify_device_ids(1)); - EXPECT_EQ(cryptauthv2::TargetService::DEVICE_SYNC, - expected_request.target_service()); - EXPECT_EQ(kFeatureType1, expected_request.feature_type()); + std::vector<std::pair<std::string, std::string>> + expected_request_as_query_parameters = { + {"context.client_metadata.retry_count", "2"}, + {"context.client_metadata.invocation_reason", + base::NumberToString(cryptauthv2::ClientMetadata::MANUAL)}, + {"context.client_metadata.session_id", kClientMetadataSessionId}, + {"context.group", cryptauthv2::kTestDeviceSyncGroupName}, + {"context.device_id", cryptauthv2::kTestInstanceId}, + {"context.device_id_token", cryptauthv2::kTestInstanceIdToken}, + {"notify_device_ids", kDeviceId1}, + {"notify_device_ids", kDeviceId2}, + {"target_service", + base::NumberToString(cryptauthv2::TargetService::DEVICE_SYNC)}, + {"feature_type", kFeatureType1}}; + EXPECT_EQ(expected_request_as_query_parameters, request_as_query_parameters_); { cryptauthv2::BatchNotifyGroupDevicesResponse response; @@ -698,12 +736,17 @@ } TEST_F(DeviceSyncCryptAuthClientTest, BatchGetFeatureStatusesSuccess) { - ExpectRequest( + ExpectGetRequest( "https://cryptauthdevicesync.testgoogleapis.com/" - "v1:batchGetFeatureStatuses?alt=proto"); + "v1:batchGetFeatureStatuses"); cryptauthv2::BatchGetFeatureStatusesRequest request; - request.mutable_context()->CopyFrom(cryptauthv2::GetRequestContextForTest()); + request.mutable_context()->CopyFrom(cryptauthv2::BuildRequestContext( + cryptauthv2::kTestDeviceSyncGroupName, + BuildClientMetadata(2 /* retry_count */, + cryptauthv2::ClientMetadata::MANUAL, + kClientMetadataSessionId), + cryptauthv2::kTestInstanceId, cryptauthv2::kTestInstanceIdToken)); request.add_device_ids(kDeviceId1); request.add_device_ids(kDeviceId2); request.add_feature_types(kFeatureType1); @@ -720,16 +763,20 @@ .WaitForAccessTokenRequestIfNecessaryAndRespondWithToken( kAccessToken, base::Time::Max()); - cryptauthv2::BatchGetFeatureStatusesRequest expected_request; - EXPECT_TRUE(expected_request.ParseFromString(serialized_request_)); - EXPECT_EQ(cryptauthv2::GetRequestContextForTest().SerializeAsString(), - expected_request.context().SerializeAsString()); - ASSERT_EQ(2, expected_request.device_ids_size()); - EXPECT_EQ(kDeviceId1, expected_request.device_ids(0)); - EXPECT_EQ(kDeviceId2, expected_request.device_ids(1)); - ASSERT_EQ(2, expected_request.feature_types_size()); - EXPECT_EQ(kFeatureType1, expected_request.feature_types(0)); - EXPECT_EQ(kFeatureType2, expected_request.feature_types(1)); + std::vector<std::pair<std::string, std::string>> + expected_request_as_query_parameters = { + {"context.client_metadata.retry_count", "2"}, + {"context.client_metadata.invocation_reason", + base::NumberToString(cryptauthv2::ClientMetadata::MANUAL)}, + {"context.client_metadata.session_id", kClientMetadataSessionId}, + {"context.group", cryptauthv2::kTestDeviceSyncGroupName}, + {"context.device_id", cryptauthv2::kTestInstanceId}, + {"context.device_id_token", cryptauthv2::kTestInstanceIdToken}, + {"device_ids", kDeviceId1}, + {"device_ids", kDeviceId2}, + {"feature_types", kFeatureType1}, + {"feature_types", kFeatureType2}}; + EXPECT_EQ(expected_request_as_query_parameters, request_as_query_parameters_); { cryptauthv2::BatchGetFeatureStatusesResponse response; @@ -771,9 +818,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, BatchSetFeatureStatusesSuccess) { - ExpectRequest( + ExpectPostRequest( "https://cryptauthdevicesync.testgoogleapis.com/" - "v1:batchSetFeatureStatuses?alt=proto"); + "v1:batchSetFeatureStatuses"); cryptauthv2::BatchSetFeatureStatusesRequest request; request.mutable_context()->CopyFrom(cryptauthv2::GetRequestContextForTest()); @@ -862,9 +909,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, ParseResponseProtoFailure) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); NetworkRequestError error; client_->GetMyDevices( @@ -882,9 +929,9 @@ TEST_F(DeviceSyncCryptAuthClientTest, MakeSecondRequestBeforeFirstRequestSucceeds) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); // Make first request. cryptauth::GetMyDevicesResponse result_proto; @@ -924,9 +971,9 @@ MakeSecondRequestAfterFirstRequestSucceeds) { // Make first request successfully. { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); cryptauth::GetMyDevicesResponse result_proto; client_->GetMyDevices( cryptauth::GetMyDevicesRequest(), @@ -958,9 +1005,9 @@ } TEST_F(DeviceSyncCryptAuthClientTest, DeviceClassifierIsSet) { - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); cryptauth::GetMyDevicesResponse result_proto; cryptauth::GetMyDevicesRequest request_proto; @@ -991,9 +1038,9 @@ TEST_F(DeviceSyncCryptAuthClientTest, GetAccessTokenUsed) { EXPECT_TRUE(client_->GetAccessTokenUsed().empty()); - ExpectRequest( + ExpectPostRequest( "https://www.testgoogleapis.com/cryptauth/v1/deviceSync/" - "getmydevices?alt=proto"); + "getmydevices"); cryptauth::GetMyDevicesResponse result_proto; cryptauth::GetMyDevicesRequest request_proto;
diff --git a/chromeos/services/device_sync/proto/BUILD.gn b/chromeos/services/device_sync/proto/BUILD.gn index b9bbbec..788020dc 100644 --- a/chromeos/services/device_sync/proto/BUILD.gn +++ b/chromeos/services/device_sync/proto/BUILD.gn
@@ -19,6 +19,8 @@ static_library("util") { sources = [ + "cryptauth_proto_to_query_parameters_util.cc", + "cryptauth_proto_to_query_parameters_util.h", "device_classifier_util.cc", "device_classifier_util.h", "enum_util.cc",
diff --git a/chromeos/services/device_sync/proto/cryptauth_devicesync.proto b/chromeos/services/device_sync/proto/cryptauth_devicesync.proto index 57c7f5d..e9bba37 100644 --- a/chromeos/services/device_sync/proto/cryptauth_devicesync.proto +++ b/chromeos/services/device_sync/proto/cryptauth_devicesync.proto
@@ -167,6 +167,10 @@ // Allows a device, which is part of the group, notify another group device. // This allows setup to work, e.g. by letting the other device know it needs to // turn on the bluetooth radio. +// +// Note: This request is encoded as query parameters in a GET request. If any +// field or subfield of this proto changes, update the files +// cryptauth_proto_to_query_parameters_util.{h,cc}. message BatchNotifyGroupDevicesRequest { // The context of this request. RequestContext context = 1; @@ -184,6 +188,10 @@ message BatchNotifyGroupDevicesResponse {} // Requests feature enabled/disabled statuses per device in the group. +// +// Note: This request is encoded as query parameters in a GET request. If any +// field or subfield of this proto changes, update the files +// cryptauth_proto_to_query_parameters_util.{h,cc}. message BatchGetFeatureStatusesRequest { // The context of this request. RequestContext context = 1;
diff --git a/chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.cc b/chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.cc new file mode 100644 index 0000000..76075662 --- /dev/null +++ b/chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.cc
@@ -0,0 +1,111 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.h" + +#include "base/strings/string_number_conversions.h" +#include "chromeos/services/device_sync/proto/cryptauth_common.pb.h" +#include "chromeos/services/device_sync/proto/cryptauth_devicesync.pb.h" + +namespace cryptauthv2 { + +namespace { + +const char kSubFieldDelimiter[] = "."; + +const char kClientMetadataRetryCount[] = "retry_count"; +const char kClientMetadataInvocationReason[] = "invocation_reason"; +const char kClientMetadataSessionId[] = "session_id"; + +const char kRequestContextGroup[] = "group"; +const char kRequestContextClientMetadata[] = "client_metadata"; +const char kRequestContextDeviceId[] = "device_id"; +const char kRequestContextDeviceIdToken[] = "device_id_token"; + +const char kBatchNotifyGroupDevicesRequestContext[] = "context"; +const char kBatchNotifyGroupDevicesRequestNotifyDeviceIds[] = + "notify_device_ids"; +const char kBatchNotifyGroupDevicesRequestTargetService[] = "target_service"; +const char kBatchNotifyGroupDevicesRequestFeatureType[] = "feature_type"; + +const char kBatchGetFeatureStatusesRequestContext[] = "context"; +const char kBatchGetFeatureStatusesRequestDeviceIds[] = "device_ids"; +const char kBatchGetFeatureStatusesRequestFeatureTypes[] = "feature_types"; + +} // namespace + +std::vector<std::pair<std::string, std::string>> +ClientMetadataToQueryParameters(const ClientMetadata& client_metadata, + const std::string& key_prefix) { + // |crypto_hardware| is not processed; make sure it has no value. + DCHECK(!client_metadata.has_crypto_hardware()); + + return { + {key_prefix + kClientMetadataRetryCount, + base::NumberToString(client_metadata.retry_count())}, + {key_prefix + kClientMetadataInvocationReason, + base::NumberToString(client_metadata.invocation_reason())}, + {key_prefix + kClientMetadataSessionId, client_metadata.session_id()}}; +} + +std::vector<std::pair<std::string, std::string>> +RequestContextToQueryParameters(const RequestContext& context, + const std::string& key_prefix) { + std::vector<std::pair<std::string, std::string>> pairs = + ClientMetadataToQueryParameters( + context.client_metadata(), + key_prefix + kRequestContextClientMetadata + kSubFieldDelimiter); + + pairs.insert( + pairs.end(), + {{key_prefix + kRequestContextGroup, context.group()}, + {key_prefix + kRequestContextDeviceId, context.device_id()}, + {key_prefix + kRequestContextDeviceIdToken, context.device_id_token()}}); + + return pairs; +} + +std::vector<std::pair<std::string, std::string>> +BatchNotifyGroupDevicesRequestToQueryParameters( + const BatchNotifyGroupDevicesRequest& request) { + std::vector<std::pair<std::string, std::string>> pairs = + RequestContextToQueryParameters( + request.context(), + std::string(kBatchNotifyGroupDevicesRequestContext) + + kSubFieldDelimiter); + + for (const std::string& notify_device_id : request.notify_device_ids()) { + pairs.emplace_back(kBatchNotifyGroupDevicesRequestNotifyDeviceIds, + notify_device_id); + } + + pairs.emplace_back(kBatchNotifyGroupDevicesRequestTargetService, + base::NumberToString(request.target_service())); + pairs.emplace_back(kBatchNotifyGroupDevicesRequestFeatureType, + request.feature_type()); + + return pairs; +} + +std::vector<std::pair<std::string, std::string>> +BatchGetFeatureStatusesRequestToQueryParameters( + const BatchGetFeatureStatusesRequest& request) { + std::vector<std::pair<std::string, std::string>> pairs = + RequestContextToQueryParameters( + request.context(), + std::string(kBatchGetFeatureStatusesRequestContext) + + kSubFieldDelimiter); + + for (const std::string& device_id : request.device_ids()) + pairs.emplace_back(kBatchGetFeatureStatusesRequestDeviceIds, device_id); + + for (const std::string& feature_type : request.feature_types()) { + pairs.emplace_back(kBatchGetFeatureStatusesRequestFeatureTypes, + feature_type); + } + + return pairs; +} + +} // namespace cryptauthv2
diff --git a/chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.h b/chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.h new file mode 100644 index 0000000..1a6134c --- /dev/null +++ b/chromeos/services/device_sync/proto/cryptauth_proto_to_query_parameters_util.h
@@ -0,0 +1,82 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_DEVICE_SYNC_PROTO_CRYPTAUTH_PROTO_TO_QUERY_PARAMETERS_UTIL_H_ +#define CHROMEOS_SERVICES_DEVICE_SYNC_PROTO_CRYPTAUTH_PROTO_TO_QUERY_PARAMETERS_UTIL_H_ + +#include <string> +#include <utility> +#include <vector> + +// Utility functions for converting relevant CryptAuth v2 protos to lists of +// key-value pairs to be sent as query parameters in HTTP GET requests. Note: A +// key can have multiple values. +namespace cryptauthv2 { + +class BatchGetFeatureStatusesRequest; +class BatchNotifyGroupDevicesRequest; +class ClientMetadata; +class RequestContext; + +// Example output with |key_prefix| = "client_metadata.": +// { +// {"client_metadata.retry_count", "2"}, +// {"client_metadata.invocation_reason", "13"}, +// {"client_metadata.session_id", "abc123"} +// } +// Note: |crypto_hardware| field is not processed. +std::vector<std::pair<std::string, std::string>> +ClientMetadataToQueryParameters(const ClientMetadata& client_metadata, + const std::string& key_prefix = std::string()); + +// Example output with |key_prefix| = "context.": +// { +// {"context.client_metadata.retry_count", "2"}, +// {"context.client_metadata.invocation_reason", "13"}, +// {"context.client_metadata.session_id", "abc"} +// {"context.group", "DeviceSync:BetterTogether"}, +// {"context.device_id", "123"}, +// {"context.device_id_token", "123token"}, +// } +std::vector<std::pair<std::string, std::string>> +RequestContextToQueryParameters(const RequestContext& context, + const std::string& key_prefix = std::string()); + +// Example output: +// { +// {"context.client_metadata.retry_count", "2"}, +// {"context.client_metadata.invocation_reason", "13"}, +// {"context.client_metadata.session_id", "abc"} +// {"context.group", "DeviceSync:BetterTogether"}, +// {"context.device_id", "123"}, +// {"context.device_id_token", "123token"}, +// {"notify_device_ids", "123"}, +// {"notify_device_ids", "456"}, +// {"target_service", "2"}, +// {"feature_type", "my_feature"}}; +// } +std::vector<std::pair<std::string, std::string>> +BatchNotifyGroupDevicesRequestToQueryParameters( + const BatchNotifyGroupDevicesRequest& request); + +// Example output: +// { +// {"context.client_metadata.retry_count", "2"}, +// {"context.client_metadata.invocation_reason", "13"}, +// {"context.client_metadata.session_id", "abc"} +// {"context.group", "DeviceSync:BetterTogether"}, +// {"context.device_id", "123"}, +// {"context.device_id_token", "123token"}, +// {"device_ids", "123"}, +// {"device_ids", "456"}, +// {"feature_types", "my_feature_1"}, +// {"feature_types", "my_feature_2"}}; +// } +std::vector<std::pair<std::string, std::string>> +BatchGetFeatureStatusesRequestToQueryParameters( + const BatchGetFeatureStatusesRequest& request); + +} // namespace cryptauthv2 + +#endif // CHROMEOS_SERVICES_DEVICE_SYNC_PROTO_CRYPTAUTH_PROTO_TO_QUERY_PARAMETERS_UTIL_H_
diff --git a/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc b/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc index 4362b17f..f750808f 100644 --- a/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc +++ b/components/autofill/core/browser/payments/credit_card_save_manager_unittest.cc
@@ -16,6 +16,7 @@ #include "base/guid.h" #include "base/metrics/metrics_hashes.h" +#include "base/strings/string16.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "base/test/scoped_task_environment.h" @@ -91,6 +92,39 @@ return std::to_string(now.month % 12 + 1); } +// Used to configure form for |CreateTestCreditCardFormData|. +struct CreditCardFormOptions { + CreditCardFormOptions& with_is_https(bool b) { + is_https = b; + return *this; + } + + CreditCardFormOptions& with_split_names(bool b) { + split_names = b; + return *this; + } + + CreditCardFormOptions& with_is_from_non_focusable_form(bool b) { + is_from_non_focusable_form = b; + return *this; + } + + CreditCardFormOptions& with_is_google_host(bool b) { + is_google_host = b; + return *this; + } + // True if the scheme of a form is https. + bool is_https = true; + // True if the form is using both first name and last name field. + bool split_names = false; + // True if the form is a non-focusable form, such as a form that is hidden + // after information has been entered into it. + bool is_from_non_focusable_form = false; + // True if the form is from Google-hosted website, such as payments.google.com + // or YouTube. + bool is_google_host = false; +}; + } // anonymous namespace class MockPersonalDataManager : public TestPersonalDataManager { @@ -180,20 +214,19 @@ // Populates |form| with data corresponding to a simple credit card form. // Note that this actually appends fields to the form data, which can be - // useful for building up more complex test forms. + // useful for building up more complex test forms. The |form| can be + // configured using the provided |options|. void CreateTestCreditCardFormData(FormData* form, - bool is_https, - bool use_month_type, - bool split_names = false, - bool is_from_non_focusable_form = false, - bool is_google_host = false) { + CreditCardFormOptions options) { form->name = ASCIIToUTF16("MyForm"); base::string16 scheme = - is_https ? ASCIIToUTF16("https://") : ASCIIToUTF16("http://"); - base::string16 host = is_google_host ? ASCIIToUTF16("pay.google.com") - : ASCIIToUTF16("myform.com"); - base::string16 root_host = is_google_host ? ASCIIToUTF16("pay.google.com") - : ASCIIToUTF16("myform.root.com"); + options.is_https ? ASCIIToUTF16("https://") : ASCIIToUTF16("http://"); + base::string16 host = options.is_google_host + ? ASCIIToUTF16("pay.google.com") + : ASCIIToUTF16("myform.com"); + base::string16 root_host = options.is_google_host + ? ASCIIToUTF16("pay.google.com") + : ASCIIToUTF16("myform.root.com"); base::string16 form_path = ASCIIToUTF16("/form.html"); base::string16 submit_path = ASCIIToUTF16("/submit.html"); form->url = GURL(scheme + host + form_path); @@ -202,7 +235,7 @@ url::Origin::Create(GURL(scheme + root_host + form_path)); FormFieldData field; - if (split_names) { + if (options.split_names) { test::CreateTestFormField("First Name on Card", "firstnameoncard", "", "text", &field); field.autocomplete_attribute = "cc-given-name"; @@ -218,19 +251,12 @@ form->fields.push_back(field); } test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field); - field.is_focusable = !is_from_non_focusable_form; + field.is_focusable = !options.is_from_non_focusable_form; form->fields.push_back(field); - if (use_month_type) { - test::CreateTestFormField("Expiration Date", "ccmonth", "", "month", - &field); - form->fields.push_back(field); - } else { - test::CreateTestFormField("Expiration Date", "ccmonth", "", "text", - &field); - form->fields.push_back(field); - test::CreateTestFormField("", "ccyear", "", "text", &field); - form->fields.push_back(field); - } + test::CreateTestFormField("Expiration Date", "ccmonth", "", "text", &field); + form->fields.push_back(field); + test::CreateTestFormField("", "ccyear", "", "text", &field); + form->fields.push_back(field); test::CreateTestFormField("CVC", "cvc", "", "text", &field); form->fields.push_back(field); } @@ -263,7 +289,8 @@ void TestSaveCreditCards(bool is_https) { // Set up our form data. FormData form; - CreateTestCreditCardFormData(&form, is_https, false); + CreateTestCreditCardFormData( + &form, CreditCardFormOptions().with_is_https(is_https)); std::vector<FormData> forms(1, form); FormsSeen(forms); @@ -403,7 +430,8 @@ // Set up our form data. FormData form; - CreateTestCreditCardFormData(&form, false, false); + CreateTestCreditCardFormData(&form, + CreditCardFormOptions().with_is_https(false)); // Set "autocomplete=off" for cardnumber field. form.fields[1].should_autocomplete = false; @@ -424,7 +452,7 @@ TEST_F(CreditCardSaveManagerTest, InvalidCreditCardNumberIsNotSaved) { // Set up our form data. FormData form; - CreateTestCreditCardFormData(&form, true, false); + CreateTestCreditCardFormData(&form, CreditCardFormOptions()); std::vector<FormData> forms(1, form); FormsSeen(forms); @@ -451,7 +479,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -488,7 +516,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -554,7 +582,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -625,8 +653,8 @@ // Set up our credit card form data with credit card first and last name // fields. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions().with_split_names(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -736,8 +764,8 @@ // Set up our credit card form data with credit card first and last name // fields. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions().with_split_names(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -779,9 +807,10 @@ // Set up our credit card form data with non_focusable form field. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true, - /*is_from_non_focusable_form=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions() + .with_split_names(true) + .with_is_from_non_focusable_form(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -827,9 +856,10 @@ // Set up our credit card form data with non_focusable form field. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true, - /*is_from_non_focusable_form=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions() + .with_split_names(true) + .with_is_from_non_focusable_form(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -865,9 +895,10 @@ // Set up our credit card form data with non_focusable form field. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true, - /*is_from_non_focusable_form=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions() + .with_split_names(true) + .with_is_from_non_focusable_form(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -905,9 +936,10 @@ // Set up our credit card form data with non_focusable form field. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true, - /*is_from_non_focusable_form=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions() + .with_split_names(true) + .with_is_from_non_focusable_form(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -941,8 +973,8 @@ // Set up our credit card form data with credit card first and last name // fields. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions().with_split_names(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1080,7 +1112,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1134,7 +1166,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1165,7 +1197,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1199,7 +1231,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -1238,7 +1270,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1547,7 +1579,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1593,7 +1625,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1631,7 +1663,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1673,7 +1705,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a name, and submit. @@ -1705,7 +1737,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a name, and submit. @@ -1755,7 +1787,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(3 /* num_fillable_forms_parsed */); @@ -1804,7 +1836,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen({credit_card_form}); // Edit the data and submit. @@ -1851,7 +1883,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data and submit. @@ -1893,7 +1925,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -1937,7 +1969,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen({credit_card_form}); // Edit the data, but use the name with a middle initial *and* period, and @@ -1977,7 +2009,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen({credit_card_form}); // Edit the data, but do not use middle initial. @@ -2012,7 +2044,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen({credit_card_form}); // Edit the name by adding a middle name. @@ -2050,7 +2082,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen({credit_card_form}); // Edit the name by removing middle name. @@ -2097,7 +2129,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but use yet another name, and submit. @@ -2148,7 +2180,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but use yet another name, and submit. @@ -2189,7 +2221,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a name, and submit. @@ -2231,7 +2263,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but include a conflicting name, and submit. @@ -2269,10 +2301,8 @@ FormSubmitted(address_form); // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*split_names=*/false, /*split_names=*/false, - /*is_from_non_focusable_form*/ false, - /*is_google_host*/ true); + CreateTestCreditCardFormData( + &credit_card_form, CreditCardFormOptions().with_is_google_host(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2306,10 +2336,9 @@ FormSubmitted(address_form); // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*split_names=*/false, /*split_names=*/false, - /*is_from_non_focusable_form*/ false, - /*is_google_host*/ true); + CreateTestCreditCardFormData( + &credit_card_form, CreditCardFormOptions().with_is_google_host(true)); + FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2343,7 +2372,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2390,7 +2419,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a name, and submit. @@ -2437,7 +2466,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but include a conflicting name, and submit. @@ -2481,7 +2510,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a name, and submit. @@ -2523,7 +2552,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but include a conflicting name, and submit. @@ -2569,7 +2598,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a name, and submit. @@ -2620,7 +2649,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, but don't include a expiration date, and submit. @@ -2671,7 +2700,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2702,7 +2731,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2745,7 +2774,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2788,7 +2817,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2831,7 +2860,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2875,7 +2904,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data with 2 digit year and submit. @@ -2919,7 +2948,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -2969,7 +2998,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen({credit_card_form}); // Edit the credit card form and submit. @@ -3007,7 +3036,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3052,7 +3081,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3093,7 +3122,7 @@ TEST_P(CreditCardSaveManagerFeatureParameterizedTest, NothingIfNothingFound) { // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3111,7 +3140,7 @@ TEST_P(CreditCardSaveManagerFeatureParameterizedTest, DetectCvc) { // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3133,7 +3162,7 @@ TEST_P(CreditCardSaveManagerFeatureParameterizedTest, DetectCardholderName) { // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3162,7 +3191,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3192,7 +3221,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3223,7 +3252,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3247,7 +3276,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3281,7 +3310,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3305,7 +3334,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3334,7 +3363,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3363,7 +3392,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3392,7 +3421,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3421,7 +3450,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3455,7 +3484,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3495,7 +3524,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3544,7 +3573,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3584,7 +3613,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3637,7 +3666,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3678,8 +3707,8 @@ // Set up our credit card form data with credit card first and last name // fields. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions().with_split_names(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3725,7 +3754,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3756,7 +3785,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3799,7 +3828,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3841,7 +3870,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3885,7 +3914,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3941,7 +3970,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -3984,7 +4013,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4042,7 +4071,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4083,7 +4112,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4138,7 +4167,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4183,7 +4212,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4213,7 +4242,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4242,7 +4271,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4264,7 +4293,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4294,7 +4323,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4323,7 +4352,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4353,7 +4382,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4393,7 +4422,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -4432,7 +4461,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -4484,7 +4513,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4527,7 +4556,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -4577,7 +4606,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4619,7 +4648,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -4667,7 +4696,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4714,7 +4743,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -4766,7 +4795,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4811,7 +4840,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -4856,7 +4885,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -4893,7 +4922,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -4942,7 +4971,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -5003,7 +5032,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -5054,7 +5083,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -5098,7 +5127,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -5147,7 +5176,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -5196,7 +5225,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -5249,7 +5278,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -5292,7 +5321,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -5335,7 +5364,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -5370,7 +5399,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(1 /* num_fillable_forms_parsed */); @@ -5417,7 +5446,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); ExpectFillableFormParsedUkm(2 /* num_fillable_forms_parsed */); @@ -5500,8 +5529,8 @@ // Set up our credit card form data with credit card first and last name // fields. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions().with_split_names(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -5551,8 +5580,8 @@ // Set up our credit card form data with credit card first and last name // fields. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, /*is_https=*/true, - /*use_month_type=*/false, /*split_names=*/true); + CreateTestCreditCardFormData(&credit_card_form, + CreditCardFormOptions().with_split_names(true)); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -5584,7 +5613,7 @@ payments_client_->SetSupportedBINRanges(supported_card_bin_ranges); // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit. @@ -5612,7 +5641,7 @@ payments_client_->SetSupportedBINRanges(supported_card_bin_ranges); // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Add a local credit card whose number matches what we will @@ -5647,7 +5676,7 @@ // Set up our credit card form data. FormData credit_card_form; - CreateTestCreditCardFormData(&credit_card_form, true, false); + CreateTestCreditCardFormData(&credit_card_form, CreditCardFormOptions()); FormsSeen(std::vector<FormData>(1, credit_card_form)); // Edit the data, and submit.
diff --git a/components/autofill/core/browser/suggestion_selection.cc b/components/autofill/core/browser/suggestion_selection.cc index 5d18a56..5311f20 100644 --- a/components/autofill/core/browser/suggestion_selection.cc +++ b/components/autofill/core/browser/suggestion_selection.cc
@@ -60,6 +60,10 @@ // indices clicked by our users. The suggestions will also refine as they type. constexpr size_t kMaxUniqueSuggestionsCount = 10; +// This is the maximum number of suggestions that will be displayed when the +// kAutofillPruneSuggestions flag is enabled. +constexpr size_t kMaxPrunedUniqueSuggestionsCount = 3; + std::vector<Suggestion> GetPrefixMatchedSuggestions( const AutofillType& type, const base::string16& field_contents_canon, @@ -131,11 +135,18 @@ std::vector<AutofillProfile*>* unique_matched_profiles) { std::vector<Suggestion> unique_suggestions; - // Limit number of unique profiles as having too many makes the browser hang - // due to drawing calculations (and is also not very useful for the user). + size_t max_num_suggestions = + base::FeatureList::IsEnabled( + autofill::features::kAutofillPruneSuggestions) + ? kMaxPrunedUniqueSuggestionsCount + : kMaxUniqueSuggestionsCount; + + // Limit number of unique profiles as having too many makes the + // browser hang due to drawing calculations (and is also not + // very useful for the user). ServerFieldTypeSet types(field_types.begin(), field_types.end()); for (size_t i = 0; i < matched_profiles.size() && - unique_suggestions.size() < kMaxUniqueSuggestionsCount; + unique_suggestions.size() < max_num_suggestions; ++i) { bool include = true; AutofillProfile* profile_a = matched_profiles[i]; @@ -166,7 +177,6 @@ unique_suggestions.push_back(suggestions[i]); } } - return unique_suggestions; }
diff --git a/components/autofill/core/browser/suggestion_selection.h b/components/autofill/core/browser/suggestion_selection.h index dd8bf52..319c38e 100644 --- a/components/autofill/core/browser/suggestion_selection.h +++ b/components/autofill/core/browser/suggestion_selection.h
@@ -22,6 +22,7 @@ extern const size_t kMaxSuggestedProfilesCount; extern const size_t kMaxUniqueSuggestionsCount; +extern const size_t kMaxPrunedUniqueSuggestionsCount; // Matches based on prefix search, and limits number of profiles. // Returns the top matching suggestions based on prefix search, and adds the
diff --git a/components/autofill/core/browser/suggestion_selection_unittest.cc b/components/autofill/core/browser/suggestion_selection_unittest.cc index 422afeb7..4d35f953 100644 --- a/components/autofill/core/browser/suggestion_selection_unittest.cc +++ b/components/autofill/core/browser/suggestion_selection_unittest.cc
@@ -190,7 +190,6 @@ /*enabled_features=*/{features::kAutofillProfileServerValidation, features::kAutofillProfileClientValidation}, /*disabled_features=*/{}); - const std::unique_ptr<AutofillProfile> profile_server_invalid = CreateProfileUniquePtr("Marion"); const std::unique_ptr<AutofillProfile> profile_client_invalid = @@ -314,6 +313,41 @@ } } +TEST_F(SuggestionSelectionTest, GetUniqueSuggestions_PruneSuggestions) { + base::test::ScopedFeatureList scoped_features; + scoped_features.InitAndEnableFeature(features::kAutofillPruneSuggestions); + + // Test limit of suggestions when the feature is enabled. + std::vector<std::unique_ptr<AutofillProfile>> profiles_data; + for (size_t i = 0; i < kMaxPrunedUniqueSuggestionsCount + 1; i++) { + profiles_data.push_back(CreateProfileUniquePtr( + base::StringPrintf("Bob %zu", i).c_str(), "Doe")); + } + + // Map all the pointers into an array that has the right type. + std::vector<AutofillProfile*> profiles_pointers; + std::transform(profiles_data.begin(), profiles_data.end(), + std::back_inserter(profiles_pointers), + [](const std::unique_ptr<AutofillProfile>& profile) { + return profile.get(); + }); + + std::vector<AutofillProfile*> unique_matched_profiles; + auto unique_suggestions = GetUniqueSuggestions( + {NAME_LAST}, comparator_, app_locale_, profiles_pointers, + CreateSuggestions(profiles_pointers, NAME_FIRST), + &unique_matched_profiles); + + ASSERT_EQ(kMaxPrunedUniqueSuggestionsCount, unique_suggestions.size()); + ASSERT_EQ(kMaxPrunedUniqueSuggestionsCount, unique_matched_profiles.size()); + + // All profiles are different. + for (size_t i = 0; i < unique_suggestions.size(); i++) { + ASSERT_EQ(base::ASCIIToUTF16(base::StringPrintf("Bob %zu", i)), + unique_suggestions[i].value); + } +} + TEST_F(SuggestionSelectionTest, GetUniqueSuggestions_EmptyMatchingProfiles) { std::vector<AutofillProfile*> unique_matched_profiles; auto unique_suggestions = GetUniqueSuggestions(
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc index d861b6d..665162d 100644 --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc
@@ -105,6 +105,9 @@ const base::Feature kAutofillManualFallbackPhaseTwo{ "AutofillManualFallbackPhaseTwo", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kAutofillPruneSuggestions{ + "AutofillPruneSuggestions", base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kAutofillMetadataUploads{"AutofillMetadataUploads", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h index f8a1e66..c99f3c70 100644 --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h
@@ -39,6 +39,7 @@ extern const base::Feature kAutofillKeyboardAccessory; extern const base::Feature kAutofillManualFallback; extern const base::Feature kAutofillManualFallbackPhaseTwo; +extern const base::Feature kAutofillPruneSuggestions; extern const base::Feature kAutofillMetadataUploads; extern const base::Feature kAutofillOffNoServerData; extern const base::Feature kAutofillOverrideWithRaterConsensus;
diff --git a/components/autofill/ios/browser/BUILD.gn b/components/autofill/ios/browser/BUILD.gn index 58fe3dab..688e561 100644 --- a/components/autofill/ios/browser/BUILD.gn +++ b/components/autofill/ios/browser/BUILD.gn
@@ -40,7 +40,8 @@ "//components/prefs:prefs", "//components/prefs/ios", "//google_apis", - "//ios/web", + "//ios/web/common", + "//ios/web/public", "//services/network/public/cpp", "//ui/gfx/geometry", ]
diff --git a/components/autofill/ios/browser/DEPS b/components/autofill/ios/browser/DEPS index c6de2be..cfaa9b0 100644 --- a/components/autofill/ios/browser/DEPS +++ b/components/autofill/ios/browser/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+ios/web/common", "+ios/web/public", "+services/network/public/cpp", "+third_party/ocmock",
diff --git a/components/autofill/ios/browser/autofill_driver_ios.mm b/components/autofill/ios/browser/autofill_driver_ios.mm index 07d835f..686120ae 100644 --- a/components/autofill/ios/browser/autofill_driver_ios.mm +++ b/components/autofill/ios/browser/autofill_driver_ios.mm
@@ -8,8 +8,8 @@ #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/ios/browser/autofill_driver_ios_bridge.h" #include "components/autofill/ios/browser/autofill_driver_ios_webframe.h" +#import "ios/web/common/origin_util.h" #include "ios/web/public/browser_state.h" -#import "ios/web/public/origin_util.h" #import "ios/web/public/web_state/web_frame_util.h" #import "ios/web/public/web_state/web_state.h" #include "services/network/public/cpp/shared_url_loader_factory.h"
diff --git a/components/cronet/cronet_url_request_context.cc b/components/cronet/cronet_url_request_context.cc index 899f12e..3212188d 100644 --- a/components/cronet/cronet_url_request_context.cc +++ b/components/cronet/cronet_url_request_context.cc
@@ -393,7 +393,7 @@ static_cast<uint16_t>(quic_hint->alternate_port)); context_->http_server_properties()->SetQuicAlternativeService( quic_server, alternative_service, base::Time::Max(), - quic::QuicTransportVersionVector()); + quic::ParsedQuicVersionVector()); } }
diff --git a/components/cronet/ios/cronet_environment.mm b/components/cronet/ios/cronet_environment.mm index 478b15b..72b7674 100644 --- a/components/cronet/ios/cronet_environment.mm +++ b/components/cronet/ios/cronet_environment.mm
@@ -402,7 +402,7 @@ quic_hint.port()); main_context_->http_server_properties()->SetQuicAlternativeService( quic_hint_server, alternative_service, base::Time::Max(), - quic::QuicTransportVersionVector()); + quic::ParsedQuicVersionVector()); } main_context_->transport_security_state()
diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc index aebd97a..75df963 100644 --- a/components/cronet/url_request_context_config.cc +++ b/components/cronet/url_request_context_config.cc
@@ -203,9 +203,9 @@ return result; } -quic::QuicTransportVersionVector ParseQuicVersions( +quic::ParsedQuicVersionVector ParseQuicVersions( const std::string& quic_versions) { - quic::QuicTransportVersionVector supported_versions; + quic::ParsedQuicVersionVector supported_versions; quic::QuicTransportVersionVector all_supported_versions = quic::AllSupportedTransportVersions(); @@ -214,7 +214,8 @@ auto it = all_supported_versions.begin(); while (it != all_supported_versions.end()) { if (quic::QuicVersionToString(*it) == version) { - supported_versions.push_back(*it); + supported_versions.push_back( + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, *it)); // Remove the supported version to deduplicate versions extracted from // |quic_versions|. all_supported_versions.erase(it); @@ -336,7 +337,7 @@ std::string quic_version_string; if (quic_args->GetString(kQuicVersion, &quic_version_string)) { - quic::QuicTransportVersionVector supported_versions = + quic::ParsedQuicVersionVector supported_versions = ParseQuicVersions(quic_version_string); if (!supported_versions.empty()) session_params->quic_supported_versions = supported_versions;
diff --git a/components/cronet/url_request_context_config_unittest.cc b/components/cronet/url_request_context_config_unittest.cc index 2b094f7f..3143fcd 100644 --- a/components/cronet/url_request_context_config_unittest.cc +++ b/components/cronet/url_request_context_config_unittest.cc
@@ -334,7 +334,9 @@ const net::HttpNetworkSession::Params* params = context->GetNetworkSessionParams(); EXPECT_EQ(params->quic_supported_versions.size(), 1u); - EXPECT_EQ(params->quic_supported_versions[0], quic::QUIC_VERSION_44); + EXPECT_EQ(params->quic_supported_versions[0], + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_44)); } TEST(URLRequestContextConfigTest, SetUnsupportedQuicVersion) { @@ -385,7 +387,9 @@ const net::HttpNetworkSession::Params* params = context->GetNetworkSessionParams(); EXPECT_EQ(params->quic_supported_versions.size(), 1u); - EXPECT_EQ(params->quic_supported_versions[0], quic::QUIC_VERSION_43); + EXPECT_EQ(params->quic_supported_versions[0], + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_43)); } TEST(URLRequestContextConfigTest, SetQuicServerMigrationOptions) {
diff --git a/components/download/internal/common/BUILD.gn b/components/download/internal/common/BUILD.gn index 2c3ee13..419ee87c 100644 --- a/components/download/internal/common/BUILD.gn +++ b/components/download/internal/common/BUILD.gn
@@ -74,8 +74,10 @@ "//components/leveldb_proto", "//mojo/public/c/system", "//net", + "//services/device/public/mojom:mojom", "//services/metrics/public/cpp:ukm_builders", "//services/network/public/cpp", + "//services/service_manager/public/cpp:cpp", ] if (is_android) {
diff --git a/components/download/internal/common/DEPS b/components/download/internal/common/DEPS index 713aa40..015703b0 100644 --- a/components/download/internal/common/DEPS +++ b/components/download/internal/common/DEPS
@@ -22,7 +22,9 @@ "+net/http/http_util.h", "+net/traffic_annotation/network_traffic_annotation.h", "+net/url_request/url_request_context_getter.h", + "+services/device/public/mojom", "+services/metrics/public/cpp", "+services/network/public/cpp", "+services/network/public/mojom", + "+services/service_manager/public/cpp", ]
diff --git a/components/download/internal/common/download_item_impl.cc b/components/download/internal/common/download_item_impl.cc index b1bc7b7d..09a3173f 100644 --- a/components/download/internal/common/download_item_impl.cc +++ b/components/download/internal/common/download_item_impl.cc
@@ -421,7 +421,7 @@ weak_ptr_factory_(this) { job_ = DownloadJobFactory::CreateJob(this, std::move(request_handle), DownloadCreateInfo(), true, nullptr, - nullptr); + nullptr, nullptr); delegate_->Attach(); Init(true /* actively downloading */, TYPE_SAVE_PAGE_AS); } @@ -1398,7 +1398,8 @@ download_file_ = std::move(file); job_ = DownloadJobFactory::CreateJob( this, std::move(req_handle), new_create_info, false, - std::move(url_loader_factory_getter), url_request_context_getter); + std::move(url_loader_factory_getter), url_request_context_getter, + delegate_ ? delegate_->GetServiceManagerConnector() : nullptr); if (job_->IsParallelizable()) { RecordParallelizableDownloadCount(START_COUNT, IsParallelDownloadEnabled()); }
diff --git a/components/download/internal/common/download_item_impl_delegate.cc b/components/download/internal/common/download_item_impl_delegate.cc index cc3fb6af5d..f5dff20a 100644 --- a/components/download/internal/common/download_item_impl_delegate.cc +++ b/components/download/internal/common/download_item_impl_delegate.cc
@@ -103,4 +103,9 @@ void DownloadItemImplDelegate::ReportBytesWasted(DownloadItemImpl* download) {} +service_manager::Connector* +DownloadItemImplDelegate::GetServiceManagerConnector() { + return nullptr; +} + } // namespace download
diff --git a/components/download/internal/common/download_job_factory.cc b/components/download/internal/common/download_job_factory.cc index f3cea3ae..0c35188 100644 --- a/components/download/internal/common/download_job_factory.cc +++ b/components/download/internal/common/download_job_factory.cc
@@ -98,7 +98,8 @@ bool is_save_package_download, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - net::URLRequestContextGetter* url_request_context_getter) { + net::URLRequestContextGetter* url_request_context_getter, + service_manager::Connector* connector) { if (is_save_package_download) { return std::make_unique<SavePackageDownloadJob>(download_item, std::move(req_handle)); @@ -109,7 +110,8 @@ if (IsParallelDownloadEnabled() && is_parallelizable) { return std::make_unique<ParallelDownloadJob>( download_item, std::move(req_handle), create_info, - std::move(url_loader_factory_getter), url_request_context_getter); + std::move(url_loader_factory_getter), url_request_context_getter, + connector); } // An ordinary download job.
diff --git a/components/download/internal/common/download_worker.cc b/components/download/internal/common/download_worker.cc index 05f8261..ad5bec8 100644 --- a/components/download/internal/common/download_worker.cc +++ b/components/download/internal/common/download_worker.cc
@@ -16,6 +16,7 @@ #include "net/url_request/url_request_context_getter.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/shared_url_loader_factory.h" +#include "services/service_manager/public/cpp/connector.h" namespace download { namespace { @@ -55,10 +56,12 @@ url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { auto downloader = UrlDownloadHandlerFactory::Create( std::move(params), delegate, std::move(url_loader_factory_getter), - url_security_policy, std::move(url_request_context_getter), task_runner); + url_security_policy, std::move(url_request_context_getter), + std::move(connector), task_runner); task_runner->PostTask( FROM_HERE, base::BindOnce(&UrlDownloadHandler::Delegate::OnUrlDownloadHandlerCreated, @@ -87,13 +90,15 @@ std::unique_ptr<DownloadUrlParameters> params, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - scoped_refptr<net::URLRequestContextGetter> url_request_context_getter) { + scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + service_manager::Connector* connector) { GetIOTaskRunner()->PostTask( FROM_HERE, base::BindOnce(&CreateUrlDownloadHandler, std::move(params), weak_factory_.GetWeakPtr(), std::move(url_loader_factory_getter), base::BindRepeating(&IsURLSafe), std::move(url_request_context_getter), + connector ? connector->Clone() : nullptr, base::ThreadTaskRunnerHandle::Get())); }
diff --git a/components/download/internal/common/download_worker.h b/components/download/internal/common/download_worker.h index ec81471..6021c06 100644 --- a/components/download/internal/common/download_worker.h +++ b/components/download/internal/common/download_worker.h
@@ -17,7 +17,11 @@ namespace net { class URLRequestContextGetter; -} +} // namespace net + +namespace service_manager { +class Connector; +} // namespace service_manager namespace download { class DownloadURLLoaderFactoryGetter; @@ -53,7 +57,8 @@ std::unique_ptr<DownloadUrlParameters> params, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - scoped_refptr<net::URLRequestContextGetter> url_request_context_getter); + scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + service_manager::Connector* connector); // Download operations. void Pause();
diff --git a/components/download/internal/common/in_progress_download_manager.cc b/components/download/internal/common/in_progress_download_manager.cc index 3298338e..0219413c 100644 --- a/components/download/internal/common/in_progress_download_manager.cc +++ b/components/download/internal/common/in_progress_download_manager.cc
@@ -27,6 +27,7 @@ #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/cpp/resource_response.h" +#include "services/service_manager/public/cpp/connector.h" #if defined(OS_ANDROID) #include "components/download/internal/common/android/download_collection_bridge.h" @@ -86,13 +87,15 @@ const GURL& site_url, const GURL& tab_url, const GURL& tab_referrer_url, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner) { DCHECK(GetIOTaskRunner()->BelongsToCurrentThread()); UrlDownloadHandler::UniqueUrlDownloadHandlerPtr downloader( ResourceDownloader::BeginDownload( download_manager, std::move(params), std::move(request), std::move(url_loader_factory_getter), url_security_policy, site_url, - tab_url, tab_referrer_url, is_new_download, false, main_task_runner) + tab_url, tab_referrer_url, is_new_download, false, + std::move(connector), main_task_runner) .release(), base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get())); @@ -114,6 +117,7 @@ network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints, scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner) { DCHECK(GetIOTaskRunner()->BelongsToCurrentThread()); UrlDownloadHandler::UniqueUrlDownloadHandlerPtr downloader( @@ -123,7 +127,7 @@ std::move(url_chain), std::move(response), std::move(cert_status), std::move(url_loader_client_endpoints), std::move(url_loader_factory_getter), url_security_policy, - main_task_runner) + std::move(connector), main_task_runner) .release(), base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get())); @@ -204,7 +208,6 @@ bool InProgressDownloadManager::DownloadUrl( std::unique_ptr<DownloadUrlParameters> params) { - DCHECK(!delegate_); DCHECK(params->is_transient()); if (!url_loader_factory_getter_) @@ -248,13 +251,15 @@ const GURL& tab_referrer_url) { std::unique_ptr<network::ResourceRequest> request = CreateResourceRequest(params.get()); + auto connector = delegate_ ? delegate_->GetServiceConnector() : nullptr; GetIOTaskRunner()->PostTask( FROM_HERE, base::BindOnce(&BeginResourceDownload, std::move(params), std::move(request), std::move(url_loader_factory_getter), url_security_policy_, is_new_download, weak_factory_.GetWeakPtr(), site_url, tab_url, - tab_referrer_url, base::ThreadTaskRunnerHandle::Get())); + tab_referrer_url, std::move(connector), + base::ThreadTaskRunnerHandle::Get())); } void InProgressDownloadManager::InterceptDownloadFromNavigation( @@ -269,16 +274,17 @@ net::CertStatus cert_status, network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints, scoped_refptr<DownloadURLLoaderFactoryGetter> url_loader_factory_getter) { + auto connector = delegate_ ? delegate_->GetServiceConnector() : nullptr; GetIOTaskRunner()->PostTask( FROM_HERE, - base::BindOnce(&CreateDownloadHandlerForNavigation, - weak_factory_.GetWeakPtr(), std::move(resource_request), - render_process_id, render_frame_id, site_url, tab_url, - tab_referrer_url, std::move(url_chain), - std::move(response), std::move(cert_status), - std::move(url_loader_client_endpoints), - std::move(url_loader_factory_getter), url_security_policy_, - base::ThreadTaskRunnerHandle::Get())); + base::BindOnce( + &CreateDownloadHandlerForNavigation, weak_factory_.GetWeakPtr(), + std::move(resource_request), render_process_id, render_frame_id, + site_url, tab_url, tab_referrer_url, std::move(url_chain), + std::move(response), std::move(cert_status), + std::move(url_loader_client_endpoints), + std::move(url_loader_factory_getter), url_security_policy_, + std::move(connector), base::ThreadTaskRunnerHandle::Get())); } void InProgressDownloadManager::Initialize(
diff --git a/components/download/internal/common/parallel_download_job.cc b/components/download/internal/common/parallel_download_job.cc index 376700af3..1ac7dbbb 100644 --- a/components/download/internal/common/parallel_download_job.cc +++ b/components/download/internal/common/parallel_download_job.cc
@@ -27,7 +27,8 @@ const DownloadCreateInfo& create_info, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - net::URLRequestContextGetter* url_request_context_getter) + net::URLRequestContextGetter* url_request_context_getter, + service_manager::Connector* connector) : DownloadJobImpl(download_item, std::move(request_handle), true), initial_request_offset_(create_info.offset), initial_received_slices_(download_item->GetReceivedSlices()), @@ -35,7 +36,8 @@ requests_sent_(false), is_canceled_(false), url_loader_factory_getter_(std::move(url_loader_factory_getter)), - url_request_context_getter_(url_request_context_getter) {} + url_request_context_getter_(url_request_context_getter), + connector_(connector) {} ParallelDownloadJob::~ParallelDownloadJob() = default; @@ -298,7 +300,7 @@ // Send the request. worker->SendRequest(std::move(download_params), url_loader_factory_getter_, - url_request_context_getter_); + url_request_context_getter_, connector_); DCHECK(workers_.find(offset) == workers_.end()); workers_[offset] = std::move(worker); }
diff --git a/components/download/internal/common/parallel_download_job.h b/components/download/internal/common/parallel_download_job.h index 1c79129..71c45c86 100644 --- a/components/download/internal/common/parallel_download_job.h +++ b/components/download/internal/common/parallel_download_job.h
@@ -19,7 +19,11 @@ namespace net { class URLRequestContextGetter; -} +} // namespace net + +namespace service_manager { +class Connector; +} // namespace service_manager namespace download { @@ -38,7 +42,8 @@ const DownloadCreateInfo& create_info, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - net::URLRequestContextGetter* url_request_context_getter); + net::URLRequestContextGetter* url_request_context_getter, + service_manager::Connector* connector); ~ParallelDownloadJob() override; // DownloadJobImpl implementation. @@ -122,6 +127,9 @@ // is disabled. scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; + // Connector used for establishing the connection to the ServiceManager. + service_manager::Connector* connector_; + DISALLOW_COPY_AND_ASSIGN(ParallelDownloadJob); };
diff --git a/components/download/internal/common/parallel_download_job_unittest.cc b/components/download/internal/common/parallel_download_job_unittest.cc index 7e66b75..d227cf42 100644 --- a/components/download/internal/common/parallel_download_job_unittest.cc +++ b/components/download/internal/common/parallel_download_job_unittest.cc
@@ -69,6 +69,7 @@ std::move(request_handle), create_info, nullptr, + nullptr, nullptr), request_count_(request_count), min_slice_size_(min_slice_size),
diff --git a/components/download/internal/common/resource_downloader.cc b/components/download/internal/common/resource_downloader.cc index b5b86b0..9d8d4fd 100644 --- a/components/download/internal/common/resource_downloader.cc +++ b/components/download/internal/common/resource_downloader.cc
@@ -10,7 +10,10 @@ #include "components/download/public/common/download_url_loader_factory_getter.h" #include "components/download/public/common/stream_handle_input_stream.h" #include "components/download/public/common/url_download_request_handle.h" +#include "services/device/public/mojom/constants.mojom.h" +#include "services/device/public/mojom/wake_lock_provider.mojom.h" #include "services/network/public/cpp/shared_url_loader_factory.h" +#include "services/service_manager/public/cpp/connector.h" namespace network { struct ResourceResponseHead; @@ -67,12 +70,14 @@ const GURL& tab_referrer_url, bool is_new_download, bool is_parallel_request, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { auto downloader = std::make_unique<ResourceDownloader>( delegate, std::move(request), params->render_process_host_id(), params->render_frame_host_routing_id(), site_url, tab_url, tab_referrer_url, is_new_download, task_runner, - std::move(url_loader_factory_getter), url_security_policy); + std::move(url_loader_factory_getter), url_security_policy, + std::move(connector)); downloader->Start(std::move(params), is_parallel_request); return downloader; @@ -95,11 +100,13 @@ scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { auto downloader = std::make_unique<ResourceDownloader>( delegate, std::move(resource_request), render_process_id, render_frame_id, site_url, tab_url, tab_referrer_url, true, task_runner, - std::move(url_loader_factory_getter), url_security_policy); + std::move(url_loader_factory_getter), url_security_policy, + std::move(connector)); downloader->InterceptResponse(std::move(response), std::move(url_chain), cert_status, std::move(url_loader_client_endpoints)); @@ -118,7 +125,8 @@ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - const URLSecurityPolicy& url_security_policy) + const URLSecurityPolicy& url_security_policy, + std::unique_ptr<service_manager::Connector> connector) : delegate_(delegate), resource_request_(std::move(resource_request)), is_new_download_(is_new_download), @@ -130,7 +138,9 @@ delegate_task_runner_(task_runner), url_loader_factory_getter_(std::move(url_loader_factory_getter)), url_security_policy_(url_security_policy), - weak_ptr_factory_(this) {} + weak_ptr_factory_(this) { + RequestWakeLock(connector.get()); +} ResourceDownloader::~ResourceDownloader() = default; @@ -254,10 +264,27 @@ } void ResourceDownloader::Destroy() { + if (wake_lock_) + wake_lock_->CancelWakeLock(); delegate_task_runner_->PostTask( FROM_HERE, base::BindOnce(&UrlDownloadHandler::Delegate::OnUrlDownloadStopped, delegate_, this)); } +void ResourceDownloader::RequestWakeLock( + service_manager::Connector* connector) { + if (!connector) + return; + device::mojom::WakeLockProviderPtr wake_lock_provider; + connector->BindInterface(device::mojom::kServiceName, + mojo::MakeRequest(&wake_lock_provider)); + wake_lock_provider->GetWakeLockWithoutContext( + device::mojom::WakeLockType::kPreventAppSuspension, + device::mojom::WakeLockReason::kOther, "Download in progress", + mojo::MakeRequest(&wake_lock_)); + + wake_lock_->RequestWakeLock(); +} + } // namespace download
diff --git a/components/download/internal/common/resource_downloader.h b/components/download/internal/common/resource_downloader.h index 63664cf..b2f8ec7 100644 --- a/components/download/internal/common/resource_downloader.h +++ b/components/download/internal/common/resource_downloader.h
@@ -12,9 +12,14 @@ #include "components/download/public/common/url_download_handler.h" #include "mojo/public/cpp/bindings/binding.h" #include "net/cert/cert_status_flags.h" +#include "services/device/public/mojom/wake_lock.mojom.h" #include "services/network/public/cpp/resource_request.h" #include "services/network/public/mojom/url_loader.mojom.h" +namespace service_manager { +class Connector; +} // namespace service_manager + namespace download { class DownloadURLLoaderFactoryGetter; @@ -36,6 +41,7 @@ const GURL& tab_referrer_url, bool is_new_download, bool is_parallel_request, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); // Create a ResourceDownloader from a navigation that turns to be a download. @@ -56,6 +62,7 @@ scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); ResourceDownloader( @@ -70,7 +77,8 @@ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - const URLSecurityPolicy& url_security_policy); + const URLSecurityPolicy& url_security_policy, + std::unique_ptr<service_manager::Connector> connector); ~ResourceDownloader() override; // download::DownloadResponseHandler::Delegate @@ -101,6 +109,9 @@ // Ask the |delegate_| to destroy this object. void Destroy(); + // Requests the wake lock using |connector|. + void RequestWakeLock(service_manager::Connector* connector); + base::WeakPtr<download::UrlDownloadHandler::Delegate> delegate_; // The ResourceRequest for this object. @@ -154,6 +165,11 @@ // Used to check if the URL is safe to request. URLSecurityPolicy url_security_policy_; + // Used to keep the system from sleeping while a download is ongoing. If the + // system enters power saving mode while a download is alive, it can cause + // download to be interrupted. + device::mojom::WakeLockPtr wake_lock_; + base::WeakPtrFactory<ResourceDownloader> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(ResourceDownloader);
diff --git a/components/download/internal/common/url_download_handler_factory.cc b/components/download/internal/common/url_download_handler_factory.cc index b88c1ff..c295bc9 100644 --- a/components/download/internal/common/url_download_handler_factory.cc +++ b/components/download/internal/common/url_download_handler_factory.cc
@@ -12,6 +12,7 @@ #include "components/download/public/common/download_utils.h" #include "net/url_request/url_request_context_getter.h" #include "services/network/public/cpp/shared_url_loader_factory.h" +#include "services/service_manager/public/cpp/connector.h" namespace download { @@ -31,6 +32,7 @@ url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) override { std::unique_ptr<network::ResourceRequest> request = CreateResourceRequest(params.get()); @@ -38,7 +40,7 @@ download::ResourceDownloader::BeginDownload( delegate, std::move(params), std::move(request), std::move(url_loader_factory_getter), url_security_policy, GURL(), - GURL(), GURL(), true, true, task_runner) + GURL(), GURL(), true, true, std::move(connector), task_runner) .release(), base::OnTaskRunnerDeleter(base::ThreadTaskRunnerHandle::Get())); } @@ -66,6 +68,7 @@ url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { base::AutoLock auto_lock(GetURLDownloadHandlerFactoryLock()); if (!g_url_download_handler_factory) @@ -73,7 +76,7 @@ return g_url_download_handler_factory->CreateUrlDownloadHandler( std::move(params), delegate, std::move(url_loader_factory_getter), std::move(url_security_policy), std::move(url_request_context_getter), - task_runner); + std::move(connector), task_runner); } // static
diff --git a/components/download/public/common/download_item_impl_delegate.h b/components/download/public/common/download_item_impl_delegate.h index a6eb5429..e67be44 100644 --- a/components/download/public/common/download_item_impl_delegate.h +++ b/components/download/public/common/download_item_impl_delegate.h
@@ -15,6 +15,10 @@ #include "components/download/public/common/download_item.h" #include "components/download/public/common/download_url_parameters.h" +namespace service_manager { +class Connector; +} // namespace service_manager + namespace download { struct DownloadEntry; class DownloadItemImpl; @@ -113,6 +117,9 @@ // Report extra bytes wasted during resumption. virtual void ReportBytesWasted(DownloadItemImpl* download); + // Gets the ServiceManager connector that can be used on UI thread. + virtual service_manager::Connector* GetServiceManagerConnector(); + private: // For "Outlives attached DownloadItemImpl" invariant assertion. int count_;
diff --git a/components/download/public/common/download_job_factory.h b/components/download/public/common/download_job_factory.h index cd44f441..d6660c107 100644 --- a/components/download/public/common/download_job_factory.h +++ b/components/download/public/common/download_job_factory.h
@@ -13,7 +13,11 @@ namespace net { class URLRequestContextGetter; -} +} // namespace net + +namespace service_manager { +class Connector; +} // namespace service_manager namespace download { @@ -32,7 +36,8 @@ bool is_save_package_download, scoped_refptr<download::DownloadURLLoaderFactoryGetter> url_loader_factory_getter, - net::URLRequestContextGetter* url_request_context_getter); + net::URLRequestContextGetter* url_request_context_getter, + service_manager::Connector* connector); private: DISALLOW_COPY_AND_ASSIGN(DownloadJobFactory);
diff --git a/components/download/public/common/in_progress_download_manager.h b/components/download/public/common/in_progress_download_manager.h index cebda480..feb59cd 100644 --- a/components/download/public/common/in_progress_download_manager.h +++ b/components/download/public/common/in_progress_download_manager.h
@@ -24,11 +24,15 @@ namespace net { class URLRequestContextGetter; -} +} // namespace net namespace network { struct ResourceResponse; -} +} // namespace network + +namespace service_manager { +class Connector; +} // namespace service_manager namespace download { @@ -77,6 +81,9 @@ // TODO(qinmin): remove this once network service is fully enabled. virtual net::URLRequestContextGetter* GetURLRequestContextGetter( const DownloadCreateInfo& download_create_info); + + virtual std::unique_ptr<service_manager::Connector> + GetServiceConnector() = 0; }; using IsOriginSecureCallback = base::RepeatingCallback<bool(const GURL&)>;
diff --git a/components/download/public/common/url_download_handler_factory.h b/components/download/public/common/url_download_handler_factory.h index bbe7195..8b30691e 100644 --- a/components/download/public/common/url_download_handler_factory.h +++ b/components/download/public/common/url_download_handler_factory.h
@@ -11,7 +11,11 @@ namespace net { class URLRequestContextGetter; -} +} // namespace net + +namespace service_manager { +class Connector; +} // namespace service_manager namespace download { class DownloadURLLoaderFactoryGetter; @@ -35,6 +39,7 @@ url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner); virtual ~UrlDownloadHandlerFactory(); @@ -52,6 +57,7 @@ url_loader_factory_getter, const URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) = 0; };
diff --git a/components/feed/core/feed_content_database.cc b/components/feed/core/feed_content_database.cc index fc0a630126..9d9c279 100644 --- a/components/feed/core/feed_content_database.cc +++ b/components/feed/core/feed_content_database.cc
@@ -243,18 +243,20 @@ ContentLoadCallback callback, bool success, std::unique_ptr<std::vector<ContentStorageProto>> content) { - std::vector<KeyAndData> results; - for (const auto& proto : *content) { - DCHECK(proto.has_key()); - DCHECK(proto.has_content_data()); - - results.emplace_back(proto.key(), proto.content_data()); - } - base::TimeDelta load_time = base::TimeTicks::Now() - start_time; UMA_HISTOGRAM_TIMES("ContentSuggestions.Feed.ContentStorage.LoadTime", load_time); + std::vector<KeyAndData> results; + if (success) { + for (const auto& proto : *content) { + DCHECK(proto.has_key()); + DCHECK(proto.has_content_data()); + + results.emplace_back(proto.key(), proto.content_data()); + } + } + std::move(callback).Run(success, std::move(results)); }
diff --git a/components/grpc_support/test/get_stream_engine.cc b/components/grpc_support/test/get_stream_engine.cc index d5e2a55..2647abe 100644 --- a/components/grpc_support/test/get_stream_engine.cc +++ b/components/grpc_support/test/get_stream_engine.cc
@@ -60,7 +60,7 @@ "https", net::QuicSimpleTestServer::GetHost(), 443); server_properties_->SetQuicAlternativeService( quic_hint_server, alternative_service, base::Time::Max(), - quic::QuicTransportVersionVector()); + quic::ParsedQuicVersionVector()); request_context_->set_cert_verifier(mock_cert_verifier_.get()); request_context_->set_host_resolver(host_resolver_.get());
diff --git a/components/network_session_configurator/browser/network_session_configurator.cc b/components/network_session_configurator/browser/network_session_configurator.cc index 3b00fa2f..287bf91 100644 --- a/components/network_session_configurator/browser/network_session_configurator.cc +++ b/components/network_session_configurator/browser/network_session_configurator.cc
@@ -429,7 +429,7 @@ return 0; } -quic::QuicTransportVersionVector GetQuicVersions( +quic::ParsedQuicVersionVector GetQuicVersions( const VariationParameters& quic_trial_params) { return network_session_configurator::ParseQuicVersions( GetVariationParam(quic_trial_params, "quic_version")); @@ -564,7 +564,7 @@ params->quic_user_agent_id = quic_user_agent_id; - quic::QuicTransportVersionVector supported_versions = + quic::ParsedQuicVersionVector supported_versions = GetQuicVersions(quic_trial_params); if (!supported_versions.empty()) params->quic_supported_versions = supported_versions; @@ -574,9 +574,9 @@ namespace network_session_configurator { -quic::QuicTransportVersionVector ParseQuicVersions( +quic::ParsedQuicVersionVector ParseQuicVersions( const std::string& quic_versions) { - quic::QuicTransportVersionVector supported_versions; + quic::ParsedQuicVersionVector supported_versions; quic::QuicTransportVersionVector all_supported_versions = quic::AllSupportedTransportVersions(); @@ -585,7 +585,8 @@ auto it = all_supported_versions.begin(); while (it != all_supported_versions.end()) { if (quic::QuicVersionToString(*it) == version) { - supported_versions.push_back(*it); + supported_versions.push_back( + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, *it)); // Remove the supported version to deduplicate versions extracted from // |quic_versions|. all_supported_versions.erase(it); @@ -642,7 +643,7 @@ } if (command_line.HasSwitch(switches::kQuicVersion)) { - quic::QuicTransportVersionVector supported_versions = + quic::ParsedQuicVersionVector supported_versions = network_session_configurator::ParseQuicVersions( command_line.GetSwitchValueASCII(switches::kQuicVersion)); if (!supported_versions.empty())
diff --git a/components/network_session_configurator/browser/network_session_configurator.h b/components/network_session_configurator/browser/network_session_configurator.h index f2b082d..ae50003c 100644 --- a/components/network_session_configurator/browser/network_session_configurator.h +++ b/components/network_session_configurator/browser/network_session_configurator.h
@@ -20,7 +20,7 @@ // trials and command line. // Parse serialized QUIC versions string. -quic::QuicTransportVersionVector ParseQuicVersions( +quic::ParsedQuicVersionVector ParseQuicVersions( const std::string& quic_versions); // Configure |params| based on field trials and command line,
diff --git a/components/network_session_configurator/browser/network_session_configurator_unittest.cc b/components/network_session_configurator/browser/network_session_configurator_unittest.cc index 002628a..fae07a36 100644 --- a/components/network_session_configurator/browser/network_session_configurator_unittest.cc +++ b/components/network_session_configurator/browser/network_session_configurator_unittest.cc
@@ -492,8 +492,8 @@ ParseFieldTrials(); - quic::QuicTransportVersionVector supported_versions; - supported_versions.push_back(quic::AllSupportedTransportVersions().back()); + quic::ParsedQuicVersionVector supported_versions; + supported_versions.push_back(quic::AllSupportedVersions().back()); EXPECT_EQ(supported_versions, params_.quic_supported_versions); } @@ -511,9 +511,9 @@ ParseFieldTrials(); - quic::QuicTransportVersionVector supported_versions; - supported_versions.push_back(quic::AllSupportedTransportVersions().front()); - supported_versions.push_back(quic::AllSupportedTransportVersions().back()); + quic::ParsedQuicVersionVector supported_versions; + supported_versions.push_back(quic::AllSupportedVersions().front()); + supported_versions.push_back(quic::AllSupportedVersions().back()); EXPECT_EQ(supported_versions, params_.quic_supported_versions); } @@ -530,8 +530,8 @@ ParseFieldTrials(); - quic::QuicTransportVersionVector supported_versions; - supported_versions.push_back(quic::AllSupportedTransportVersions().front()); + quic::ParsedQuicVersionVector supported_versions; + supported_versions.push_back(quic::AllSupportedVersions().front()); EXPECT_EQ(supported_versions, params_.quic_supported_versions); } @@ -670,7 +670,7 @@ quic::QuicVersionToString(version)); ParseCommandLineAndFieldTrials(command_line); ASSERT_EQ(1u, params_.quic_supported_versions.size()); - EXPECT_EQ(version, params_.quic_supported_versions[0]); + EXPECT_EQ(version, params_.quic_supported_versions[0].transport_version); } }
diff --git a/components/previews/content/previews_user_data.h b/components/previews/content/previews_user_data.h index 8b43022..252232fd 100644 --- a/components/previews/content/previews_user_data.h +++ b/components/previews/content/previews_user_data.h
@@ -126,7 +126,8 @@ offline_preview_used_ = offline_preview_used; } - // The PreviewsState that was allowed for the navigation. + // The PreviewsState that was allowed for the navigation. This should be used + // for metrics only. content::PreviewsState allowed_previews_state() const { return allowed_previews_state_; }
diff --git a/components/safe_browsing/DEPS b/components/safe_browsing/DEPS index d1948fa..53d7021 100644 --- a/components/safe_browsing/DEPS +++ b/components/safe_browsing/DEPS
@@ -14,7 +14,7 @@ "+net/log", "+net/traffic_annotation", "+net/url_request", - "+services/network/public/cpp", + "+services/network/public", "+services/service_manager/public", "+testing/gtest", "+third_party/protobuf",
diff --git a/components/safe_browsing/browser/BUILD.gn b/components/safe_browsing/browser/BUILD.gn index 7d3a7b2..2fcd8c8 100644 --- a/components/safe_browsing/browser/BUILD.gn +++ b/components/safe_browsing/browser/BUILD.gn
@@ -13,8 +13,6 @@ "browser_url_loader_throttle.h", "mojo_safe_browsing_impl.cc", "mojo_safe_browsing_impl.h", - "safe_browsing_network_context.cc", - "safe_browsing_network_context.h", "safe_browsing_url_checker_impl.cc", "safe_browsing_url_checker_impl.h", "safe_browsing_url_request_context_getter.cc", @@ -33,6 +31,7 @@ "//components/safe_browsing:csd_proto", "//components/safe_browsing:features", "//components/safe_browsing:safe_browsing", + "//components/safe_browsing/browser:network_context", "//components/safe_browsing/browser:referrer_chain_provider", "//components/safe_browsing/common:common", "//components/safe_browsing/db:database_manager", @@ -44,6 +43,19 @@ ] } +source_set("network_context") { + sources = [ + "safe_browsing_network_context.cc", + "safe_browsing_network_context.h", + ] + + deps = [ + "//components/safe_browsing/common:common", + "//content/public/browser:browser", + "//net:extras", + ] +} + source_set("referrer_chain_provider") { sources = [ "referrer_chain_provider.h",
diff --git a/components/safe_browsing/web_ui/BUILD.gn b/components/safe_browsing/web_ui/BUILD.gn index 610ea4e..3221fc3 100644 --- a/components/safe_browsing/web_ui/BUILD.gn +++ b/components/safe_browsing/web_ui/BUILD.gn
@@ -18,6 +18,7 @@ "//components/resources:components_scaled_resources_grit", "//components/safe_browsing:csd_proto", "//components/safe_browsing:features", + "//components/safe_browsing/browser:network_context", "//components/safe_browsing/browser:referrer_chain_provider", "//components/safe_browsing/common:safe_browsing_prefs", "//components/safe_browsing/db:v4_local_database_manager",
diff --git a/components/safe_browsing/web_ui/resources/safe_browsing.html b/components/safe_browsing/web_ui/resources/safe_browsing.html index cf480e6..023d459 100644 --- a/components/safe_browsing/web_ui/resources/safe_browsing.html +++ b/components/safe_browsing/web_ui/resources/safe_browsing.html
@@ -38,6 +38,10 @@ <div class="content"> <p id="preferences-list"></p> </div> + <h2>Safe Browsing Cookie</h2> + <div class="content"> + <p id="cookie-panel"></p> + </div> </tabpanel> <tabpanel> <h2>Database Manager</h2>
diff --git a/components/safe_browsing/web_ui/resources/safe_browsing.js b/components/safe_browsing/web_ui/resources/safe_browsing.js index b9ce3266..17b86902 100644 --- a/components/safe_browsing/web_ui/resources/safe_browsing.js +++ b/components/safe_browsing/web_ui/resources/safe_browsing.js
@@ -16,6 +16,7 @@ cr.sendWithPromise('getExperiments', []) .then((experiments) => addExperiments(experiments)); cr.sendWithPromise('getPrefs', []).then((prefs) => addPrefs(prefs)); + cr.sendWithPromise('getCookie', []).then((cookie) => addCookie(cookie)); cr.sendWithPromise('getSavedPasswords', []).then((passwords) => addSavedPasswords(passwords)); cr.sendWithPromise('getDatabaseManagerInfo', []).then( @@ -126,6 +127,12 @@ $('preferences-list').innerHTML = preferencesListFormatted; } + function addCookie(result) { + var cookieFormatted = '<b>Value:</b> ' + result[0] + '\n' + + '<b>Created:</b> ' + (new Date(result[1])).toLocaleString(); + $('cookie-panel').innerHTML = cookieFormatted; + } + function addSavedPasswords(result) { var resLength = result.length; var savedPasswordFormatted = "";
diff --git a/components/safe_browsing/web_ui/safe_browsing_ui.cc b/components/safe_browsing/web_ui/safe_browsing_ui.cc index 7ae1808..378b89d 100644 --- a/components/safe_browsing/web_ui/safe_browsing_ui.cc +++ b/components/safe_browsing/web_ui/safe_browsing_ui.cc
@@ -202,6 +202,30 @@ } } +network::mojom::CookieManager* WebUIInfoSingleton::GetCookieManager() { + if (!cookie_manager_ptr_) + InitializeCookieManager(); + + return cookie_manager_ptr_.get(); +} + +void WebUIInfoSingleton::InitializeCookieManager() { + DCHECK(network_context_); + + // Reset |cookie_manager_ptr_|, and only re-initialize it if we have a + // listening SafeBrowsingUIHandler. + cookie_manager_ptr_ = nullptr; + + if (HasListener()) { + network_context_->GetNetworkContext()->GetCookieManager( + mojo::MakeRequest(&cookie_manager_ptr_)); + + // base::Unretained is safe because |this| owns |cookie_manager_ptr_|. + cookie_manager_ptr_.set_connection_error_handler(base::BindOnce( + &WebUIInfoSingleton::InitializeCookieManager, base::Unretained(this))); + } +} + namespace { #if SAFE_BROWSING_DB_LOCAL @@ -1027,8 +1051,7 @@ SafeBrowsingUI::~SafeBrowsingUI() {} SafeBrowsingUIHandler::SafeBrowsingUIHandler(content::BrowserContext* context) - : browser_context_(context) { -} + : browser_context_(context) {} SafeBrowsingUIHandler::~SafeBrowsingUIHandler() { WebUIInfoSingleton::GetInstance()->UnregisterWebUIInstance(this); @@ -1064,6 +1087,35 @@ user_prefs::UserPrefs::Get(browser_context_))); } +void SafeBrowsingUIHandler::GetCookie(const base::ListValue* args) { + std::string callback_id; + args->GetString(0, &callback_id); + + WebUIInfoSingleton::GetInstance()->GetCookieManager()->GetAllCookies( + base::BindOnce(&SafeBrowsingUIHandler::OnGetCookie, + weak_factory_.GetWeakPtr(), std::move(callback_id))); +} + +void SafeBrowsingUIHandler::OnGetCookie( + const std::string& callback_id, + const std::vector<net::CanonicalCookie>& cookies) { + DCHECK_GE(1u, cookies.size()); + + std::string cookie = "No cookie"; + double time = 0.0; + if (!cookies.empty()) { + cookie = cookies[0].Value(); + time = cookies[0].CreationDate().ToJsTime(); + } + + base::Value response(base::Value::Type::LIST); + response.GetList().push_back(base::Value(cookie)); + response.GetList().push_back(base::Value(time)); + + AllowJavascript(); + ResolveJavascriptCallback(base::Value(callback_id), std::move(response)); +} + void SafeBrowsingUIHandler::GetSavedPasswords(const base::ListValue* args) { password_manager::HashPasswordManager hash_manager( user_prefs::UserPrefs::Get(browser_context_)); @@ -1340,6 +1392,9 @@ "getPrefs", base::BindRepeating(&SafeBrowsingUIHandler::GetPrefs, base::Unretained(this))); web_ui()->RegisterMessageCallback( + "getCookie", base::BindRepeating(&SafeBrowsingUIHandler::GetCookie, + base::Unretained(this))); + web_ui()->RegisterMessageCallback( "getSavedPasswords", base::BindRepeating(&SafeBrowsingUIHandler::GetSavedPasswords, base::Unretained(this)));
diff --git a/components/safe_browsing/web_ui/safe_browsing_ui.h b/components/safe_browsing/web_ui/safe_browsing_ui.h index f803d72..95379fd8 100644 --- a/components/safe_browsing/web_ui/safe_browsing_ui.h +++ b/components/safe_browsing/web_ui/safe_browsing_ui.h
@@ -5,13 +5,17 @@ #ifndef COMPONENTS_SAFE_BROWSING_WEBUI_SAFE_BROWSING_UI_H_ #define COMPONENTS_SAFE_BROWSING_WEBUI_SAFE_BROWSING_UI_H_ +#include "base/bind.h" #include "base/macros.h" +#include "components/safe_browsing/browser/safe_browsing_network_context.h" #include "components/safe_browsing/proto/csd.pb.h" #include "components/safe_browsing/proto/webui.pb.h" #include "components/sync/protocol/user_event_specifics.pb.h" #include "content/public/browser/web_ui_controller.h" #include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_message_handler.h" +#include "services/network/public/mojom/cookie_manager.mojom.h" +#include "services/network/public/mojom/network_context.mojom.h" namespace base { class ListValue; @@ -40,6 +44,9 @@ // Get the Safe Browsing related preferences for the current user. void GetPrefs(const base::ListValue* args); + // Get the Safe Browsing cookie. + void GetCookie(const base::ListValue* args); + // Get the current captured passwords. void GetSavedPasswords(const base::ListValue* args); @@ -121,10 +128,17 @@ void NotifyLogMessageJsListener(const base::Time& timestamp, const std::string& message); + // Callback when the CookieManager has returned the cookie. + void OnGetCookie(const std::string& callback_id, + const std::vector<net::CanonicalCookie>& cookies); + content::BrowserContext* browser_context_; // List that keeps all the WebUI listener objects. static std::vector<SafeBrowsingUIHandler*> webui_list_; + + base::WeakPtrFactory<SafeBrowsingUIHandler> weak_factory_{this}; + DISALLOW_COPY_AND_ASSIGN(SafeBrowsingUIHandler); }; @@ -262,12 +276,20 @@ return log_messages_; } + network::mojom::CookieManager* GetCookieManager(); + + void set_network_context(SafeBrowsingNetworkContext* network_context) { + network_context_ = network_context; + } + void AddListenerForTesting() { has_test_listener_ = true; } private: WebUIInfoSingleton(); ~WebUIInfoSingleton(); + void InitializeCookieManager(); + friend struct base::DefaultSingletonTraits<WebUIInfoSingleton>; // List of ClientDownloadRequests sent since since the oldest currently open @@ -314,6 +336,12 @@ // The current referrer chain provider, if any. Can be nullptr. ReferrerChainProvider* referrer_chain_provider_ = nullptr; + // The current NetworkContext for Safe Browsing pings. + SafeBrowsingNetworkContext* network_context_ = nullptr; + + // The current CookieManager for the Safe Browsing cookie. + network::mojom::CookieManagerPtr cookie_manager_ptr_ = nullptr; + // Whether there is a test listener. bool has_test_listener_ = false;
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc index 1643390..687fc68 100644 --- a/components/viz/common/features.cc +++ b/components/viz/common/features.cc
@@ -64,11 +64,18 @@ } bool IsVizDisplayCompositorEnabled() { +#if defined(OS_MACOSX) || defined(OS_WIN) + // We can't remove the feature switch yet because OOP-D isn't enabled on all + // platforms but turning it off on Mac and Windows isn't supported. Don't + // check the feature switch for these platforms anymore. + return true; +#else #if defined(OS_ANDROID) if (features::IsAndroidSurfaceControlEnabled()) return true; #endif return base::FeatureList::IsEnabled(kVizDisplayCompositor); +#endif } bool IsVizHitTestingDebugEnabled() {
diff --git a/components/viz/service/display_embedder/image_context.h b/components/viz/service/display_embedder/image_context.h index 38ff4ce7..44f62e0 100644 --- a/components/viz/service/display_embedder/image_context.h +++ b/components/viz/service/display_embedder/image_context.h
@@ -61,6 +61,9 @@ // The promise image which is used on display thread. sk_sp<SkImage> image; + // Fallback SkImage in case we cannot produce a |representation|. + sk_sp<SkImage> fallback_image; + // |sync_token| is only accessed on display thread. gpu::SyncToken sync_token;
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc index ff2e916..bfa96e06 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -321,7 +321,6 @@ context_lost_callback_(context_lost_callback), weak_ptr_factory_(this) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); - fallback_promise_image_texture_.resize(kLastEnum_SkColorType + 1); weak_ptr_ = weak_ptr_factory_.GetWeakPtr(); } @@ -740,44 +739,35 @@ } } -sk_sp<SkPromiseImageTexture> SkiaOutputSurfaceImplOnGpu::FallbackPromiseImage( - ResourceFormat format) { - SkColorType color_type = - ResourceFormatToClosestSkColorType(true /* gpu_compositing */, format); - auto& promise_image_texture = fallback_promise_image_texture_[color_type]; - if (!promise_image_texture) { - auto image_info = SkImageInfo::Make(1 /* width */, 1 /* height */, - color_type, kOpaque_SkAlphaType); - auto surface = SkSurface::MakeRenderTarget( - gr_context(), SkBudgeted::kNo, image_info, 0 /* sampleCount */, - kTopLeft_GrSurfaceOrigin, nullptr /* surfaceProps */); - // We don't have driver support for that particular color_type. Try again - // with well supported SkColorType. Reads from this may have unusual colors - // due to interpreting RGBA as |color_type|, but that's better than - // completely undefined. - if (!surface) { - image_info = - SkImageInfo::Make(1 /* width */, 1 /* height */, - kRGBA_8888_SkColorType, kOpaque_SkAlphaType); - surface = SkSurface::MakeRenderTarget( - gr_context(), SkBudgeted::kNo, image_info, 0 /* sampleCount */, - kTopLeft_GrSurfaceOrigin, nullptr /* surfaceProps */); +// TODO(backer): Add memory tracking. +void SkiaOutputSurfaceImplOnGpu::CreateFallbackImage(ImageContext* context) { + SkColorType color_type = ResourceFormatToClosestSkColorType( + true /* gpu_compositing */, context->resource_format); - if (!surface) - return nullptr; - } - auto* canvas = surface->getCanvas(); + // Don't use a fallback SkColorType because we may fail checks inside Skia + if (SkColorTypeBytesPerPixel(color_type) * 8 != + BitsPerPixel(context->resource_format)) + return; + + auto image_info = + SkImageInfo::Make(context->size.width(), context->size.height(), + color_type, kOpaque_SkAlphaType); + auto surface = SkSurface::MakeRenderTarget( + gr_context(), SkBudgeted::kNo, image_info, 0 /* sampleCount */, + kTopLeft_GrSurfaceOrigin, nullptr /* surfaceProps */); + if (!surface) + return; + + auto* canvas = surface->getCanvas(); #if DCHECK_IS_ON() - canvas->clear(SK_ColorRED); + canvas->clear(SK_ColorRED); #else - canvas->clear(SK_ColorWHITE); + canvas->clear(SK_ColorWHITE); #endif - fallback_promise_images_.push_back(surface->makeImageSnapshot()); - auto gr_texture = fallback_promise_images_.back()->getBackendTexture( - false /* flushPendingGrContextIO */); - promise_image_texture = SkPromiseImageTexture::Make(gr_texture); - } - return promise_image_texture; + context->fallback_image = surface->makeImageSnapshot(); + auto gr_texture = context->fallback_image->getBackendTexture( + false /* flushPendingGrContextIO */); + context->promise_image_texture = SkPromiseImageTexture::Make(gr_texture); } void SkiaOutputSurfaceImplOnGpu::BeginAccessImages( @@ -800,8 +790,7 @@ DLOG(ERROR) << "Failed to fulfill the promise texture created from " "RenderPassId:" << context->render_pass_id; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); } continue; } @@ -832,16 +821,14 @@ if (!representation) { DLOG(ERROR) << "Failed to fulfill the promise texture - SharedImage " "mailbox not found in SharedImageManager."; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); continue; } if (!(representation->usage() & gpu::SHARED_IMAGE_USAGE_DISPLAY)) { DLOG(ERROR) << "Failed to fulfill the promise texture - SharedImage " "was not created with display usage."; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); continue; } @@ -852,8 +839,7 @@ if (!context->promise_image_texture) { DLOG(ERROR) << "Failed to fulfill the promise texture - SharedImage " "begin read access failed.."; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); continue; } context->representation_is_being_accessed = true; @@ -871,16 +857,14 @@ DLOG(ERROR) << "Failed to fulfill the promise texture whose backend is not " "compitable with vulkan."; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); continue; } auto* texture_base = mailbox_manager_->ConsumeTexture(context->mailbox); if (!texture_base) { DLOG(ERROR) << "Failed to fulfill the promise texture."; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); continue; } BindOrCopyTextureIfNecessary(texture_base); @@ -890,8 +874,7 @@ context->resource_format, &backend_texture); if (!backend_texture.isValid()) { DLOG(ERROR) << "Failed to fulfill the promise texture."; - context->promise_image_texture = - FallbackPromiseImage(context->resource_format); + CreateFallbackImage(context); continue; } context->promise_image_texture =
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h index faad369..656e218 100644 --- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h +++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.h
@@ -185,7 +185,7 @@ return output_device_->draw_surface(); } - sk_sp<SkPromiseImageTexture> FallbackPromiseImage(ResourceFormat format); + void CreateFallbackImage(ImageContext* context); const gpu::SurfaceHandle surface_handle_; scoped_refptr<gpu::gles2::FeatureInfo> feature_info_; @@ -250,11 +250,6 @@ gl::GLApi* api_ = nullptr; bool supports_alpha_ = false; - // What we display when the mailbox for a texture is invalid. Indexed by - // SkColorType. - std::vector<sk_sp<SkPromiseImageTexture>> fallback_promise_image_texture_; - std::vector<sk_sp<SkImage>> fallback_promise_images_; - THREAD_CHECKER(thread_checker_); base::WeakPtr<SkiaOutputSurfaceImplOnGpu> weak_ptr_;
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index dd96224..644fdab 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -1348,8 +1348,6 @@ "permissions/permission_service_context.h", "permissions/permission_service_impl.cc", "permissions/permission_service_impl.h", - "picture_in_picture/overlay_surface_embedder.cc", - "picture_in_picture/overlay_surface_embedder.h", "picture_in_picture/picture_in_picture_service_impl.cc", "picture_in_picture/picture_in_picture_service_impl.h", "picture_in_picture/picture_in_picture_window_controller_impl.cc",
diff --git a/content/browser/devtools/devtools_session.cc b/content/browser/devtools/devtools_session.cc index 01da32b..1c47409 100644 --- a/content/browser/devtools/devtools_session.cc +++ b/content/browser/devtools/devtools_session.cc
@@ -27,11 +27,12 @@ bool ShouldSendOnIO(const std::string& method) { // Keep in sync with WebDevToolsAgent::ShouldInterruptForMethod. - // TODO(dgozman): find a way to share this. + // TODO(einbinder): find a way to share this. return method == "Debugger.pause" || method == "Debugger.setBreakpoint" || method == "Debugger.setBreakpointByUrl" || method == "Debugger.removeBreakpoint" || method == "Debugger.setBreakpointsActive" || + method == "Debugger.getStackTrace" || method == "Performance.getMetrics" || method == "Page.crash" || method == "Runtime.terminateExecution" || method == "Emulation.setScriptExecutionDisabled";
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc index 02d54e7..9d34dc1 100644 --- a/content/browser/download/download_manager_impl.cc +++ b/content/browser/download/download_manager_impl.cc
@@ -81,6 +81,7 @@ #include "services/metrics/public/cpp/ukm_source_id.h" #include "services/network/public/cpp/features.h" #include "services/network/public/cpp/wrapper_shared_url_loader_factory.h" +#include "services/service_manager/public/cpp/connector.h" #include "storage/browser/blob/blob_url_loader_factory.h" #include "storage/browser/blob/blob_url_request_job_factory.h" #include "url/origin.h" @@ -672,6 +673,23 @@ : nullptr; } +std::unique_ptr<service_manager::Connector> +DownloadManagerImpl::GetServiceConnector() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + + service_manager::Connector* connector = GetServiceManagerConnector(); + if (connector) + return connector->Clone(); // Clone for use on a different thread. + return nullptr; +} + +service_manager::Connector* DownloadManagerImpl::GetServiceManagerConnector() { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + if (auto* connection = ServiceManagerConnection::GetForProcess()) + return connection->GetConnector(); + return nullptr; +} + void DownloadManagerImpl::StartDownload( std::unique_ptr<download::DownloadCreateInfo> info, std::unique_ptr<download::InputStream> stream,
diff --git a/content/browser/download/download_manager_impl.h b/content/browser/download/download_manager_impl.h index b6859f1..f2dd1e4 100644 --- a/content/browser/download/download_manager_impl.h +++ b/content/browser/download/download_manager_impl.h
@@ -207,6 +207,7 @@ override; net::URLRequestContextGetter* GetURLRequestContextGetter( const download::DownloadCreateInfo& info) override; + std::unique_ptr<service_manager::Connector> GetServiceConnector() override; // Creates a new download item and call |callback|. void CreateNewDownloadItemToStart( @@ -257,6 +258,7 @@ download::DownloadItemImpl* download) override; bool IsOffTheRecord() const override; void ReportBytesWasted(download::DownloadItemImpl* download) override; + service_manager::Connector* GetServiceManagerConnector() override; // Drops a download before it is created. void DropDownload();
diff --git a/content/browser/download/url_downloader_factory.cc b/content/browser/download/url_downloader_factory.cc index 9d2c165..387b79dea 100644 --- a/content/browser/download/url_downloader_factory.cc +++ b/content/browser/download/url_downloader_factory.cc
@@ -9,6 +9,7 @@ #include "content/browser/download/download_request_core.h" #include "content/browser/download/url_downloader.h" #include "net/url_request/url_request_context_getter.h" +#include "services/service_manager/public/cpp/connector.h" namespace content { @@ -24,6 +25,7 @@ url_loader_factory_getter, const download::URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) { std::unique_ptr<net::URLRequest> url_request = DownloadRequestCore::CreateRequestOnIOThread(
diff --git a/content/browser/download/url_downloader_factory.h b/content/browser/download/url_downloader_factory.h index 23b287f..6c70cc8a 100644 --- a/content/browser/download/url_downloader_factory.h +++ b/content/browser/download/url_downloader_factory.h
@@ -35,6 +35,7 @@ shared_url_loader_factory, const download::URLSecurityPolicy& url_security_policy, scoped_refptr<net::URLRequestContextGetter> url_request_context_getter, + std::unique_ptr<service_manager::Connector> connector, const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) override; };
diff --git a/content/browser/frame_host/render_frame_host_manager_browsertest.cc b/content/browser/frame_host/render_frame_host_manager_browsertest.cc index 251b1008..c82c536 100644 --- a/content/browser/frame_host/render_frame_host_manager_browsertest.cc +++ b/content/browser/frame_host/render_frame_host_manager_browsertest.cc
@@ -5758,11 +5758,8 @@ EXPECT_FALSE(instance1->HasWrongProcessForURL(url1)); } - // TODO(creis): Enable the rest of the test when https://crbug.com/793127 is - // fixed, since this currently fails with a DCHECK in SiteProcessCountTracker. -#if 0 - // Go back to the chrome-native:// URL's entry, which should swap to a new - // SiteInstance with an unused site URL. + // Go back to url1's entry, which should swap to a new SiteInstance with an + // unused site URL. TestNavigationObserver observer(web_contents); web_contents->GetController().GoToOffset(-2); observer.Wait(); @@ -5785,7 +5782,6 @@ policy->CanAccessDataForOrigin(new_process->GetID(), url1)); EXPECT_TRUE( policy->CanAccessDataForOrigin(new_process->GetID(), url2)); -#endif SetBrowserClientForTesting(old_client); }
diff --git a/content/browser/gpu/compositor_util.cc b/content/browser/gpu/compositor_util.cc index 8de933a..d7b9b1c 100644 --- a/content/browser/gpu/compositor_util.cc +++ b/content/browser/gpu/compositor_util.cc
@@ -172,6 +172,14 @@ "Out-of-process accelerated rasterization has been disabled, either " "via blacklist, about:flags or the command line.", false, true}, + {"metal", gpu::kGpuFeatureStatusEnabled, +#if defined(OS_MACOSX) + !base::FeatureList::IsEnabled(features::kMetal) /* disabled */, + "Metal is not enabled by default.", +#else + true /* disabled */, "Metal only available on macOS.", +#endif + false /* fallback_to_software */, false /* needs_gpu_access */}, {"multiple_raster_threads", gpu::kGpuFeatureStatusEnabled, NumberOfRendererRasterThreads() == 1, "Raster is using a single thread.", false, true}, @@ -234,6 +242,12 @@ std::string status; if (gpu_feature_data.name == "surface_synchronization") { status = (!gpu_feature_data.disabled ? "enabled_on" : "disabled_off"); + } else if (gpu_feature_data.name == "metal") { +#if defined(OS_MACOSX) + status = (!gpu_feature_data.disabled ? "enabled_on" : "disabled_off"); +#else + status = "unavailable_off"; +#endif } else if (gpu_feature_data.name == "viz_display_compositor") { status = (!gpu_feature_data.disabled ? "enabled_on" : "disabled_off"); } else if (gpu_feature_data.disabled || gpu_access_blocked ||
diff --git a/content/browser/picture_in_picture/overlay_surface_embedder.cc b/content/browser/picture_in_picture/overlay_surface_embedder.cc deleted file mode 100644 index 43bd092..0000000 --- a/content/browser/picture_in_picture/overlay_surface_embedder.cc +++ /dev/null
@@ -1,63 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/browser/picture_in_picture/overlay_surface_embedder.h" - -#include "ui/compositor/layer.h" - -namespace content { - -OverlaySurfaceEmbedder::OverlaySurfaceEmbedder(OverlayWindow* window) - : window_(window) { - DCHECK(window_); - // Add window background. - window_background_layer_ = window_->GetWindowBackgroundLayer(); - window_background_layer_->SetBounds( - gfx::Rect(gfx::Point(0, 0), window_->GetBounds().size())); - - // Add |window_background_layer_| to |window_| and stack it at the bottom. - window_->GetLayer()->Add(window_background_layer_); - window_->GetLayer()->StackAtBottom(window_background_layer_); - - video_layer_ = window_->GetVideoLayer(); - video_layer_->SetMasksToBounds(true); - - // The frame provided by the parent window's layer needs to show through - // |video_layer_|. - video_layer_->SetFillsBoundsOpaquely(false); - // |video_layer_| bounds are set with the (0, 0) origin point. The - // positioning of |window_| is dictated by itself. - video_layer_->SetBounds( - gfx::Rect(gfx::Point(0, 0), window_->GetBounds().size())); - - // Add |video_layer_| to |window_| and stack it above - // |window_background_layer_|. - window_->GetLayer()->Add(video_layer_); - window_->GetLayer()->StackAbove(video_layer_, window_background_layer_); -} - -OverlaySurfaceEmbedder::~OverlaySurfaceEmbedder() = default; - -void OverlaySurfaceEmbedder::SetSurfaceId(const viz::SurfaceId& surface_id) { - video_layer_ = window_->GetVideoLayer(); - // SurfaceInfo has information about the embedded surface. - video_layer_->SetShowSurface(surface_id, window_->GetBounds().size(), - SK_ColorBLACK, - cc::DeadlinePolicy::UseDefaultDeadline(), - true /* stretch_content_to_fill_bounds */); -} - -void OverlaySurfaceEmbedder::UpdateLayerBounds() { - // Update the size of window background. - window_background_layer_ = window_->GetWindowBackgroundLayer(); - window_background_layer_->SetBounds( - gfx::Rect(gfx::Point(0, 0), window_->GetBounds().size())); - - // Update the size and position of the video to stretch on the entire window. - video_layer_ = window_->GetVideoLayer(); - video_layer_->SetBounds(window_->GetVideoBounds()); - video_layer_->SetSurfaceSize(window_->GetVideoBounds().size()); -} - -} // namespace content
diff --git a/content/browser/picture_in_picture/overlay_surface_embedder.h b/content/browser/picture_in_picture/overlay_surface_embedder.h deleted file mode 100644 index 9307f38..0000000 --- a/content/browser/picture_in_picture/overlay_surface_embedder.h +++ /dev/null
@@ -1,47 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_BROWSER_PICTURE_IN_PICTURE_OVERLAY_SURFACE_EMBEDDER_H_ -#define CONTENT_BROWSER_PICTURE_IN_PICTURE_OVERLAY_SURFACE_EMBEDDER_H_ - -#include <memory> - -#include "content/public/browser/overlay_window.h" - -namespace viz { -class SurfaceId; -} - -namespace content { - -// Embed a surface into the OverlayWindow to show content. Responsible for -// setting up the surface layers that contain content to show on the -// OverlayWindow. -class OverlaySurfaceEmbedder { - public: - explicit OverlaySurfaceEmbedder(OverlayWindow* window); - ~OverlaySurfaceEmbedder(); - - void SetSurfaceId(const viz::SurfaceId&); - void UpdateLayerBounds(); - - private: - // The window which embeds the client. Weak pointer since the - // PictureInPictureWindowController owns the window. - OverlayWindow* window_; - - // Contains the client's content. - std::unique_ptr<ui::Layer> surface_layer_; - - // Owned by the OverlayWindow implementation. - // These are set in the constructor. - ui::Layer* window_background_layer_ = nullptr; - ui::Layer* video_layer_ = nullptr; - - DISALLOW_COPY_AND_ASSIGN(OverlaySurfaceEmbedder); -}; - -} // namespace content - -#endif // CONTENT_BROWSER_PICTURE_IN_PICTURE_OVERLAY_SURFACE_EMBEDDER_H_
diff --git a/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc b/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc index 09decd2f..0f99ec23 100644 --- a/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc +++ b/content/browser/picture_in_picture/picture_in_picture_service_impl_unittest.cc
@@ -48,18 +48,16 @@ void Hide() override {} bool IsVisible() const override { return false; } bool IsAlwaysOnTop() const override { return false; } - ui::Layer* GetLayer() override { return nullptr; } gfx::Rect GetBounds() const override { return gfx::Rect(); } void UpdateVideoSize(const gfx::Size& natural_size) override {} void SetPlaybackState(PlaybackState playback_state) override {} void SetAlwaysHidePlayPauseButton(bool is_visible) override {} - ui::Layer* GetWindowBackgroundLayer() override { return nullptr; } - ui::Layer* GetVideoLayer() override { return nullptr; } - gfx::Rect GetVideoBounds() override { return gfx::Rect(); } void SetMutedState(MutedState muted_state) override {} void SetSkipAdButtonVisibility(bool is_visible) override {} void SetNextTrackButtonVisibility(bool is_visible) override {} void SetPreviousTrackButtonVisibility(bool is_visible) override {} + void SetSurfaceId(const viz::SurfaceId& surface_id) override {} + cc::Layer* GetLayerForTesting() override { return nullptr; } private: DISALLOW_COPY_AND_ASSIGN(TestOverlayWindow);
diff --git a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc index 0db14f5..dd91aa0 100644 --- a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc +++ b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.cc
@@ -9,7 +9,6 @@ #include "components/viz/common/surfaces/surface_id.h" #include "content/browser/media/media_web_contents_observer.h" #include "content/browser/media/session/media_session_impl.h" -#include "content/browser/picture_in_picture/overlay_surface_embedder.h" #include "content/browser/picture_in_picture/picture_in_picture_service_impl.h" #include "content/browser/web_contents/web_contents_impl.h" #include "content/common/media/media_player_delegate_messages.h" @@ -18,7 +17,6 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/common/content_client.h" -#include "ui/compositor/layer.h" namespace content { @@ -113,7 +111,6 @@ void PictureInPictureWindowControllerImpl::OnWindowDestroyed() { window_ = nullptr; - embedder_ = nullptr; CloseInternal(true /* should_pause_video */, true /* should_reset_pip_player */); } @@ -126,16 +123,6 @@ DCHECK(surface_id.is_valid()); - // TODO(https://crbug.com/925346): We also want to unregister the page that - // used to embed the video as its parent. - ui::Compositor* compositor = window_->GetLayer()->GetCompositor(); - if (!surface_id_.is_valid()) { - compositor->AddChildFrameSink(surface_id.frame_sink_id()); - } else if (surface_id_.frame_sink_id() != surface_id.frame_sink_id()) { - compositor->RemoveChildFrameSink(surface_id_.frame_sink_id()); - compositor->AddChildFrameSink(surface_id.frame_sink_id()); - } - surface_id_ = surface_id; // Update the media player id in step with the video surface id. If the @@ -145,10 +132,7 @@ UpdateMediaPlayerId(); window_->UpdateVideoSize(natural_size); - - if (!embedder_) - embedder_.reset(new OverlaySurfaceEmbedder(window_.get())); - embedder_->SetSurfaceId(surface_id_); + window_->SetSurfaceId(surface_id_); } OverlayWindow* PictureInPictureWindowControllerImpl::GetWindowForTesting() { @@ -160,9 +144,6 @@ window_->IsVisible()) { service_->NotifyWindowResized(window_->GetBounds().size()); } - - if (embedder_) - embedder_->UpdateLayerBounds(); } bool PictureInPictureWindowControllerImpl::IsPlayerActive() { @@ -397,11 +378,6 @@ void PictureInPictureWindowControllerImpl::OnLeavingPictureInPicture( bool should_pause_video, bool should_reset_pip_player) { - if (window_ && surface_id_.is_valid()) { - window_->GetLayer()->GetCompositor()->RemoveChildFrameSink( - surface_id_.frame_sink_id()); - } - if (IsPlayerActive() && should_pause_video) { // Pause the current video so there is only one video playing at a time. media_player_id_->render_frame_host->Send(new MediaPlayerDelegateMsg_Pause(
diff --git a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h index 3631ec6..2b070d9 100644 --- a/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h +++ b/content/browser/picture_in_picture/picture_in_picture_window_controller_impl.h
@@ -19,7 +19,6 @@ namespace content { class MediaWebContentsObserver; -class OverlaySurfaceEmbedder; class PictureInPictureServiceImpl; class WebContents; class WebContentsImpl; @@ -118,7 +117,7 @@ bool RemoveMutedPlayerEntry(const MediaPlayerId& id); std::unique_ptr<OverlayWindow> window_; - std::unique_ptr<OverlaySurfaceEmbedder> embedder_; + // TODO(929156): remove this as it should be accessible via `web_contents()`. WebContentsImpl* const initiator_;
diff --git a/content/browser/presentation/presentation_browsertest.cc b/content/browser/presentation/presentation_browsertest.cc deleted file mode 100644 index 1295442..0000000 --- a/content/browser/presentation/presentation_browsertest.cc +++ /dev/null
@@ -1,53 +0,0 @@ -// Copyright 2016 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "content/public/browser/web_contents.h" -#include "content/public/test/browser_test.h" -#include "content/public/test/content_browser_test.h" -#include "content/public/test/content_browser_test_utils.h" -#include "content/public/test/test_navigation_observer.h" -#include "content/shell/browser/shell.h" - -namespace content { - -using PresentationBrowserTest = ContentBrowserTest; - -// Regression test that verifies that calling getAvailability() twice on the -// same PresentationRequest does not return an undefined object. -// TODO(mlamouri,mfoltz), update the test after [SameObject] is used, -// see https://crbug.com/653131 -// Broken; see https://crbug.com/940503 . -IN_PROC_BROWSER_TEST_F(PresentationBrowserTest, - DISABLED_AvailabilityNotUndefined) { - GURL test_url = GetTestUrl("", "hello.html"); - - TestNavigationObserver navigation_observer(shell()->web_contents(), 1); - shell()->LoadURL(test_url); - - navigation_observer.Wait(); - - ExecuteScriptAndGetValue(shell()->web_contents()->GetMainFrame(), - "const r = new PresentationRequest('foo.html')"); - - ExecuteScriptAndGetValue(shell()->web_contents()->GetMainFrame(), - "const p1 = r.getAvailability();"); - - ExecuteScriptAndGetValue(shell()->web_contents()->GetMainFrame(), - "const p2 = r.getAvailability()"); - - bool is_p1_undefined = - ExecuteScriptAndGetValue(shell()->web_contents()->GetMainFrame(), - "p1 === undefined") - .GetBool(); - - bool is_p2_undefined = - ExecuteScriptAndGetValue(shell()->web_contents()->GetMainFrame(), - "p2 === undefined") - .GetBool(); - - EXPECT_FALSE(is_p1_undefined); - EXPECT_FALSE(is_p2_undefined); -} - -} // namespace content
diff --git a/content/browser/resources/gpu/info_view.js b/content/browser/resources/gpu/info_view.js index cbb3f87..fdbeca0 100644 --- a/content/browser/resources/gpu/info_view.js +++ b/content/browser/resources/gpu/info_view.js
@@ -224,6 +224,7 @@ 'video_decode': 'Video Decode', 'rasterization': 'Rasterization', 'oop_rasterization': 'Out-of-process Rasterization', + 'metal': 'Metal', 'multiple_raster_threads': 'Multiple Raster Threads', 'native_gpu_memory_buffers': 'Native GpuMemoryBuffers', 'protected_video_decode': 'Hardware Protected Video Decode',
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 832333b..93087b7 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -483,6 +483,9 @@ WebRuntimeFeatures::EnableSkipTouchEventFilter( base::FeatureList::IsEnabled(features::kSkipTouchEventFilter)); + + WebRuntimeFeatures::EnableStaleWhileRevalidate( + base::FeatureList::IsEnabled(features::kStaleWhileRevalidate)); } } // namespace
diff --git a/content/common/service_manager/service_manager_connection_impl.cc b/content/common/service_manager/service_manager_connection_impl.cc index f9f21934..494afe3c 100644 --- a/content/common/service_manager/service_manager_connection_impl.cc +++ b/content/common/service_manager/service_manager_connection_impl.cc
@@ -295,8 +295,13 @@ } // mojom::Child: - // Make sure this isn't inlined so it shows up in stack traces. - NOINLINE void CrashHungProcess() override { IMMEDIATE_CRASH(); } + // Make sure this isn't inlined so it shows up in stack traces, and also make + // the function body unique by adding a log line, so it doesn't get merged + // with other functions by link time optimizations (ICF). + NOINLINE void CrashHungProcess() override { + LOG(ERROR) << "Crashing because hung"; + IMMEDIATE_CRASH(); + } base::ThreadChecker io_thread_checker_; bool started_ = false;
diff --git a/content/public/android/java/src/org/chromium/content_public/browser/NavigationHandle.java b/content/public/android/java/src/org/chromium/content_public/browser/NavigationHandle.java index 829c9b1..1884bff6 100644 --- a/content/public/android/java/src/org/chromium/content_public/browser/NavigationHandle.java +++ b/content/public/android/java/src/org/chromium/content_public/browser/NavigationHandle.java
@@ -6,6 +6,7 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; +import org.chromium.net.NetError; /** * JNI bridge with content::NavigationHandle @@ -23,7 +24,7 @@ private boolean mIsErrorPage; private boolean mIsFragmentNavigation; private boolean mIsValidSearchFormUrl; - private int mErrorCode; + private @NetError int mErrorCode; private int mHttpStatusCode; @CalledByNative @@ -51,7 +52,7 @@ @CalledByNative public void didFinish(String url, boolean isErrorPage, boolean hasCommitted, boolean isFragmentNavigation, boolean isDownload, boolean isValidSearchFormUrl, - int transition, int errorCode, int httpStatuscode) { + int transition, @NetError int errorCode, int httpStatuscode) { mUrl = url; mIsErrorPage = isErrorPage; mHasCommitted = hasCommitted; @@ -125,7 +126,7 @@ return ""; } - public int errorCode() { + public @NetError int errorCode() { return mErrorCode; }
diff --git a/content/public/browser/overlay_window.h b/content/public/browser/overlay_window.h index 68d020c8..6e1a8e06 100644 --- a/content/public/browser/overlay_window.h +++ b/content/public/browser/overlay_window.h
@@ -14,10 +14,14 @@ class Size; } -namespace ui { +namespace cc { class Layer; } +namespace viz { +class SurfaceId; +} + namespace content { class PictureInPictureWindowController; @@ -53,7 +57,6 @@ virtual void Hide() = 0; virtual bool IsVisible() const = 0; virtual bool IsAlwaysOnTop() const = 0; - virtual ui::Layer* GetLayer() = 0; // Retrieves the window's current bounds, including its window. virtual gfx::Rect GetBounds() const = 0; virtual void UpdateVideoSize(const gfx::Size& natural_size) = 0; @@ -63,13 +66,8 @@ virtual void SetSkipAdButtonVisibility(bool is_visible) = 0; virtual void SetNextTrackButtonVisibility(bool is_visible) = 0; virtual void SetPreviousTrackButtonVisibility(bool is_visible) = 0; - - // Retrieves the ui::Layers corresponding to the window and video. - virtual ui::Layer* GetWindowBackgroundLayer() = 0; - virtual ui::Layer* GetVideoLayer() = 0; - - // Retrieves the bounds of the video. - virtual gfx::Rect GetVideoBounds() = 0; + virtual void SetSurfaceId(const viz::SurfaceId& surface_id) = 0; + virtual cc::Layer* GetLayerForTesting() = 0; private: DISALLOW_COPY_AND_ASSIGN(OverlayWindow);
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index 2ed632c..3526e40 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -460,6 +460,11 @@ const base::Feature kSpareRendererForSitePerProcess{ "SpareRendererForSitePerProcess", base::FEATURE_ENABLED_BY_DEFAULT}; +// Enables StaleWhileRevalidate support. +// https://www.chromestatus.com/features/5050913014153216 +const base::Feature kStaleWhileRevalidate{"StaleWhileRevalidate", + base::FEATURE_ENABLED_BY_DEFAULT}; + // Dispatch touch events to "SyntheticGestureController" for events from // Devtool Protocol Input.dispatchTouchEvent to simulate touch events close to // real OS events.
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index a54704c..c81bbef0 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -108,6 +108,7 @@ CONTENT_EXPORT extern const base::Feature kSignedHTTPExchange; CONTENT_EXPORT extern const base::Feature kSignedHTTPExchangePingValidity; CONTENT_EXPORT extern const base::Feature kSpareRendererForSitePerProcess; +CONTENT_EXPORT extern const base::Feature kStaleWhileRevalidate; CONTENT_EXPORT extern const base::Feature kSyntheticPointerActions; CONTENT_EXPORT extern const base::Feature kTimerThrottlingForHiddenFrames; CONTENT_EXPORT extern const base::Feature kTouchpadAsyncPinchEvents;
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn index 97e7f0b..9fb4d72ca 100644 --- a/content/renderer/BUILD.gn +++ b/content/renderer/BUILD.gn
@@ -604,7 +604,7 @@ "//gpu/command_buffer/client:gles2_interface", "//gpu/command_buffer/client:raster_interface", "//gpu/command_buffer/client:webgpu_interface", - "//jingle:jingle_glue", + "//jingle:webrtc_glue", "//media", "//media:media_buildflags", "//media/blink",
diff --git a/content/shell/browser/web_test/web_test_content_browser_client.cc b/content/shell/browser/web_test/web_test_content_browser_client.cc index a303b16..04149aa4 100644 --- a/content/shell/browser/web_test/web_test_content_browser_client.cc +++ b/content/shell/browser/web_test/web_test_content_browser_client.cc
@@ -68,7 +68,6 @@ void Hide() override {} bool IsVisible() const override { return false; } bool IsAlwaysOnTop() const override { return false; } - ui::Layer* GetLayer() override { return nullptr; } gfx::Rect GetBounds() const override { return gfx::Rect(); } void UpdateVideoSize(const gfx::Size& natural_size) override {} void SetPlaybackState(PlaybackState playback_state) override {} @@ -77,9 +76,8 @@ void SetSkipAdButtonVisibility(bool is_visible) override {} void SetNextTrackButtonVisibility(bool is_visible) override {} void SetPreviousTrackButtonVisibility(bool is_visible) override {} - ui::Layer* GetWindowBackgroundLayer() override { return nullptr; } - ui::Layer* GetVideoLayer() override { return nullptr; } - gfx::Rect GetVideoBounds() override { return gfx::Rect(); } + void SetSurfaceId(const viz::SurfaceId& surface_id) override {} + cc::Layer* GetLayerForTesting() override { return nullptr; } private: DISALLOW_COPY_AND_ASSIGN(TestOverlayWindow);
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 062209c9..93ce2151 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -863,7 +863,6 @@ "../browser/pointer_lock_browsertest_mac.mm", "../browser/portal/portal_browsertest.cc", "../browser/power_monitor_browsertest.cc", - "../browser/presentation/presentation_browsertest.cc", "../browser/renderer_host/input/autoscroll_browsertest.cc", "../browser/renderer_host/input/composited_scrolling_browsertest.cc", "../browser/renderer_host/input/compositor_event_ack_browsertest.cc",
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py b/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py index 6c65cc8..9468105 100644 --- a/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py +++ b/content/test/gpu/gpu_tests/gpu_integration_test_unittest.py
@@ -32,6 +32,19 @@ path_util.AddDirToPathIfNeeded(path_util.GetChromiumSrcDir(), 'tools', 'perf') from chrome_telemetry_build import chromium_config +WIN_CONDITIONS = ['xp', 'vista', 'win7', 'win8', 'win10'] +MAC_CONDITIONS = ['leopard', 'snowleopard', 'lion', 'mountainlion', + 'mavericks', 'yosemite', 'sierra', 'highsierra', 'mojave'] +# These aren't expanded out into "lollipop", "marshmallow", etc. +ANDROID_CONDITIONS = ['l', 'm', 'n', 'o', 'p', 'q'] + +_map_specific_to_generic = {sos:'win' for sos in WIN_CONDITIONS} +_map_specific_to_generic.update({sos:'mac' for sos in MAC_CONDITIONS}) +_map_specific_to_generic.update({sos:'android' for sos in ANDROID_CONDITIONS}) + +_get_generic = lambda tags: set( + [_map_specific_to_generic.get(tag, tag) for tag in tags]) + VENDOR_NVIDIA = 0x10DE VENDOR_AMD = 0x1002 VENDOR_INTEL = 0x8086 @@ -185,7 +198,8 @@ error_msg += ('\n\nFound conflicts for test %s in %s:\n' % (pattern, file_name)) for e1, e2 in itertools.combinations(exps, 2): - if e1.tags.issubset(e2.tags) or e2.tags.issubset(e1.tags): + if (e1.tags.issubset(_get_generic(e2.tags)) or + e2.tags.issubset(_get_generic(e1.tags))): conflicts_found = True error_msg += (' line %d conflicts with line %d\n' % (e1.lineno, e2.lineno)) @@ -250,6 +264,25 @@ finally: temp_file.close() + def testCollisionInTestExpectationsWithGenericAndSpecificTags(self): + test_expectations = '''# tags: [ mac win linux xp ] + # tags: [ intel amd nvidia ] + # tags: [ debug release ] + [ intel win ] a/b/c/d [ Failure ] + [ intel xp debug ] a/b/c/d [ Skip ] + ''' + with self.assertRaises(AssertionError): + _checkTestExpectationsForCollision(test_expectations, 'test.txt') + + def testNoCollisionBetweenSpecificTags(self): + test_expectations = '''# tags: [ mac win linux xp win7 ] + # tags: [ intel amd nvidia ] + # tags: [ debug release ] + [ intel win7 ] a/b/c/d [ Failure ] + [ intel xp debug ] a/b/c/d [ Skip ] + ''' + _checkTestExpectationsForCollision(test_expectations, 'test.txt') + def testCollisionInTestExpectationCausesAssertion(self): test_expectations = '''# tags: [ mac win linux ] # tags: [ intel amd nvidia ]
diff --git a/docs/README.md b/docs/README.md index 39a9a6b..a7642e43 100644 --- a/docs/README.md +++ b/docs/README.md
@@ -165,9 +165,11 @@ browser vendors * [Using Crashpad with `content_shell`](testing/using_crashpad_with_content_shell.md) - Capture stack traces on layout test crashes without an attached debugger -* [Test Descriptions](test_descriptions.md) - Unit test targets that can be +* [Test Descriptions](testing/test_descriptions.md) - Unit test targets that can be built, with associated desciptions. -* [IPC Fuzzer](ipc_fuzzer.md) - Fuzz testing of Chromium IPC interfaces. +* [IPC Fuzzer](testing/ipc_fuzzer.md) - Fuzz testing of Chromium IPC interfaces. +* [Running Chrome tests with AddressSanitizer (asan) and LeakSanitizer (lsan)](testing/linux_running_asan_tests.md) - + Run Chrome tests with ASAN and LSAN builds to detect addressability issues and memory leaks. ### GPU-related docs * [GPU Pixel Wrangling](gpu/pixel_wrangling.md) - Instructions for GPU @@ -219,7 +221,7 @@ isolate browser components with different privileges. * [Zygote Process](linux_zygote.md) - How the Linux Zygote process, used to spawn new processes, works. -* [Running Web Tests on Linux](web_tests_linux.md) - Linux-specific +* [Running Web Tests on Linux](testing/web_tests_linux.md) - Linux-specific instructions for running web tests. * [Linux Sysroot Images](linux_sysroot.md) - How builds use libraries on Linux * [Linux Hardware Video Decoding](linux_hw_video_decode.md) - Enabling @@ -247,7 +249,7 @@ Setting up profiling for `content_shell` on Android * [Working Remotely with Android](working_remotely_with_android.md) - Building on a remote machine for an Android device connected to your local machine -* [Android Test Instructions](android_test_instructions.md) - Running a build +* [Android Test Instructions](testing/android_test_instructions.md) - Running a build on an Android device or emulator. * [Android Debugging](android_debugging_instructions.md) - Tools and tips for how to debug Java and/or C/C++ code running on Android.
diff --git a/docs/accessibility/tests.md b/docs/accessibility/tests.md index 9376333..a5b5bb5 100644 --- a/docs/accessibility/tests.md +++ b/docs/accessibility/tests.md
@@ -1,47 +1,47 @@ # Accessibility -Here's a quick overview of all of the locations in the codebase where -you'll find accessibility tests, and a brief overview of the purpose of -all of them. +Here's a quick overview of all of the locations in the codebase where you'll +find accessibility tests, and a brief overview of the purpose of all of them. -## Layout Tests +## Web Tests -This is the primary place where we test accessibility code in Blink. This -code should have no platform-specific code. Use this to test anything -where there's any interesting web platform logic, or where you need to be -able to query things synchronously from the renderer thread to test them. +This is the primary place where we test accessibility code in Blink. This code +should have no platform-specific code. Use this to test anything where there's +any interesting web platform logic, or where you need to be able to query things +synchronously from the renderer thread to test them. -Don't add tests for trivial features like ARIA attributes that we just -expose directly to the next layer up. In those cases the Blink tests are -trivial and it's more valuable to test these features at a higher level -where we can ensure they actually work. +Don't add tests for trivial features like ARIA attributes that we just expose +directly to the next layer up. In those cases the Blink tests are trivial and +it's more valuable to test these features at a higher level where we can ensure +they actually work. -Note that many of these tests are inherited from WebKit and the coding style -has evolved a lot since then. Look for more recent tests as a guide if writing -a new one. +Note that many of these tests are inherited from WebKit and the coding style has +evolved a lot since then. Look for more recent tests as a guide if writing a new +one. Test files: -``` -third_party/blink/web_tests/accessibility -``` +[third_party/blink/web_tests/accessibility](https://cs.chromium.org/chromium/src/third_party/blink/web_tests/accessibility/) Source code to AccessibilityController and WebAXObjectProxy: -``` -content/shell/test_runner -``` +[content/shell/test_runner](https://cs.chromium.org/chromium/src/content/shell/test_runner/) To run all accessibility web tests: + ``` -autoninja -C out/release blink_tests -third_party/blink/tools/run_web_tests.py --build-directory=out --target=release accessibility/ +autoninja -C out/release blink_tests third_party/blink/tools/run_web_tests.py \ + --build-directory=out --target=release accessibility/ ``` To run just one test by itself without the script: + ``` -autoninja -C out/release blink_tests -out/release/content_shell --run-web-tests third_party/blink/web_tests/accessibility/name-calc-inputs.html +autoninja -C out/release blink_tests && out/release/content_shell \ + --run-web-tests third_party/blink/web_tests/accessibility/name-calc-inputs.html ``` +For information on modifying or adding web tests, see the main +[web tests documentation](https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_tests.md). + ## DumpAccessibilityTree tests This is the best way to write both cross-platform and platform-specific tests @@ -53,32 +53,30 @@ [More documentation on DumpAccessibilityTree](../../content/test/data/accessibility/readme.md) Test files: -``` -content/test/data/accessibility -``` +[content/test/data/accessibility](https://cs.chromium.org/chromium/src/content/test/data/accessibility/) Test runner: -``` -content/browser/accessibility/dump_accessibility_tree_browsertest.cc -``` +[content/browser/accessibility/dump_accessibility_tree_browsertest.cc](https://cs.chromium.org/chromium/src/content/browser/accessibility/dump_accessibility_tree_browsertest.cc) To run all tests: + ``` -autoninja -C out/release content_browsertests -out/release/content_browsertests --gtest_filter="DumpAccessibilityTree*" +autoninja -C out/release content_browsertests && \ + out/release/content_browsertests --gtest_filter="DumpAccessibilityTree*" ``` ## Other content_browsertests -There are many other tests in content/ that relate to accessibility. -All of these tests work by launching a full multi-process browser shell, -loading a web page in a renderer, then accessing the resulting accessibility -tree from the browser process, and running some test from there. +There are many other tests in content/ that relate to accessibility. All of +these tests work by launching a full multi-process browser shell, loading a web +page in a renderer, then accessing the resulting accessibility tree from the +browser process, and running some test from there. To run all tests: + ``` -autoninja -C out/release content_browsertests -out/release/content_browsertests --gtest_filter="*ccessib*" +autoninja -C out/release content_browsertests && \ + out/release/content_browsertests --gtest_filter="*ccessib*" ``` ## Accessibility unittests @@ -87,33 +85,33 @@ accessibility infrastructure. Code location: -``` -ui/accessibility -``` +[ui/accessibility](https://cs.chromium.org/chromium/src/ui/accessibility/) To run all tests: + ``` -autoninja -C out/release accessibility_unittests -out/release/accessibility_unittests +autoninja -C out/release accessibility_unittests && \ + out/release/accessibility_unittests ``` ## ChromeVox tests ChromeVox tests are part of the browser_tests suite. You must build with -```target_os = "chromeos"``` in your GN args. +`target_os = "chromeos"` in your GN args. To run all tests: + ``` -autoninja -C out/release browser_tests -out/release/browser_tests --test-launcher-jobs=20 --gtest_filter=ChromeVox* +autoninja -C out/release browser_tests && \ + out/release/browser_tests --test-launcher-jobs=20 --gtest_filter=ChromeVox* ``` ### Select-To-Speak tests ``` -autoninja -C out/release unit_tests browser_tests -out/release/unit_tests --gtest_filter=*SelectToSpeak* -out/release/browser_tests --gtest_filter=*SelectToSpeak* +autoninja -C out/Default unit_tests browser_tests && \ + out/Default/unit_tests --gtest_filter=*SelectToSpeak* && \ + out/Default/browser_tests --gtest_filter=*SelectToSpeak* ``` ## Performance tests @@ -122,26 +120,21 @@ ## Other locations of accessibility tests: -Even this isn't a complete list. The tests described above cover more -than 90% of the accessibility tests, and the remainder are scattered -throughout the codebase. Here are a few other locations to check: +Even this isn't a complete list. The tests described above cover more than 90% +of the accessibility tests, and the remainder are scattered throughout the +codebase. Here are a few other locations to check: -``` -chrome/android/javatests/src/org/chromium/chrome/browser/accessibility -chrome/browser/accessibility -chrome/browser/chromeos/accessibility/ -ui/chromeos -ui/views/accessibility -``` +* [chrome/android/javatests/src/org/chromium/chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/android/javatests/src/org/chromium/chrome/browser/accessibility/) +* [chrome/browser/accessibility](https://cs.chromium.org/chromium/src/chrome/browser/accessibility/) +* [chrome/browser/chromeos/accessibility/](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/accessibility/) +* [ui/chromeos](https://cs.chromium.org/chromium/src/ui/chromeos/) +* [ui/views/accessibility](https://cs.chromium.org/chromium/src/ui/views/accessibility/) ## Helpful flags: Across all tests there are some helpful flags that will make testing easier. -``` ---test-launcher-jobs=10 # This will run stuff in parallel and make flakes more obvious -``` +* Run tests multiple times in parallel (useful for finding flakes): + `--test-launcher-jobs=10` -``` ---gtest_filter="*Cats*" # Filter which tests run. Takes a wildcard (*) optionally. -``` +* Filter which tests to run: `--gtest_filter="*Cats*"`
diff --git a/docs/android_build_instructions.md b/docs/android_build_instructions.md index 06332143e..96332a91 100644 --- a/docs/android_build_instructions.md +++ b/docs/android_build_instructions.md
@@ -181,7 +181,7 @@ The Google Play Store allows apps to send customized `.apk` files depending on the version of Android running on a device. Chrome uses this feature to target -3 different versions using 3 different ninja targets: +4 different versions using 4 different ninja targets: 1. `chrome_public_apk` (ChromePublic.apk) * `minSdkVersion=19` (KitKat). @@ -198,7 +198,14 @@ * `minSdkVersion=24` (Nougat). * Contains both WebView and Chrome within the same APK. * This APK is even bigger, but much smaller than SystemWebView.apk + ChromePublic.apk. - * Stores libchrome.so uncompressed within the APK. + * Stores libmonochrome.so uncompressed within the APK. + * Does not use Crazy Linker (WebView requires system linker). + * But system linker supports crazy linker features now anyways. +4. `trichrome_chrome_apk` and `trichrome_library_apk` (TrichromeChrome.apk and TrichromeLibrary.apk) + * `minSdkVersion=Q` (Q). + * TrichromeChrome contains only the Chrome code that is not shared with WebView. + * TrichromeLibrary contains the shared code and is a "static shared library APK", which must be installed prior to TrichromeChrome. + * Stores libmonochrome.so uncompressed within TrichromeLibrary.apk. * Does not use Crazy Linker (WebView requires system linker). * But system linker supports crazy linker features now anyways.
diff --git a/docs/android_native_libraries.md b/docs/android_native_libraries.md index a2dfa972e7..9c13e39 100644 --- a/docs/android_native_libraries.md +++ b/docs/android_native_libraries.md
@@ -9,8 +9,10 @@ * Android L & M (ChromeModernPublic.apk): * `libchrome.so` is stored uncompressed within the apk (with the name `crazy.libchrome.so` to avoid extraction). * It is loaded directly from the apk (without extracting) by `mmap()`'ing it. - * Android N+ (MonochromePublic.apk): + * Android N, O & P (MonochromePublic.apk): * `libmonochrome.so` is stored uncompressed (AndroidManifest.xml attribute disables extraction) and loaded directly from the apk (functionality now supported by the system linker). + * Android Q (TrichromeChrome.apk+TrichromeLibrary.apk): + * `libmonochrome.so` is stored in the shared library apk (TrichromeLibrary.apk) instead of in the Chrome apk, so that it can be shared with TrichromeWebView. It's stored uncompressed and loaded directly from the apk the same way as on N-P. Trichrome uses the same native library as Monochrome, so it's still called `libmonochrome.so`. ## Crashpad Packaging * Crashpad is a native library providing out-of-process crash dumping. When a @@ -20,7 +22,7 @@ * libcrashpad_handler.so is a standalone executable containing all of the crash dumping code. It is stored compressed and extracted automatically by the system, allowing it to be directly executed to produce a crash dump. - * Monochrome (N through P), Trichrome (P), and SystemWebView (P-): + * Monochrome (N through P) and SystemWebView (L through P): * All of the Crashpad code is linked into the package's main native library (e.g. libmonochrome.so). When a dump is requested, /system/bin/app_process is executed, loading CrashpadMain.java which in turn uses JNI to call into @@ -72,7 +74,7 @@ * `JNI_OnLoad()` is the only exported symbol (enforced by a linker script). * Native methods registered explicitly during start-up by generated code. * Explicit generation is required because the Android runtime uses the system's `dlsym()`, which doesn't know about Crazy-Linker-opened libraries. - * For MonochromePublic.apk: + * For MonochromePublic.apk and TrichromeChrome.apk: * `JNI_OnLoad()` and `Java_*` symbols are exported by linker script. * No manual JNI registration is done. Symbols are resolved lazily by the runtime. @@ -107,17 +109,20 @@ * Linker puts `GNU_RELRO` into private memory and applies relocations as per normal. * Afterwards, memory pages are compared against the shared memory and all identical pages are swapped out for ashmem ones (using `munmap()` & `mmap()`). * For a more detailed description, refer to comments in [Linker.java](https://cs.chromium.org/chromium/src/base/android/java/src/org/chromium/base/library_loader/Linker.java). - * For Android N+: + * For Android N-P: * The OS maintains a RELRO file on disk with the contents of the GNU_RELRO segment. * All Android apps that contain a WebView load `libmonochrome.so` at the same virtual address and apply RELRO sharing against the memory-mapped RELRO file. * Chrome uses `MonochromeLibraryPreloader` to call into the same WebView library loading code. * When Monochrome is the WebView provider, `libmonochrome.so` is loaded with the system's cached RELRO's applied. * `System.loadLibrary()` is called afterwards. * When Monochrome is the WebView provider, this only calls JNI_OnLoad, since the library is already loaded. Otherwise, this loads the library and no RELRO sharing occurs. - * For non-low-end Android O+ (where there's a WebView zygote): + * For non-low-end Android O-P (where there's a WebView zygote): * For non-renderer processes, the above Android N+ logic applies. * For renderer processes, the OS starts all Monochrome renderer processes by `fork()`ing the WebView zygote rather than the normal application zygote. * In this case, RELRO sharing would be redundant since the entire process' memory is shared with the zygote with copy-on-write semantics. + * For Android Q+ (Trichrome): + * TrichromeChrome no longer shares its RELRO data with WebView and no RELRO sharing occurs. TrichromeWebView works the same way as on Android N-P. + * TrichromeChrome's renderer processes are no longer `fork()`ed from the WebView zygote. TrichromeWebView works the same way as on Android N-P. ## Library Prefetching * During start-up, we `fork()` a process that reads a byte from each page of the library's memory (or just the ordered range of the library).
diff --git a/docs/infra/cq_builders.md b/docs/infra/cq_builders.md index b3cd652..22dabe0 100644 --- a/docs/infra/cq_builders.md +++ b/docs/infra/cq_builders.md
@@ -70,9 +70,9 @@ * [win10_chromium_x64_rel_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win10_chromium_x64_rel_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win10_chromium_x64_rel_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win10_chromium_x64_rel_ng)) -* [win_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_chromium_compile_dbg_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win_chromium_compile_dbg_ng)) +* [win7-rel](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win7-rel) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win7-rel)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win7-rel)) - TODO(crbug.com/948145): Re-add win7-rel once the bot has recovered. +* [win_chromium_compile_dbg_ng](https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_chromium_compile_dbg_ng) ([`commit-queue.cfg` entry](https://cs.chromium.org/search/?q=package:%5Echromium$+file:commit-queue.cfg+chromium/try/win_chromium_compile_dbg_ng)) ([matching builders](https://cs.chromium.org/search/?q=file:trybots.py+win_chromium_compile_dbg_ng)) ## Optional builders
diff --git a/docs/android_test_instructions.md b/docs/testing/android_test_instructions.md similarity index 100% rename from docs/android_test_instructions.md rename to docs/testing/android_test_instructions.md
diff --git a/docs/ipc_fuzzer.md b/docs/testing/ipc_fuzzer.md similarity index 100% rename from docs/ipc_fuzzer.md rename to docs/testing/ipc_fuzzer.md
diff --git a/docs/linux_running_asan_tests.md b/docs/testing/linux_running_asan_tests.md similarity index 100% rename from docs/linux_running_asan_tests.md rename to docs/testing/linux_running_asan_tests.md
diff --git a/docs/test_descriptions.md b/docs/testing/test_descriptions.md similarity index 100% rename from docs/test_descriptions.md rename to docs/testing/test_descriptions.md
diff --git a/docs/web_tests_linux.md b/docs/testing/web_tests_linux.md similarity index 100% rename from docs/web_tests_linux.md rename to docs/testing/web_tests_linux.md
diff --git a/extensions/browser/extension_function_histogram_value.h b/extensions/browser/extension_function_histogram_value.h index 9edb4dd..d6f0f7a1 100644 --- a/extensions/browser/extension_function_histogram_value.h +++ b/extensions/browser/extension_function_histogram_value.h
@@ -1395,6 +1395,8 @@ MANAGEMENT_INSTALLREPLACEMENTWEBAPP = 1332, FILEMANAGERPRIVATE_GETANDROIDPICKERAPPS = 1333, FILEMANAGERPRIVATE_SELECTANDROIDPICKERAPP = 1334, + AUTOTESTPRIVATE_GETSHELFALIGNMENT = 1335, + AUTOTESTPRIVATE_SETSHELFALIGNMENT = 1336, // Last entry: Add new entries above, then run: // python tools/metrics/histograms/update_extension_histograms.py ENUM_BOUNDARY
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc index 1a3a25f..a7729c7 100644 --- a/extensions/browser/extension_prefs.cc +++ b/extensions/browser/extension_prefs.cc
@@ -343,6 +343,9 @@ } ExtensionPrefs::~ExtensionPrefs() { + for (auto& observer : observer_list_) + observer.OnExtensionPrefsWillBeDestroyed(this); + DCHECK(observer_list_.begin() == observer_list_.end()); } // static
diff --git a/extensions/browser/extension_prefs_observer.h b/extensions/browser/extension_prefs_observer.h index 6c52472e..83f6c21f 100644 --- a/extensions/browser/extension_prefs_observer.h +++ b/extensions/browser/extension_prefs_observer.h
@@ -47,6 +47,12 @@ // https://chromium-review.googlesource.com/c/chromium/src/+/1196107/3/chrome/browser/extensions/runtime_permissions_observer.h#26. virtual void OnExtensionRuntimePermissionsChanged( const std::string& extension_id) {} + + // Called when the ExtensionPrefs object (the thing that this observer + // observes) will be destroyed. In response, the observer, |this|, should + // call "prefs->RemoveObserver(this)", whether directly or indirectly (e.g. + // via ScopedObserver::Remove). + virtual void OnExtensionPrefsWillBeDestroyed(ExtensionPrefs* prefs) {} }; // An ExtensionPrefsObserver that's part of the GetEarlyExtensionPrefsObservers
diff --git a/fuchsia/runners/cast/cast_component.h b/fuchsia/runners/cast/cast_component.h index 7b44f84..e8ee7ad 100644 --- a/fuchsia/runners/cast/cast_component.h +++ b/fuchsia/runners/cast/cast_component.h
@@ -5,8 +5,6 @@ #ifndef FUCHSIA_RUNNERS_CAST_CAST_COMPONENT_H_ #define FUCHSIA_RUNNERS_CAST_CAST_COMPONENT_H_ -#include <fuchsia/modular/cpp/fidl.h> -#include <fuchsia/sys/cpp/fidl.h> #include <lib/fidl/cpp/binding.h> #include <memory> @@ -55,9 +53,6 @@ std::unique_ptr<QueryableDataBindings> queryable_data_; std::unique_ptr<TouchInputBindings> touch_input_; - fuchsia::sys::ServiceProviderPtr agent_services_; - fuchsia::modular::AgentControllerPtr agent_controller_; - fidl::Binding<fuchsia::web::NavigationEventListener> navigation_listener_binding_;
diff --git a/gpu/command_buffer/service/external_vk_image_factory.cc b/gpu/command_buffer/service/external_vk_image_factory.cc index e0b7332..d8f3fe0 100644 --- a/gpu/command_buffer/service/external_vk_image_factory.cc +++ b/gpu/command_buffer/service/external_vk_image_factory.cc
@@ -44,9 +44,8 @@ ->GetVulkanDevice(); VkFormat vk_format = ToVkFormat(format); - VkResult result; VkImage image; - result = CreateExternalVkImage(vk_format, size, &image); + VkResult result = CreateExternalVkImage(vk_format, size, &image); if (result != VK_SUCCESS) { LOG(ERROR) << "Failed to create external VkImage: " << result; return nullptr; @@ -218,14 +217,52 @@ const Mailbox& mailbox, int client_id, gfx::GpuMemoryBufferHandle handle, - gfx::BufferFormat format, + gfx::BufferFormat buffer_format, SurfaceHandle surface_handle, const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) { - // GpuMemoryBuffers supported is not implemented yet. - NOTIMPLEMENTED(); - return nullptr; + DCHECK(CanImportGpuMemoryBuffer(handle.type)); + + if (!gpu::IsImageSizeValidForGpuMemoryBufferFormat(size, buffer_format)) { + LOG(ERROR) << "Invalid image size for format."; + return nullptr; + } + + auto* vk_context_provider = context_state_->vk_context_provider(); + VkDevice vk_device = vk_context_provider->GetDeviceQueue()->GetVulkanDevice(); + VkImage vk_image = VK_NULL_HANDLE; + VkImageCreateInfo vk_image_info{}; + VkDeviceMemory vk_device_memory = VK_NULL_HANDLE; + VkDeviceSize memory_size = 0; + if (!vk_context_provider->GetVulkanImplementation() + ->CreateImageFromGpuMemoryHandle(vk_device, std::move(handle), size, + &vk_image, &vk_image_info, + &vk_device_memory, &memory_size)) { + return nullptr; + } + + VkFormat expected_format = ToVkFormat(viz::GetResourceFormat(buffer_format)); + if (expected_format != vk_image_info.format) { + DLOG(ERROR) << "BufferFormat doesn't match the buffer"; + vkFreeMemory(vk_device, vk_device_memory, nullptr); + vkDestroyImage(vk_device, vk_image, nullptr); + return nullptr; + } + + TransitionToColorAttachment(vk_image); + + return std::make_unique<ExternalVkImageBacking>( + mailbox, viz::GetResourceFormat(buffer_format), size, color_space, usage, + context_state_, vk_image, vk_device_memory, memory_size, + vk_image_info.format); +} + +bool ExternalVkImageFactory::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return context_state_->vk_context_provider() + ->GetVulkanImplementation() + ->CanImportGpuMemoryBuffer(memory_buffer_type); } VkResult ExternalVkImageFactory::CreateExternalVkImage(VkFormat format,
diff --git a/gpu/command_buffer/service/external_vk_image_factory.h b/gpu/command_buffer/service/external_vk_image_factory.h index d730a41..383b2df 100644 --- a/gpu/command_buffer/service/external_vk_image_factory.h +++ b/gpu/command_buffer/service/external_vk_image_factory.h
@@ -48,6 +48,8 @@ const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; private: VkResult CreateExternalVkImage(VkFormat format,
diff --git a/gpu/command_buffer/service/shared_image_backing_factory.h b/gpu/command_buffer/service/shared_image_backing_factory.h index 82ab25c2..406b13c 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory.h +++ b/gpu/command_buffer/service/shared_image_backing_factory.h
@@ -47,6 +47,11 @@ const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) = 0; + + // Returns true if the specified GpuMemoryBufferType can be imported using + // this factory. + virtual bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) = 0; }; } // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc index 1d3f1a7..0d597bb0 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
@@ -1026,6 +1026,11 @@ return nullptr; } +bool SharedImageBackingFactoryAHB::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + SharedImageBackingFactoryAHB::FormatInfo::FormatInfo() = default; SharedImageBackingFactoryAHB::FormatInfo::~FormatInfo() = default;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h index a1cec359..49cf7fea 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.h
@@ -55,6 +55,8 @@ const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; private: struct FormatInfo {
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc index a0d54bc..0126a74c 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.cc
@@ -1045,6 +1045,14 @@ std::move(handle), size, format, client_id, surface_handle); } +bool SharedImageBackingFactoryGLTexture::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + // SharedImageFactory may call CanImportGpuMemoryBuffer() in all other + // SharedImageBackingFactory implementations except this one. + NOTREACHED(); + return true; +} + std::unique_ptr<SharedImageBacking> SharedImageBackingFactoryGLTexture::MakeBacking( bool passthrough,
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h index 7dba8b7..d077ef449 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_gl_texture.h
@@ -71,6 +71,8 @@ const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; static std::unique_ptr<SharedImageBacking> CreateSharedImageForTest( const Mailbox& mailbox,
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.h b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.h index 68caa0a..c59b4c91 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.h +++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.h
@@ -58,6 +58,8 @@ const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; private: void CollectGLFormatInfo(const GpuDriverBugWorkarounds& workarounds,
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm index fb4b283..2d7ee33 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm +++ b/gpu/command_buffer/service/shared_image_backing_factory_iosurface.mm
@@ -652,4 +652,9 @@ return nullptr; } +bool SharedImageBackingFactoryIOSurface::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + } // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc index e4b12bb..1040019b 100644 --- a/gpu/command_buffer/service/shared_image_factory.cc +++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -176,15 +176,7 @@ // TODO(piman): depending on handle.type, choose platform-specific backing // factory, e.g. SharedImageBackingFactoryAHB. bool allow_legacy_mailbox = false; - SharedImageBackingFactory* factory = nullptr; - if (!using_vulkan_) { - // GMB is only supported by gl backing factory when gl is being used. - allow_legacy_mailbox = true; - factory = gl_backing_factory_.get(); - } else { - // TODO(penghuang): support GMB for vulkan. - NOTIMPLEMENTED() << "GMB is not supported for vulkan."; - } + auto* factory = GetFactoryByUsage(usage, &allow_legacy_mailbox, handle.type); if (!factory) return false; auto backing = @@ -273,7 +265,8 @@ SharedImageBackingFactory* SharedImageFactory::GetFactoryByUsage( uint32_t usage, - bool* allow_legacy_mailbox) { + bool* allow_legacy_mailbox, + gfx::GpuMemoryBufferType gmb_type) { bool using_dawn = usage & SHARED_IMAGE_USAGE_WEBGPU; bool vulkan_usage = using_vulkan_ && (usage & SHARED_IMAGE_USAGE_DISPLAY); bool gl_usage = usage & SHARED_IMAGE_USAGE_GLES2; @@ -292,6 +285,23 @@ !using_interop_factory; using_interop_factory |= vulkan_usage && !using_wrapped_sk_image; + if (gmb_type != gfx::EMPTY_BUFFER) { + bool interop_factory_supports_gmb = + interop_backing_factory_ && + interop_backing_factory_->CanImportGpuMemoryBuffer(gmb_type); + + if (using_wrapped_sk_image || + (using_interop_factory && !interop_backing_factory_)) { + LOG(ERROR) << "Unable to screate SharedImage backing: no support for the " + "requested GpuMemoryBufferType."; + return nullptr; + } + + // If |interop_backing_factory_| supports supplied GMB type then use it + // instead of |gl_backing_factory_|. + using_interop_factory |= interop_factory_supports_gmb; + } + *allow_legacy_mailbox = !using_wrapped_sk_image && !using_interop_factory && !using_vulkan_;
diff --git a/gpu/command_buffer/service/shared_image_factory.h b/gpu/command_buffer/service/shared_image_factory.h index c4370e2..06d4b61 100644 --- a/gpu/command_buffer/service/shared_image_factory.h +++ b/gpu/command_buffer/service/shared_image_factory.h
@@ -98,8 +98,10 @@ private: bool IsSharedBetweenThreads(uint32_t usage); - SharedImageBackingFactory* GetFactoryByUsage(uint32_t usage, - bool* allow_legacy_mailbox); + SharedImageBackingFactory* GetFactoryByUsage( + uint32_t usage, + bool* allow_legacy_mailbox, + gfx::GpuMemoryBufferType gmb_type = gfx::EMPTY_BUFFER); MailboxManager* mailbox_manager_; SharedImageManager* shared_image_manager_; std::unique_ptr<MemoryTypeTracker> memory_tracker_;
diff --git a/gpu/command_buffer/service/wrapped_sk_image.cc b/gpu/command_buffer/service/wrapped_sk_image.cc index 1d52e077..7bba6ac 100644 --- a/gpu/command_buffer/service/wrapped_sk_image.cc +++ b/gpu/command_buffer/service/wrapped_sk_image.cc
@@ -12,6 +12,7 @@ #include "base/trace_event/trace_event.h" #include "components/viz/common/resources/resource_format_utils.h" #include "gpu/command_buffer/common/shared_image_trace_utils.h" +#include "gpu/command_buffer/service/feature_info.h" #include "gpu/command_buffer/service/mailbox_manager.h" #include "gpu/command_buffer/service/shared_context_state.h" #include "gpu/command_buffer/service/shared_image_backing.h" @@ -22,6 +23,7 @@ #include "third_party/skia/include/gpu/GrBackendSurface.h" #include "third_party/skia/include/gpu/GrTypes.h" #include "ui/gl/gl_context.h" +#include "ui/gl/gl_gl_api_implementation.h" #include "ui/gl/trace_util.h" namespace gpu { @@ -44,8 +46,8 @@ } void Destroy() override { - DCHECK(!!image_); - image_.reset(); + DCHECK(!!surface_); + surface_.reset(); } bool IsCleared() const override { return cleared_; } @@ -70,22 +72,38 @@ } sk_sp<SkSurface> GetSkSurface(int final_msaa_count, - SkColorType color_type, - sk_sp<SkColorSpace> color_space, const SkSurfaceProps& surface_props) { if (context_state_->context_lost()) return nullptr; DCHECK(context_state_->IsCurrent(nullptr)); - GrBackendTexture gr_texture = - image_->getBackendTexture(/*flushPendingGrContextIO=*/true); - DCHECK(gr_texture.isValid()); + SkColorType sk_color_type = viz::ResourceFormatToClosestSkColorType( + /*gpu_compositing=*/true, format()); + return SkSurface::MakeFromBackendTexture( - context_state_->gr_context(), gr_texture, kTopLeft_GrSurfaceOrigin, - final_msaa_count, color_type, color_space, &surface_props); + context_state_->gr_context(), promise_texture_->backendTexture(), + kTopLeft_GrSurfaceOrigin, final_msaa_count, sk_color_type, + color_space().ToSkColorSpace(), &surface_props); } sk_sp<SkPromiseImageTexture> promise_texture() { return promise_texture_; } + // TODO(backer): Check if we can remove this once Skia gives us an API to + // explicitly allocate GPU memory and we can remove surface_. + void ApplyUnbindWorkaround() { + if (!context_state_->GrContextIsGL()) + return; + + // This seems like https://crbug.com/457027 because it only affects Adreno + // 4XX and happens just before a glDeleteFramebuffer (triggered by + // ~SkSurface). Unfortunately, it does not seem to be enough to just clear + // the FBO attachments (which Skia does downstream). The other workaround + // listed in https://crbug.com/457027 is a glFlush() and it does work. + if (context_state_->feature_info() + ->workarounds() + .unbind_attachments_on_bound_render_fbo_delete) + gl::g_current_gl_context->glFlushFn(); + } + protected: std::unique_ptr<SharedImageRepresentationSkia> ProduceSkia( SharedImageManager* manager, @@ -120,36 +138,27 @@ context_state_->set_need_context_state_reset(true); - if (data.empty()) { - auto surface = SkSurface::MakeRenderTarget(context_state_->gr_context(), - SkBudgeted::kNo, info); - if (!surface) - return false; + surface_ = SkSurface::MakeRenderTarget(context_state_->gr_context(), + SkBudgeted::kNo, info); + if (!surface_) + return false; #if DCHECK_IS_ON() - auto* canvas = surface->getCanvas(); - canvas->clear(SK_ColorGREEN); + auto* canvas = surface_->getCanvas(); + canvas->clear(SK_ColorGREEN); #endif - image_ = surface->makeImageSnapshot(); - } else { + if (!data.empty()) { SkBitmap bitmap; if (!bitmap.installPixels(info, const_cast<uint8_t*>(data.data()), info.minRowBytes())) { return false; } - sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap); - if (!image) - return false; - image_ = image->makeTextureImage(context_state_->gr_context(), - image->colorSpace()); + surface_->writePixels(bitmap, /*dstX=*/0, /*dstY=*/0); } - if (!image_ || !image_->isTextureBacked()) - return false; - auto gr_texture = - image_->getBackendTexture(/*flushPendingGrContextIO=*/false); + surface_->getBackendTexture(SkSurface::kFlushWrite_BackendHandleAccess); if (!gr_texture.isValid()) return false; promise_texture_ = SkPromiseImageTexture::Make(gr_texture); @@ -176,7 +185,7 @@ SharedContextState* const context_state_; - sk_sp<SkImage> image_; + sk_sp<SkSurface> surface_; sk_sp<SkPromiseImageTexture> promise_texture_; bool cleared_ = false; @@ -200,12 +209,8 @@ const SkSurfaceProps& surface_props, std::vector<GrBackendSemaphore>* begin_semaphores, std::vector<GrBackendSemaphore>* end_semaphores) override { - SkColorType sk_color_type = viz::ResourceFormatToClosestSkColorType( - /*gpu_compositing=*/true, format()); - - auto surface = wrapped_sk_image()->GetSkSurface( - final_msaa_count, sk_color_type, - backing()->color_space().ToSkColorSpace(), surface_props); + auto surface = + wrapped_sk_image()->GetSkSurface(final_msaa_count, surface_props); write_surface_ = surface.get(); return surface; } @@ -213,16 +218,19 @@ void EndWriteAccess(sk_sp<SkSurface> surface) override { DCHECK_EQ(surface.get(), write_surface_); DCHECK(surface->unique()); + wrapped_sk_image()->ApplyUnbindWorkaround(); write_surface_ = nullptr; } sk_sp<SkPromiseImageTexture> BeginReadAccess( std::vector<GrBackendSemaphore>* begin_semaphores, std::vector<GrBackendSemaphore>* end_semaphores) override { + DCHECK(!write_surface_); return wrapped_sk_image()->promise_texture(); } void EndReadAccess() override { + DCHECK(!write_surface_); // TODO(ericrk): Handle begin/end correctness checks. } @@ -286,6 +294,11 @@ return nullptr; } +bool WrappedSkImageFactory::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + std::unique_ptr<SharedImageRepresentationSkia> WrappedSkImage::ProduceSkia( SharedImageManager* manager, MemoryTypeTracker* tracker,
diff --git a/gpu/command_buffer/service/wrapped_sk_image.h b/gpu/command_buffer/service/wrapped_sk_image.h index 8529d9b2..b549965f 100644 --- a/gpu/command_buffer/service/wrapped_sk_image.h +++ b/gpu/command_buffer/service/wrapped_sk_image.h
@@ -51,6 +51,8 @@ const gfx::Size& size, const gfx::ColorSpace& color_space, uint32_t usage) override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; private: SharedContextState* const context_state_;
diff --git a/gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap_unittest.cc b/gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap_unittest.cc index e2070dc..f6da0a87 100644 --- a/gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap_unittest.cc +++ b/gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap_unittest.cc
@@ -12,15 +12,11 @@ // On Fuchsia NativePixmap depends on Vulkan, which is not initialized in tests. // See crbug.com/957700 -#if defined(OS_FUCHSIA) -#define MAYBE_GpuMemoryBufferImplNativePixmap \ - DISABLED_GpuMemoryBufferImplNativePixmap -#else -#define MAYBE_GpuMemoryBufferImplNativePixmap GpuMemoryBufferImplNativePixmap -#endif -INSTANTIATE_TYPED_TEST_SUITE_P(MAYBE_GpuMemoryBufferImplNativePixmap, +#if !defined(OS_FUCHSIA) +INSTANTIATE_TYPED_TEST_SUITE_P(GpuMemoryBufferImplNativePixmap, GpuMemoryBufferImplTest, GpuMemoryBufferImplNativePixmap); +#endif } // namespace } // namespace gpu
diff --git a/gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap_unittest.cc b/gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap_unittest.cc index 84f1792f..8af3ce4 100644 --- a/gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap_unittest.cc +++ b/gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap_unittest.cc
@@ -12,16 +12,11 @@ // On Fuchsia NativePixmap depends on Vulkan, which is not initialized in tests. // See crbug.com/957700 -#if defined(OS_FUCHSIA) -#define MAYBE_GpuMemoryBufferFactoryNativePixmap \ - DISABLED_GpuMemoryBufferFactoryNativePixmap -#else -#define MAYBE_GpuMemoryBufferFactoryNativePixmap \ - GpuMemoryBufferFactoryNativePixmap -#endif -INSTANTIATE_TYPED_TEST_SUITE_P(MAYBE_GpuMemoryBufferFactoryNativePixmap, +#if !defined(OS_FUCHSIA) +INSTANTIATE_TYPED_TEST_SUITE_P(GpuMemoryBufferFactoryNativePixmap, GpuMemoryBufferFactoryTest, GpuMemoryBufferFactoryNativePixmap); +#endif } // namespace } // namespace gpu
diff --git a/gpu/vulkan/android/vulkan_implementation_android.cc b/gpu/vulkan/android/vulkan_implementation_android.cc index 2a7ef88f..50f8cf4 100644 --- a/gpu/vulkan/android/vulkan_implementation_android.cc +++ b/gpu/vulkan/android/vulkan_implementation_android.cc
@@ -15,6 +15,7 @@ #include "gpu/vulkan/vulkan_surface.h" #include "gpu/vulkan/vulkan_util.h" #include "ui/gfx/gpu_fence.h" +#include "ui/gfx/gpu_memory_buffer.h" namespace gpu { @@ -134,6 +135,25 @@ return VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID; } +bool VulkanImplementationAndroid::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + +bool VulkanImplementationAndroid::CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) { + // TODO(sergeyu): Move code from CreateVkImageAndImportAHB() here and remove + // CreateVkImageAndImportAHB(). + NOTIMPLEMENTED(); + return false; +} + bool VulkanImplementationAndroid::CreateVkImageAndImportAHB( const VkDevice& vk_device, const VkPhysicalDevice& vk_physical_device,
diff --git a/gpu/vulkan/android/vulkan_implementation_android.h b/gpu/vulkan/android/vulkan_implementation_android.h index 6657900..ee0add3a 100644 --- a/gpu/vulkan/android/vulkan_implementation_android.h +++ b/gpu/vulkan/android/vulkan_implementation_android.h
@@ -41,6 +41,16 @@ SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; + bool CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) override; bool CreateVkImageAndImportAHB( const VkDevice& vk_device, const VkPhysicalDevice& vk_physical_device,
diff --git a/gpu/vulkan/vulkan_implementation.h b/gpu/vulkan/vulkan_implementation.h index 4bd584aa..a86b7a0 100644 --- a/gpu/vulkan/vulkan_implementation.h +++ b/gpu/vulkan/vulkan_implementation.h
@@ -14,6 +14,9 @@ #include "build/build_config.h" #include "gpu/vulkan/semaphore_handle.h" #include "gpu/vulkan/vulkan_export.h" +#include "ui/gfx/buffer_types.h" +#include "ui/gfx/geometry/size.h" +#include "ui/gfx/gpu_memory_buffer.h" #include "ui/gfx/native_widget_types.h" #if defined(OS_ANDROID) @@ -23,7 +26,8 @@ namespace gfx { class GpuFence; -} +struct GpuMemoryBufferHandle; +} // namespace gfx namespace gpu { @@ -85,9 +89,29 @@ // external images and memory. virtual VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() = 0; + // Returns true if the GpuMemoryBuffer of the specified type can be imported + // into VkImage using CreateImageFromGpuMemoryHandle(). + virtual bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) = 0; + + // Creates a VkImage from a GpuMemoryBuffer. If successful it initializes + // |vk_image|, |vk_image_info|, |vk_device_memory| and |mem_allocation_size|. + // Implementation must verify that the specified |size| fits in the size + // specified when |gmb_handle| was allocated. + virtual bool CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) = 0; + #if defined(OS_ANDROID) // Create a VkImage, import Android AHardwareBuffer object created outside of // the Vulkan device into Vulkan memory object and bind it to the VkImage. + // TODO(sergeyu): Remove this method and use + // CreateVkImageFromGpuMemoryHandle() instead. virtual bool CreateVkImageAndImportAHB( const VkDevice& vk_device, const VkPhysicalDevice& vk_physical_device,
diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.cc b/gpu/vulkan/win32/vulkan_implementation_win32.cc index fc14a80..61b5a44 100644 --- a/gpu/vulkan/win32/vulkan_implementation_win32.cc +++ b/gpu/vulkan/win32/vulkan_implementation_win32.cc
@@ -12,6 +12,7 @@ #include "gpu/vulkan/vulkan_instance.h" #include "gpu/vulkan/vulkan_surface.h" #include "ui/gfx/gpu_fence.h" +#include "ui/gfx/gpu_memory_buffer.h" namespace gpu { @@ -129,4 +130,21 @@ return VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT; } +bool VulkanImplementationWin32::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + +bool VulkanImplementationWin32::CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) { + NOTIMPLEMENTED(); + return false; +} + } // namespace gpu
diff --git a/gpu/vulkan/win32/vulkan_implementation_win32.h b/gpu/vulkan/win32/vulkan_implementation_win32.h index d49134b..bbce467d 100644 --- a/gpu/vulkan/win32/vulkan_implementation_win32.h +++ b/gpu/vulkan/win32/vulkan_implementation_win32.h
@@ -39,6 +39,16 @@ SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; + bool CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) override; private: VulkanInstance vulkan_instance_;
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.cc b/gpu/vulkan/x/vulkan_implementation_x11.cc index 69ef970..6c27fb7 100644 --- a/gpu/vulkan/x/vulkan_implementation_x11.cc +++ b/gpu/vulkan/x/vulkan_implementation_x11.cc
@@ -15,6 +15,7 @@ #include "gpu/vulkan/vulkan_util.h" #include "gpu/vulkan/x/vulkan_surface_x11.h" #include "ui/gfx/gpu_fence.h" +#include "ui/gfx/gpu_memory_buffer.h" namespace gpu { @@ -135,4 +136,21 @@ return VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; } +bool VulkanImplementationX11::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + +bool VulkanImplementationX11::CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) { + NOTIMPLEMENTED(); + return false; +} + } // namespace gpu
diff --git a/gpu/vulkan/x/vulkan_implementation_x11.h b/gpu/vulkan/x/vulkan_implementation_x11.h index 0d3116f..d0837b8 100644 --- a/gpu/vulkan/x/vulkan_implementation_x11.h +++ b/gpu/vulkan/x/vulkan_implementation_x11.h
@@ -40,6 +40,16 @@ SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; + bool CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) override; private: bool using_surface_ = true;
diff --git a/infra/config/commit-queue.cfg b/infra/config/commit-queue.cfg index b088380..a337143 100644 --- a/infra/config/commit-queue.cfg +++ b/infra/config/commit-queue.cfg
@@ -140,7 +140,9 @@ builders { name: "chromium/try/win10_chromium_x64_rel_ng" } - # TODO(crbug.com/948145): Re-add win7-rel once the bot has recovered. + builders { + name: "chromium/try/win7-rel" + } builders { name: "chromium/try/win_chromium_compile_dbg_ng" }
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index de2c98bd..cf940f9 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -965,10 +965,13 @@ - (void)stopChromeMain { // The UI should be stopped before the models they observe are stopped. [_mainCoordinator stop]; + _mainCoordinator = nil; [_spotlightManager shutdown]; _spotlightManager = nil; + // Invariant: The UI is stopped before the model is shutdown. + DCHECK(!_mainCoordinator); [_browserViewWrangler shutdown]; _browserViewWrangler = nil;
diff --git a/ios/chrome/browser/about_flags.mm b/ios/chrome/browser/about_flags.mm index 432d595..1f524fa 100644 --- a/ios/chrome/browser/about_flags.mm +++ b/ios/chrome/browser/about_flags.mm
@@ -581,6 +581,10 @@ flags_ui::kOsIos, FEATURE_VALUE_TYPE( autofill::features::kAutofillUseMobileLabelDisambiguation)}, + {"enable-autofill-prune-suggestions", + flag_descriptions::kAutofillPruneSuggestionsName, + flag_descriptions::kAutofillPruneSuggestionsDescription, flags_ui::kOsIos, + FEATURE_VALUE_TYPE(autofill::features::kAutofillPruneSuggestions)}, }; // Add all switches from experimental flags to |command_line|.
diff --git a/ios/chrome/browser/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/ios_chrome_flag_descriptions.cc index 437d8fc3..158b894 100644 --- a/ios/chrome/browser/ios_chrome_flag_descriptions.cc +++ b/ios/chrome/browser/ios_chrome_flag_descriptions.cc
@@ -42,15 +42,19 @@ "When enabled, shows the Google Pay logo animation when showing payments" "credit card suggestions in downstream keyboard accessory"; +const char kAutofillPruneSuggestionsName[] = "Autofill Prune Suggestions"; +const char kAutofillPruneSuggestionsDescription[] = + "Further limits the number of suggestions in the Autofill dropdown."; + const char kAutofillUseMobileLabelDisambiguationName[] = "Autofill Uses Mobile Label Disambiguation"; const char kAutofillUseMobileLabelDisambiguationDescription[] = "When enabled, Autofill suggestions' labels are displayed using a " "mobile-friendly format."; -extern const char kBreakpadNoDelayInitialUploadName[] = +const char kBreakpadNoDelayInitialUploadName[] = "Remove delay on initial crash upload"; -extern const char kBreakpadNoDelayInitialUploadDescription[] = +const char kBreakpadNoDelayInitialUploadDescription[] = "When enabled, the initial crash uploading will not be delayed. When " "disabled, initial upload is delayed until deferred initialization. This " "does not affect recovery mode.";
diff --git a/ios/chrome/browser/ios_chrome_flag_descriptions.h b/ios/chrome/browser/ios_chrome_flag_descriptions.h index af9543e..9860ab3 100644 --- a/ios/chrome/browser/ios_chrome_flag_descriptions.h +++ b/ios/chrome/browser/ios_chrome_flag_descriptions.h
@@ -29,6 +29,11 @@ extern const char kAutofillDownstreamUseGooglePayBrandingOniOSName[]; extern const char kAutofillDownstreamUseGooglePayBrandingOniOSDescription[]; +// Title and description for the flag that controls whether the maximum number +// of Autofill suggestions shown to the user is further limited. +extern const char kAutofillPruneSuggestionsName[]; +extern const char kAutofillPruneSuggestionsDescription[]; + // Title and description for the flag that controls whether Autofill's // suggestions' labels are formatting with a mobile-friendly approach. extern const char kAutofillUseMobileLabelDisambiguationName[];
diff --git a/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm b/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm index 0ef11ec..809773b 100644 --- a/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm +++ b/ios/chrome/browser/ntp_tiles/ntp_tiles_egtest.mm
@@ -5,7 +5,6 @@ #import <EarlGrey/EarlGrey.h> #import "ios/chrome/test/app/chrome_test_util.h" -#import "ios/chrome/test/app/history_test_util.h" #import "ios/chrome/test/app/tab_test_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" @@ -36,9 +35,7 @@ @implementation NTPTilesTest - (void)tearDown { - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); [super tearDown]; } @@ -52,9 +49,7 @@ web::test::SetUpSimpleHttpServer(responses); // Clear history and verify that the tile does not exist. - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey openNewTab]); [[EarlGrey selectElementWithMatcher: @@ -98,9 +93,7 @@ web::test::SetUpHttpServer(std::move(provider)); // Clear history and verify that the tile does not exist. - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey openNewTab]); [[EarlGrey selectElementWithMatcher: chrome_test_util::StaticTextWithAccessibilityLabel(@"title2")]
diff --git a/ios/chrome/browser/passwords/BUILD.gn b/ios/chrome/browser/passwords/BUILD.gn index be41cf8..9104cc8 100644 --- a/ios/chrome/browser/passwords/BUILD.gn +++ b/ios/chrome/browser/passwords/BUILD.gn
@@ -85,7 +85,7 @@ "//ios/public/provider/chrome/browser", "//ios/public/provider/chrome/browser/ui", "//ios/third_party/material_components_ios:material_components_ios", - "//ios/web", + "//ios/web/common", "//net", "//third_party/material_design_icons:ic_account_circle", "//ui/base",
diff --git a/ios/chrome/browser/passwords/credential_manager_util.mm b/ios/chrome/browser/passwords/credential_manager_util.mm index 21e965a..ee6108c9 100644 --- a/ios/chrome/browser/passwords/credential_manager_util.mm +++ b/ios/chrome/browser/passwords/credential_manager_util.mm
@@ -6,7 +6,7 @@ #include "components/security_state/core/security_state.h" #include "ios/chrome/browser/ssl/ios_security_state_tab_helper.h" -#import "ios/web/public/origin_util.h" +#import "ios/web/common/origin_util.h" #include "url/origin.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/passwords/password_controller.mm b/ios/chrome/browser/passwords/password_controller.mm index a875afb..3c60f74 100644 --- a/ios/chrome/browser/passwords/password_controller.mm +++ b/ios/chrome/browser/passwords/password_controller.mm
@@ -60,7 +60,7 @@ #include "ios/chrome/browser/ui/util/ui_util.h" #include "ios/chrome/browser/web/tab_id_tab_helper.h" #include "ios/chrome/grit/ios_strings.h" -#import "ios/web/public/origin_util.h" +#import "ios/web/common/origin_util.h" #include "ios/web/public/url_scheme_util.h" #import "ios/web/public/web_state/js/crw_js_injection_receiver.h" #include "ios/web/public/web_state/web_frame.h"
diff --git a/ios/chrome/browser/prerender/prerender_egtest.mm b/ios/chrome/browser/prerender/prerender_egtest.mm index 3c9e443f..09f00b5 100644 --- a/ios/chrome/browser/prerender/prerender_egtest.mm +++ b/ios/chrome/browser/prerender/prerender_egtest.mm
@@ -12,7 +12,6 @@ #import "ios/chrome/browser/ui/omnibox/omnibox_text_field_ios.h" #import "ios/chrome/browser/ui/omnibox/popup/omnibox_popup_truncating_label.h" #include "ios/chrome/browser/ui/util/ui_util.h" -#import "ios/chrome/test/app/history_test_util.h" #import "ios/chrome/test/app/tab_test_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_error_util.h" @@ -62,9 +61,7 @@ @"Disabled for iPad due to alternate letters educational screen."); } - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); // Set server up. self.testServer->RegisterRequestHandler( base::BindRepeating(&StandardResponse));
diff --git a/ios/chrome/browser/ssl/BUILD.gn b/ios/chrome/browser/ssl/BUILD.gn index 57b72b0..5bbbbaccd 100644 --- a/ios/chrome/browser/ssl/BUILD.gn +++ b/ios/chrome/browser/ssl/BUILD.gn
@@ -39,7 +39,8 @@ "//ios/chrome/browser/tabs", "//ios/chrome/browser/ui/util", "//ios/public/provider/chrome/browser", - "//ios/web", + "//ios/web/common", + "//ios/web/public", "//net", "//ui/base", "//url",
diff --git a/ios/chrome/browser/ssl/insecure_input_tab_helper.mm b/ios/chrome/browser/ssl/insecure_input_tab_helper.mm index c80e47d..c20f36f8 100644 --- a/ios/chrome/browser/ssl/insecure_input_tab_helper.mm +++ b/ios/chrome/browser/ssl/insecure_input_tab_helper.mm
@@ -12,9 +12,9 @@ #include "components/autofill/ios/form_util/form_activity_params.h" #include "components/autofill/ios/form_util/form_activity_tab_helper.h" #include "components/security_state/ios/ssl_status_input_event_data.h" +#import "ios/web/common/origin_util.h" #import "ios/web/public/navigation_item.h" #import "ios/web/public/navigation_manager.h" -#import "ios/web/public/origin_util.h" #import "ios/web/public/web_state/navigation_context.h" #import "ios/web/public/web_state/web_state.h" #import "ios/web/public/web_state/web_state_user_data.h"
diff --git a/ios/chrome/browser/ssl/ios_security_state_tab_helper.mm b/ios/chrome/browser/ssl/ios_security_state_tab_helper.mm index 61d499a..8b37a53 100644 --- a/ios/chrome/browser/ssl/ios_security_state_tab_helper.mm +++ b/ios/chrome/browser/ssl/ios_security_state_tab_helper.mm
@@ -10,10 +10,10 @@ #include "base/metrics/histogram_macros.h" #include "components/security_state/core/security_state.h" #include "components/security_state/ios/ssl_status_input_event_data.h" +#import "ios/web/common/origin_util.h" #include "ios/web/public/browser_state.h" #include "ios/web/public/navigation_item.h" #import "ios/web/public/navigation_manager.h" -#import "ios/web/public/origin_util.h" #include "ios/web/public/security_style.h" #include "ios/web/public/ssl_status.h" #import "ios/web/public/web_state/web_state.h"
diff --git a/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm b/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm index 98d87e3a..23831e3 100644 --- a/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm +++ b/ios/chrome/browser/ui/content_suggestions/content_suggestions_egtest.mm
@@ -34,7 +34,6 @@ #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/app/chrome_test_util.h" -#import "ios/chrome/test/app/history_test_util.h" #import "ios/chrome/test/app/tab_test_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h" @@ -185,9 +184,7 @@ - (void)tearDown { self.provider->FireCategoryStatusChanged( self.category, CategoryStatus::ALL_SUGGESTIONS_EXPLICITLY_DISABLED); - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); [super tearDown]; } @@ -493,9 +490,7 @@ NSString* pageTitle = base::SysUTF8ToNSString(kPageTitle); // Clear history and verify that the tile does not exist. - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey loadURL:pageURL]); CHROME_EG_ASSERT_NO_ERROR( [ChromeEarlGrey waitForWebViewContainingText:kPageLoadedString]);
diff --git a/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm b/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm index 95de9ad..e78c997 100644 --- a/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm +++ b/ios/chrome/browser/ui/content_suggestions/ntp_home_egtest.mm
@@ -38,7 +38,6 @@ #import "ios/chrome/browser/ui/util/uikit_ui_util.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/app/chrome_test_util.h" -#import "ios/chrome/test/app/history_test_util.h" #import "ios/chrome/test/app/tab_test_util.h" #include "ios/chrome/test/base/scoped_block_swizzler.h" #include "ios/chrome/test/earl_grey/accessibility_util.h" @@ -723,9 +722,7 @@ const GURL pageURL = self.testServer->GetURL(kPageURL); // Clear history to ensure the tile will be shown. - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - [[GREYUIThreadExecutor sharedInstance] drainUntilIdle]; + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey loadURL:pageURL]); CHROME_EG_ASSERT_NO_ERROR( [ChromeEarlGrey waitForWebViewContainingText:kPageLoadedString]);
diff --git a/ios/chrome/browser/ui/payments/BUILD.gn b/ios/chrome/browser/ui/payments/BUILD.gn index 57a483d..e13adcdf 100644 --- a/ios/chrome/browser/ui/payments/BUILD.gn +++ b/ios/chrome/browser/ui/payments/BUILD.gn
@@ -90,7 +90,8 @@ "//ios/chrome/browser/ui/payments/cells", "//ios/chrome/browser/ui/util", "//ios/third_party/material_roboto_font_loader_ios", - "//ios/web", + "//ios/web/common", + "//ios/web/public", "//third_party/libaddressinput", "//third_party/libaddressinput:strings_grit", "//ui/base",
diff --git a/ios/chrome/browser/ui/payments/payment_request_manager.mm b/ios/chrome/browser/ui/payments/payment_request_manager.mm index 17f0c6c..f2396aa1 100644 --- a/ios/chrome/browser/ui/payments/payment_request_manager.mm +++ b/ios/chrome/browser/ui/payments/payment_request_manager.mm
@@ -56,10 +56,10 @@ #import "ios/chrome/browser/ui/payments/js_payment_request_manager.h" #import "ios/chrome/browser/ui/payments/payment_request_coordinator.h" #import "ios/chrome/browser/ui/payments/payment_request_error_coordinator.h" +#include "ios/web/common/origin_util.h" #include "ios/web/public/favicon_status.h" #include "ios/web/public/navigation_item.h" #include "ios/web/public/navigation_manager.h" -#include "ios/web/public/origin_util.h" #include "ios/web/public/ssl_status.h" #import "ios/web/public/url_scheme_util.h" #import "ios/web/public/web_state/js/crw_js_injection_receiver.h"
diff --git a/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm b/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm index 700a8e0..06738c4 100644 --- a/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm +++ b/ios/chrome/browser/ui/settings/sync/utils/sync_fake_server_egtest.mm
@@ -21,7 +21,6 @@ #import "ios/chrome/browser/ui/settings/settings_table_view_controller.h" #include "ios/chrome/grit/ios_strings.h" #import "ios/chrome/test/app/chrome_test_util.h" -#import "ios/chrome/test/app/history_test_util.h" #import "ios/chrome/test/app/sync_test_util.h" #import "ios/chrome/test/app/tab_test_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" @@ -387,12 +386,9 @@ - (void)testSyncTypedURLUpload { const GURL mockURL("http://not-a-real-site/"); - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); [self setTearDownHandler:^{ - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); }]; chrome_test_util::AddTypedURLOnClient(mockURL); @@ -426,11 +422,9 @@ - (void)testSyncTypedUrlDownload { const GURL mockURL("http://not-a-real-site/"); - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); [self setTearDownHandler:^{ - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); }]; // Inject typed url on server. @@ -463,12 +457,9 @@ - (void)testSyncTypedURLDeleteFromClient { const GURL mockURL("http://not-a-real-site/"); - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); [self setTearDownHandler:^{ - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); }]; // Inject typed url on server. @@ -511,12 +502,9 @@ - (void)testSyncTypedURLDeleteFromServer { const GURL mockURL("http://not-a-real-site/"); - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); - + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); [self setTearDownHandler:^{ - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); }]; chrome_test_util::AddTypedURLOnClient(mockURL);
diff --git a/ios/chrome/browser/web/cache_egtest.mm b/ios/chrome/browser/web/cache_egtest.mm index d91cdf5..2418aabf 100644 --- a/ios/chrome/browser/web/cache_egtest.mm +++ b/ios/chrome/browser/web/cache_egtest.mm
@@ -10,7 +10,6 @@ #include "base/strings/stringprintf.h" #include "ios/chrome/browser/ui/util/ui_util.h" #import "ios/chrome/test/app/chrome_test_util.h" -#include "ios/chrome/test/app/history_test_util.h" #include "ios/chrome/test/app/navigation_test_util.h" #import "ios/chrome/test/app/web_view_interaction_test_util.h" #import "ios/chrome/test/earl_grey/chrome_earl_grey.h" @@ -210,8 +209,7 @@ web::test::SetUpHttpServer(std::make_unique<CacheTestResponseProvider>()); // Clear the history to ensure expected omnibox autocomplete results. - GREYAssertTrue(chrome_test_util::ClearBrowsingHistory(), - @"Clearing Browsing History timed out"); + CHROME_EG_ASSERT_NO_ERROR([ChromeEarlGrey clearBrowsingHistory]); const GURL cacheTestFirstPageURL = HttpServer::MakeUrl(kCacheTestFirstPageURL);
diff --git a/ios/web/BUILD.gn b/ios/web/BUILD.gn index 5aacaa54..1c53046 100644 --- a/ios/web/BUILD.gn +++ b/ios/web/BUILD.gn
@@ -386,7 +386,6 @@ sources = [ "public/crw_session_certificate_policy_cache_storage_unittest.mm", - "public/origin_util_unittest.mm", "public/serializable_user_data_manager_unittest.mm", "public/ssl_status_unittest.cc", "public/user_agent_unittest.mm",
diff --git a/ios/web/common/BUILD.gn b/ios/web/common/BUILD.gn index 536f97b..a156164 100644 --- a/ios/web/common/BUILD.gn +++ b/ios/web/common/BUILD.gn
@@ -11,6 +11,8 @@ "crw_web_view_content_view.mm", "features.h", "features.mm", + "origin_util.h", + "origin_util.mm", "referrer_util.cc", "referrer_util.h", "url_util.cc", @@ -42,6 +44,7 @@ ] sources = [ + "origin_util_unittest.mm", "referrer_util_unittest.cc", "url_util_unittest.cc", ]
diff --git a/ios/web/public/origin_util.h b/ios/web/common/origin_util.h similarity index 81% rename from ios/web/public/origin_util.h rename to ios/web/common/origin_util.h index 1701ee4..a2ece23 100644 --- a/ios/web/public/origin_util.h +++ b/ios/web/common/origin_util.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 IOS_WEB_PUBLIC_ORIGIN_UTIL_H_ -#define IOS_WEB_PUBLIC_ORIGIN_UTIL_H_ +#ifndef IOS_WEB_COMMON_ORIGIN_UTIL_H_ +#define IOS_WEB_COMMON_ORIGIN_UTIL_H_ class GURL; @@ -18,4 +18,4 @@ } // namespace web -#endif // IOS_WEB_PUBLIC_ORIGIN_UTIL_H_ +#endif // IOS_WEB_COMMON_ORIGIN_UTIL_H_
diff --git a/ios/web/public/origin_util.mm b/ios/web/common/origin_util.mm similarity index 96% rename from ios/web/public/origin_util.mm rename to ios/web/common/origin_util.mm index 47ad181..2b993b8ef 100644 --- a/ios/web/public/origin_util.mm +++ b/ios/web/common/origin_util.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/web/public/origin_util.h" +#import "ios/web/common/origin_util.h" #include "base/stl_util.h" #include "net/base/url_util.h"
diff --git a/ios/web/public/origin_util_unittest.mm b/ios/web/common/origin_util_unittest.mm similarity index 95% rename from ios/web/public/origin_util_unittest.mm rename to ios/web/common/origin_util_unittest.mm index 1b702d0..5bed38c 100644 --- a/ios/web/public/origin_util_unittest.mm +++ b/ios/web/common/origin_util_unittest.mm
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "ios/web/public/origin_util.h" +#import "ios/web/common/origin_util.h" #import <WebKit/WebKit.h> @@ -14,7 +14,6 @@ #error "This file requires ARC support." #endif - namespace web { using OriginUtilTest = PlatformTest; @@ -32,5 +31,4 @@ EXPECT_FALSE(IsOriginSecure(GURL("bogus://bogus"))); } - } // namespace web
diff --git a/ios/web/navigation/history_state_operations_inttest.mm b/ios/web/navigation/history_state_operations_inttest.mm index 0f780e2..5bab0888 100644 --- a/ios/web/navigation/history_state_operations_inttest.mm +++ b/ios/web/navigation/history_state_operations_inttest.mm
@@ -477,10 +477,6 @@ // Regression test for crbug.com/788464. TEST_P(HistoryStateOperationsTest, ReplaceStateThenReload) { - if (web::GetWebClient()->IsSlimNavigationManagerEnabled()) { - // TODO(crbug.com/950263): Investigate culprit and reenable. - return; - } GURL url = web::test::HttpServer::MakeUrl( "http://ios/testing/data/http_server_files/" "onload_replacestate_reload.html");
diff --git a/ios/web/public/BUILD.gn b/ios/web/public/BUILD.gn index 1b894afe..065cf15 100644 --- a/ios/web/public/BUILD.gn +++ b/ios/web/public/BUILD.gn
@@ -43,8 +43,6 @@ "navigation_item_list.h", "navigation_item_list.mm", "navigation_manager.h", - "origin_util.h", - "origin_util.mm", "reload_type.h", "security_style.h", "serializable_user_data_manager.h",
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm index 5670754f..0f0325e 100644 --- a/ios/web/web_state/ui/crw_web_controller.mm +++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -4858,13 +4858,14 @@ } if (!IsWKInternalUrl(currentWKItemURL) && currentWKItemURL == webViewURL && - currentWKItemURL != context->GetUrl()) { + currentWKItemURL != context->GetUrl() && + item == self.navigationManagerImpl->GetLastCommittedItem()) { // WKWebView sometimes changes URL on the same navigation, likely due to - // location.replace() in onload handler that only changes page fragment. - // It's safe to update |item| and |context| URL because they are both - // associated to WKNavigation*, which is a stable ID for the navigation. - // See https://crbug.com/869540 for a real-world case. - DCHECK(item->GetURL().EqualsIgnoringRef(currentWKItemURL)); + // location.replace() or history.replaceState in onload handler that does + // not change the origin. It's safe to update |item| and |context| URL + // because they are both associated to WKNavigation*, which is a stable ID + // for the navigation. See https://crbug.com/869540 for a real-world case. + DCHECK_EQ(item->GetURL().GetOrigin(), currentWKItemURL.GetOrigin()); item->SetURL(currentWKItemURL); context->SetUrl(currentWKItemURL); }
diff --git a/ios/web_view/BUILD.gn b/ios/web_view/BUILD.gn index 0df6787f..3e47d85 100644 --- a/ios/web_view/BUILD.gn +++ b/ios/web_view/BUILD.gn
@@ -308,6 +308,7 @@ "//ios/components/io_thread", "//ios/net", "//ios/web", + "//ios/web/common", "//ios/web/public", "//ios/web/public/app", "//ios/web/public/global_state",
diff --git a/ios/web_view/internal/DEPS b/ios/web_view/internal/DEPS index 76ed62f..51ed0531 100644 --- a/ios/web_view/internal/DEPS +++ b/ios/web_view/internal/DEPS
@@ -41,6 +41,7 @@ "+google_apis", "+ios/components/io_thread", "+ios/net", + "+ios/web/common", "+ios/web/public", "+ios/web_view", "+net",
diff --git a/ios/web_view/internal/passwords/cwv_password_controller.mm b/ios/web_view/internal/passwords/cwv_password_controller.mm index ab5d5150..ee05bce 100644 --- a/ios/web_view/internal/passwords/cwv_password_controller.mm +++ b/ios/web_view/internal/passwords/cwv_password_controller.mm
@@ -16,7 +16,7 @@ #include "components/password_manager/ios/account_select_fill_data.h" #import "components/password_manager/ios/password_form_helper.h" #import "components/password_manager/ios/password_suggestion_helper.h" -#import "ios/web/public/origin_util.h" +#import "ios/web/common/origin_util.h" #include "ios/web/public/url_scheme_util.h" #include "ios/web/public/web_state/web_frame.h" #include "ios/web/public/web_state/web_frame_util.h"
diff --git a/jingle/BUILD.gn b/jingle/BUILD.gn index f08ce64e..cf3f11d 100644 --- a/jingle/BUILD.gn +++ b/jingle/BUILD.gn
@@ -5,6 +5,23 @@ import("//build/config/features.gni") import("//testing/test.gni") +source_set("webrtc_glue") { + sources = [ + "glue/thread_wrapper.cc", + "glue/thread_wrapper.h", + "glue/utils.cc", + "glue/utils.h", + ] + public_deps = [ + "//third_party/webrtc/rtc_base", + ] + deps = [ + "//base", + "//net", + "//third_party/webrtc/api:libjingle_peerconnection_api", + ] +} + static_library("jingle_glue") { sources = [ "glue/network_service_async_socket.cc", @@ -13,25 +30,16 @@ "glue/network_service_config.h", "glue/task_pump.cc", "glue/task_pump.h", - "glue/thread_wrapper.cc", - "glue/thread_wrapper.h", - "glue/utils.cc", - "glue/utils.h", ] public_deps = [ "//services/network/public/mojom", - "//third_party/webrtc_overrides", ] deps = [ - ":jingle_fake_socket", "//base", - "//base/third_party/dynamic_annotations", "//net", "//third_party/libjingle_xmpp:rtc_task_runner", ] - configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] - if (is_nacl) { sources -= [ "glue/network_service_async_socket.cc", @@ -43,7 +51,7 @@ # These files are separated into their own target to avoid a circular dependency # since services/network depends on this. -static_library("jingle_fake_socket") { +source_set("fake_ssl_socket") { sources = [ "glue/fake_ssl_client_socket.cc", "glue/fake_ssl_client_socket.h", @@ -189,15 +197,12 @@ configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] - public_deps = [ - "//third_party/libjingle_xmpp", - "//third_party/webrtc_overrides", - "//third_party/webrtc_overrides:init_webrtc", - ] deps = [ + ":fake_ssl_socket", ":jingle_glue", ":notifier", ":notifier_test_util", + ":webrtc_glue", "//base", "//base/test:test_support", "//mojo/core/embedder", @@ -210,5 +215,7 @@ "//testing/gmock", "//testing/gtest", "//third_party/libjingle_xmpp:rtc_task_runner", + "//third_party/webrtc_overrides", + "//third_party/webrtc_overrides:init_webrtc", ] }
diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn index 1c61e63..ebbd540d 100644 --- a/media/gpu/vaapi/BUILD.gn +++ b/media/gpu/vaapi/BUILD.gn
@@ -41,6 +41,8 @@ "vaapi_dmabuf_video_frame_mapper.h", "vaapi_h264_accelerator.cc", "vaapi_h264_accelerator.h", + "vaapi_jpeg_decode_accelerator_worker.cc", + "vaapi_jpeg_decode_accelerator_worker.h", "vaapi_jpeg_decoder.cc", "vaapi_jpeg_decoder.h", "vaapi_jpeg_encode_accelerator.cc", @@ -80,6 +82,7 @@ "//media", "//media/gpu:common", "//media/gpu:video_frame_mapper_common", + "//mojo/public/cpp/bindings", "//third_party/libyuv", "//ui/gfx/geometry", ]
diff --git a/media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.cc b/media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.cc new file mode 100644 index 0000000..b8a99d03 --- /dev/null +++ b/media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.cc
@@ -0,0 +1,107 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.h" + +#include <utility> + +#include <va/va.h> + +#include "base/bind.h" +#include "base/containers/span.h" +#include "base/location.h" +#include "base/logging.h" +#include "base/metrics/histogram_macros.h" +#include "base/sequenced_task_runner.h" +#include "base/task/post_task.h" +#include "base/trace_event/trace_event.h" +#include "media/gpu/macros.h" +#include "media/gpu/vaapi/vaapi_jpeg_decoder.h" +#include "media/gpu/vaapi/vaapi_utils.h" +#include "mojo/public/cpp/bindings/callback_helpers.h" +#include "ui/gfx/geometry/size.h" + +namespace media { + +namespace { + +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +enum class VAJDAWorkerDecoderFailure { + kVaapiError = 0, + kMaxValue = kVaapiError, +}; + +void ReportToVAJDAWorkerDecoderFailureUMA(VAJDAWorkerDecoderFailure failure) { + UMA_HISTOGRAM_ENUMERATION("Media.VAJDAWorker.DecoderFailure", failure); +} + +// Uses |decoder| to decode the JPEG corresponding to |encoded_data|. +// |decode_cb| is called when finished or when an error is encountered. We don't +// support decoding to scale, so |output_size| is only used for tracing. +void DecodeTask( + VaapiJpegDecoder* decoder, + std::vector<uint8_t> encoded_data, + const gfx::Size& output_size, + gpu::ImageDecodeAcceleratorWorker::CompletedDecodeCB decode_cb) { + TRACE_EVENT2("jpeg", "VaapiJpegDecodeAcceleratorWorker::DecodeTask", + "encoded_bytes", encoded_data.size(), "output_size", + output_size.ToString()); + gpu::ImageDecodeAcceleratorWorker::CompletedDecodeCB scoped_decode_callback = + mojo::WrapCallbackWithDefaultInvokeIfNotRun(std::move(decode_cb), + nullptr); + VaapiJpegDecodeStatus status; + std::unique_ptr<ScopedVAImage> scoped_image = decoder->DoDecode( + base::make_span<const uint8_t>(encoded_data.data(), encoded_data.size()), + VA_FOURCC_RGBX /* preferred_image_fourcc */, &status); + if (status != VaapiJpegDecodeStatus::kSuccess) { + VLOGF(1) << "Failed to decode image - status = " + << static_cast<uint32_t>(status); + return; + } + + // TODO(crbug.com/868400): output the decoded data. + DCHECK(scoped_image); + std::move(scoped_decode_callback).Run(nullptr); +} + +} // namespace + +VaapiJpegDecodeAcceleratorWorker::VaapiJpegDecodeAcceleratorWorker() + : decoder_(std::make_unique<VaapiJpegDecoder>()) { + if (!decoder_->Initialize( + base::BindRepeating(&ReportToVAJDAWorkerDecoderFailureUMA, + VAJDAWorkerDecoderFailure::kVaapiError))) { + return; + } + decoder_task_runner_ = base::CreateSequencedTaskRunnerWithTraits({}); + DCHECK(decoder_task_runner_); +} + +VaapiJpegDecodeAcceleratorWorker::~VaapiJpegDecodeAcceleratorWorker() { + if (decoder_task_runner_) + decoder_task_runner_->DeleteSoon(FROM_HERE, std::move(decoder_)); +} + +bool VaapiJpegDecodeAcceleratorWorker::IsValid() const { + // If |decoder_task_runner_| is nullptr, it means that the initialization of + // |decoder_| failed. + return !!decoder_task_runner_; +} + +void VaapiJpegDecodeAcceleratorWorker::Decode(std::vector<uint8_t> encoded_data, + const gfx::Size& output_size, + CompletedDecodeCB decode_cb) { + if (!IsValid()) { + NOTREACHED(); + return; + } + DCHECK(!decoder_task_runner_->RunsTasksInCurrentSequence()); + decoder_task_runner_->PostTask( + FROM_HERE, + base::BindOnce(&DecodeTask, decoder_.get(), std::move(encoded_data), + output_size, std::move(decode_cb))); +} + +} // namespace media
diff --git a/media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.h b/media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.h new file mode 100644 index 0000000..86e45fa64 --- /dev/null +++ b/media/gpu/vaapi/vaapi_jpeg_decode_accelerator_worker.h
@@ -0,0 +1,61 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MEDIA_GPU_VAAPI_VAAPI_JPEG_DECODE_ACCELERATOR_WORKER_H_ +#define MEDIA_GPU_VAAPI_VAAPI_JPEG_DECODE_ACCELERATOR_WORKER_H_ + +#include <stdint.h> + +#include <memory> +#include <vector> + +#include "base/macros.h" +#include "base/memory/scoped_refptr.h" +#include "gpu/ipc/service/image_decode_accelerator_worker.h" + +namespace base { +class SequencedTaskRunner; +} + +namespace gfx { +class Size; +} + +namespace media { + +class VaapiJpegDecoder; + +// This class uses the VAAPI to provide JPEG decode acceleration. The +// interaction with the VAAPI is done on |decoder_task_runner_|. Objects of this +// class can be created/destroyed on any thread, and the public interface of +// this class is thread-safe. +class VaapiJpegDecodeAcceleratorWorker + : public gpu::ImageDecodeAcceleratorWorker { + public: + VaapiJpegDecodeAcceleratorWorker(); + ~VaapiJpegDecodeAcceleratorWorker() override; + + // Returns true if the internal state was initialized correctly. If false, + // clients should not call Decode(). + bool IsValid() const; + + // gpu::ImageDecodeAcceleratorWorker implementation. + void Decode(std::vector<uint8_t> encoded_data, + const gfx::Size& output_size, + CompletedDecodeCB decode_cb) override; + + private: + // We delegate the decoding to |decoder_| which is constructed on the ctor and + // then used and destroyed on |decoder_task_runner_| (unless initialization + // failed, in which case it doesn't matter where it's destroyed since no tasks + // using |decoder_| should have been posted to |decoder_task_runner_|). + std::unique_ptr<VaapiJpegDecoder> decoder_; + scoped_refptr<base::SequencedTaskRunner> decoder_task_runner_; + + DISALLOW_COPY_AND_ASSIGN(VaapiJpegDecodeAcceleratorWorker); +}; + +} // namespace media + +#endif // MEDIA_GPU_VAAPI_VAAPI_JPEG_DECODE_ACCELERATOR_WORKER_H_
diff --git a/media/gpu/vaapi/vaapi_jpeg_decoder.h b/media/gpu/vaapi/vaapi_jpeg_decoder.h index 2b544f6e..c28662f 100644 --- a/media/gpu/vaapi/vaapi_jpeg_decoder.h +++ b/media/gpu/vaapi/vaapi_jpeg_decoder.h
@@ -25,7 +25,7 @@ class ScopedVAImage; class VaapiWrapper; -enum class VaapiJpegDecodeStatus { +enum class VaapiJpegDecodeStatus : uint32_t { kSuccess, kParseJpegFailed, kUnsupportedJpeg, @@ -49,6 +49,10 @@ // or 4:4:4, returns kInvalidVaRtFormat. unsigned int VaSurfaceFormatForJpeg(const JpegFrameHeader& frame_header); +// Encapsulates a VaapiWrapper for the purpose of performing +// hardware-accelerated JPEG decodes. Objects of this class are not thread-safe, +// but they are also not thread-affine, i.e., the caller is free to call the +// methods on any thread, but calls must be synchronized externally. class VaapiJpegDecoder final { public: VaapiJpegDecoder();
diff --git a/mojo/public/cpp/bindings/BUILD.gn b/mojo/public/cpp/bindings/BUILD.gn index f79360d0..a01d226 100644 --- a/mojo/public/cpp/bindings/BUILD.gn +++ b/mojo/public/cpp/bindings/BUILD.gn
@@ -187,6 +187,7 @@ "sync_handle_watcher.h", "thread_safe_interface_ptr.h", "unique_ptr_impl_ref_traits.h", + "unique_receiver_set.h", ] if (enable_random_mojo_delays) {
diff --git a/mojo/public/cpp/bindings/interface_ptr.h b/mojo/public/cpp/bindings/interface_ptr.h index 0d7d6ff..f0610da3 100644 --- a/mojo/public/cpp/bindings/interface_ptr.h +++ b/mojo/public/cpp/bindings/interface_ptr.h
@@ -107,7 +107,7 @@ // result will be returned as the input of |callback|. The version number of // this interface pointer will also be updated. void QueryVersion(const base::Callback<void(uint32_t)>& callback) { - internal_state_.QueryVersion(callback); + internal_state_.QueryVersionDeprecated(callback); } // If the remote side doesn't support the specified version, it will close its
diff --git a/mojo/public/cpp/bindings/lib/interface_ptr_state.cc b/mojo/public/cpp/bindings/lib/interface_ptr_state.cc index 9ac8911c..7d49fa3 100644 --- a/mojo/public/cpp/bindings/lib/interface_ptr_state.cc +++ b/mojo/public/cpp/bindings/lib/interface_ptr_state.cc
@@ -18,12 +18,12 @@ } void InterfacePtrStateBase::QueryVersion( - const base::Callback<void(uint32_t)>& callback) { + base::OnceCallback<void(uint32_t)> callback) { // It is safe to capture |this| because the callback won't be run after this // object goes away. endpoint_client_->QueryVersion( - base::Bind(&InterfacePtrStateBase::OnQueryVersion, base::Unretained(this), - callback)); + base::BindRepeating(&InterfacePtrStateBase::OnQueryVersion, + base::Unretained(this), base::Passed(&callback))); } void InterfacePtrStateBase::RequireVersion(uint32_t version) { @@ -60,10 +60,10 @@ } void InterfacePtrStateBase::OnQueryVersion( - const base::Callback<void(uint32_t)>& callback, + base::OnceCallback<void(uint32_t)> callback, uint32_t version) { version_ = version; - callback.Run(version); + std::move(callback).Run(version); } bool InterfacePtrStateBase::InitializeEndpointClient(
diff --git a/mojo/public/cpp/bindings/lib/interface_ptr_state.h b/mojo/public/cpp/bindings/lib/interface_ptr_state.h index 03000df..fa1e469 100644 --- a/mojo/public/cpp/bindings/lib/interface_ptr_state.h +++ b/mojo/public/cpp/bindings/lib/interface_ptr_state.h
@@ -72,7 +72,7 @@ } MultiplexRouter* router() const { return router_.get(); } - void QueryVersion(const base::Callback<void(uint32_t)>& callback); + void QueryVersion(base::OnceCallback<void(uint32_t)> callback); void RequireVersion(uint32_t version); void Swap(InterfacePtrStateBase* other); void Bind(ScopedMessagePipeHandle handle, @@ -91,7 +91,7 @@ const char* interface_name); private: - void OnQueryVersion(const base::Callback<void(uint32_t)>& callback, + void OnQueryVersion(base::OnceCallback<void(uint32_t)> callback, uint32_t version); scoped_refptr<MultiplexRouter> router_; @@ -131,9 +131,13 @@ #endif } - void QueryVersion(const base::Callback<void(uint32_t)>& callback) { + void QueryVersionDeprecated(const base::Callback<void(uint32_t)>& callback) { + QueryVersion(base::BindOnce(callback)); + } + + void QueryVersion(base::OnceCallback<void(uint32_t)> callback) { ConfigureProxyIfNecessary(); - InterfacePtrStateBase::QueryVersion(callback); + InterfacePtrStateBase::QueryVersion(std::move(callback)); } void RequireVersion(uint32_t version) {
diff --git a/mojo/public/cpp/bindings/pending_receiver.h b/mojo/public/cpp/bindings/pending_receiver.h index f2f4c49..9d02333 100644 --- a/mojo/public/cpp/bindings/pending_receiver.h +++ b/mojo/public/cpp/bindings/pending_receiver.h
@@ -73,6 +73,12 @@ // effectively be dropped. void reset() { pipe_.reset(); } + // Like above but provides a reason for the disconnection. + void ResetWithReason(uint32_t reason, const std::string& description) { + InterfaceRequest<Interface>(PassPipe()) + .ResetWithReason(reason, description); + } + // Passes ownership of this PendingReceiver's message pipe handle. After this // call, the PendingReceiver is no longer in a valid state and can no longer // be used to bind a Receiver.
diff --git a/mojo/public/cpp/bindings/pending_remote.h b/mojo/public/cpp/bindings/pending_remote.h index bdeee63..4141633 100644 --- a/mojo/public/cpp/bindings/pending_remote.h +++ b/mojo/public/cpp/bindings/pending_remote.h
@@ -121,6 +121,17 @@ } }; +// Fuses a PendingReceiver<T> endpoint with a PendingRemote<T> endpoint. The +// endpoints must belong to two different message pipes, and this effectively +// fuses two pipes into a single pipe. Returns |true| on success or |false| on +// failure. +template <typename Interface> +bool FusePipes(PendingReceiver<Interface> receiver, + PendingRemote<Interface> remote) { + MojoResult result = FuseMessagePipes(receiver.PassPipe(), remote.PassPipe()); + return result == MOJO_RESULT_OK; +} + } // namespace mojo #endif // MOJO_PUBLIC_CPP_BINDINGS_PENDING_REMOTE_H_
diff --git a/mojo/public/cpp/bindings/receiver.h b/mojo/public/cpp/bindings/receiver.h index 0223525..d30c5d15 100644 --- a/mojo/public/cpp/bindings/receiver.h +++ b/mojo/public/cpp/bindings/receiver.h
@@ -107,6 +107,12 @@ // which were scheduled prior to unbinding are effectively cancelled. void reset() { internal_state_.Close(); } + // Similar to the method above, but also specifies a disconnect reason. + void ResetWithReason(uint32_t custom_reason_code, + const std::string& description) { + internal_state_.CloseWithReason(custom_reason_code, description); + } + // Binds this Receiver, connecting it to a new PendingRemote which is // returned for transmission elsewhere (typically to a Remote who will consume // it to start making calls). @@ -182,6 +188,49 @@ internal_state_.AddFilter(std::move(filter)); } + // Pause and resume message dispatch. + void Pause() { + CHECK(!internal_state_.HasAssociatedInterfaces()); + internal_state_.PauseIncomingMethodCallProcessing(); + } + + void Resume() { internal_state_.ResumeIncomingMethodCallProcessing(); } + + // Blocks the calling thread until a new message arrives and is dispatched + // to the bound implementation. + bool WaitForIncomingCall() { + return internal_state_.WaitForIncomingMethodCall(MOJO_DEADLINE_INDEFINITE); + } + + // Flushes any replies previously sent by the Receiver, only unblocking once + // acknowledgement from the Remote is received. + void FlushForTesting() { internal_state_.FlushForTesting(); } + + // Reports the currently dispatching message as bad and resets this receiver. + // Note that this is only legal to call from within the stack frame of a + // message dispatch. If you need to do asynchronous work before determining + // the legitimacy of a message, use GetBadMessageCallback() and retain its + // result until ready to invoke or discard it. + void ReportBadMessage(const std::string& error) { + GetBadMessageCallback().Run(error); + } + + // Acquires a callback which may be run to report the currently dispatching + // message as bad and reset this receiver. Note that this is only legal to + // call from directly within stack frame of a message dispatch, but the + // returned callback may be called exactly once any time thereafter to report + // the message as bad. |GetBadMessageCallback()| may only be called once per + // message, and the returned callback must be run on the same sequence to + // which this Receiver is bound. + ReportBadMessageCallback GetBadMessageCallback() { + return internal_state_.GetBadMessageCallback(); + } + + // DO NOT USE. Exposed only for internal use and for testing. + internal::BindingState<Interface, ImplRefTraits>* internal_state() { + return &internal_state_; + } + private: internal::BindingState<Interface, ImplRefTraits> internal_state_;
diff --git a/mojo/public/cpp/bindings/receiver_set.h b/mojo/public/cpp/bindings/receiver_set.h index ca7db3c..5019554 100644 --- a/mojo/public/cpp/bindings/receiver_set.h +++ b/mojo/public/cpp/bindings/receiver_set.h
@@ -103,6 +103,14 @@ // ContextType is not void. void set_disconnect_handler(base::RepeatingClosure handler) { disconnect_handler_ = std::move(handler); + disconnect_with_reason_handler_.Reset(); + } + + // Like above but also provides the reason given for disconnection, if any. + void set_disconnect_with_reason_handler( + RepeatingConnectionErrorWithReasonCallback handler) { + disconnect_with_reason_handler_ = std::move(handler); + disconnect_handler_.Reset(); } // Adds a new receiver to the set, binding |receiver| to |impl| with no @@ -216,7 +224,7 @@ const std::string& error) { std::move(error_callback).Run(error); if (receiver_set) - receiver_set->RemoveBinding(receiver_id); + receiver_set->Remove(receiver_id); }, mojo::GetBadMessageCallback(), weak_ptr_factory_.GetWeakPtr(), current_receiver()); @@ -240,7 +248,7 @@ receiver_id_(receiver_id), context_(std::move(context)) { receiver_.AddFilter(std::make_unique<DispatchFilter>(this)); - receiver_.set_disconnect_handler( + receiver_.set_disconnect_with_reason_handler( base::BindOnce(&Entry::OnDisconnect, base::Unretained(this))); } @@ -266,9 +274,11 @@ receiver_set_->SetDispatchContext(&context_, receiver_id_); } - void OnDisconnect() { + void OnDisconnect(uint32_t custom_reason_code, + const std::string& description) { WillDispatch(); - receiver_set_->OnDisconnect(receiver_id_); + receiver_set_->OnDisconnect(receiver_id_, custom_reason_code, + description); } ReceiverType receiver_; @@ -297,7 +307,9 @@ return id; } - void OnDisconnect(ReceiverId id) { + void OnDisconnect(ReceiverId id, + uint32_t custom_reason_code, + const std::string& description) { auto it = receivers_.find(id); DCHECK(it != receivers_.end()); @@ -307,9 +319,12 @@ if (disconnect_handler_) disconnect_handler_.Run(); + else if (disconnect_with_reason_handler_) + disconnect_with_reason_handler_.Run(custom_reason_code, description); } base::RepeatingClosure disconnect_handler_; + RepeatingConnectionErrorWithReasonCallback disconnect_with_reason_handler_; ReceiverId next_receiver_id_ = 0; std::map<ReceiverId, std::unique_ptr<Entry>> receivers_; const Context* current_context_ = nullptr;
diff --git a/mojo/public/cpp/bindings/remote.h b/mojo/public/cpp/bindings/remote.h index 32430637..f709d03 100644 --- a/mojo/public/cpp/bindings/remote.h +++ b/mojo/public/cpp/bindings/remote.h
@@ -143,6 +143,14 @@ internal_state_.set_connection_error_handler(std::move(handler)); } + // Like above but also receives extra user-defined metadata about why the + // receiving endpoint was closed. + void set_disconnect_with_reason_handler( + ConnectionErrorWithReasonCallback handler) { + internal_state_.set_connection_error_with_reason_handler( + std::move(handler)); + } + // Resets this Remote to an unbound state. To reset the Remote and recover an // PendingRemote that can be bound again later, use |Unbind()| instead. void reset() { @@ -157,6 +165,11 @@ reset(); } + // Returns the version of Interface used by this Remote. Defaults to 0 but can + // be adjusted either at binding time, or by invoking either |QueryVersion()| + // or |RequireVersion()|. + uint32_t version() const { return internal_state_.version(); } + // Binds this Remote, connecting it to a new PendingReceiver which is // returned for transmission to some Receiver which can bind it. The Remote // will schedule any response callbacks or disconnection notifications on the @@ -231,12 +244,32 @@ return PendingRemote<Interface>(info.PassHandle(), info.version()); } + // Queries the max version that the receiving endpoint supports. Once a + // response is received, |callback| will be invoked with the version number + // and the version number of this Remote object will also be updated. + void QueryVersion(base::OnceCallback<void(uint32_t)> callback) { + internal_state_.QueryVersion(std::move(callback)); + } + + // Requires the receiving endpoint to support at least the specified + // |version|. If it does not, it will close its end of the connection + // immediately. + void RequireVersion(uint32_t version) { + internal_state_.RequireVersion(version); + } + // Sends a no-op message on the underlying message pipe and runs the current // message loop until its response is received. This can be used in tests to // verify that no message was sent on a message pipe in response to some // stimulus. void FlushForTesting() { internal_state_.FlushForTesting(); } + // Same as |FlushForTesting()| but will call |callback| when the flush is + // complete. + void FlushAsyncForTesting(base::OnceClosure callback) { + internal_state_.FlushAsyncForTesting(std::move(callback)); + } + // DO NOT USE. Exposed only for internal use and for testing. internal::InterfacePtrState<Interface>* internal_state() { return &internal_state_;
diff --git a/mojo/public/cpp/bindings/shared_remote.h b/mojo/public/cpp/bindings/shared_remote.h index e34481f..104192eb 100644 --- a/mojo/public/cpp/bindings/shared_remote.h +++ b/mojo/public/cpp/bindings/shared_remote.h
@@ -190,6 +190,11 @@ Interface* operator->() const { return get(); } Interface& operator*() const { return *get(); } + // Clears this SharedRemote. Note that this does *not* necessarily close the + // remote's endpoint as other SharedRemote instances may reference the same + // underlying endpoint. + void reset() { remote_.reset(); } + private: scoped_refptr<SharedRemoteBase<Remote<Interface>>> remote_; };
diff --git a/mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc b/mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc index 5d50f62..1f401c0 100644 --- a/mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc +++ b/mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc
@@ -11,12 +11,14 @@ #include "base/sequenced_task_runner.h" #include "base/synchronization/lock.h" #include "base/synchronization/waitable_event.h" +#include "base/test/bind_test_util.h" #include "base/threading/platform_thread.h" -#include "mojo/public/cpp/bindings/associated_binding.h" -#include "mojo/public/cpp/bindings/associated_interface_ptr.h" -#include "mojo/public/cpp/bindings/associated_interface_ptr_info.h" -#include "mojo/public/cpp/bindings/associated_interface_request.h" -#include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/associated_receiver.h" +#include "mojo/public/cpp/bindings/associated_remote.h" +#include "mojo/public/cpp/bindings/pending_associated_receiver.h" +#include "mojo/public/cpp/bindings/pending_associated_remote.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -118,14 +120,14 @@ DISALLOW_COPY_AND_ASSIGN(TestTaskRunner); }; -template <typename BindingType, typename RequestType> +template <typename ReceiverType, typename PendingReceiverType> class IntegerSenderImpl : public IntegerSender { public: - IntegerSenderImpl(RequestType request, + IntegerSenderImpl(PendingReceiverType receiver, scoped_refptr<base::SequencedTaskRunner> runner) - : binding_(this, std::move(request), std::move(runner)) {} + : receiver_(this, std::move(receiver), std::move(runner)) {} - ~IntegerSenderImpl() override {} + ~IntegerSenderImpl() override = default; using EchoHandler = base::RepeatingCallback<void(int32_t, EchoCallback)>; @@ -139,256 +141,234 @@ } void Send(int32_t value) override { NOTREACHED(); } - BindingType* binding() { return &binding_; } + ReceiverType* receiver() { return &receiver_; } private: - BindingType binding_; + ReceiverType receiver_; EchoHandler echo_handler_; }; class IntegerSenderConnectionImpl : public IntegerSenderConnection { public: - using SenderType = IntegerSenderImpl<AssociatedBinding<IntegerSender>, - IntegerSenderAssociatedRequest>; + using SenderType = + IntegerSenderImpl<AssociatedReceiver<IntegerSender>, + PendingAssociatedReceiver<IntegerSender>>; explicit IntegerSenderConnectionImpl( - IntegerSenderConnectionRequest request, + PendingReceiver<IntegerSenderConnection> receiver, scoped_refptr<base::SequencedTaskRunner> runner, scoped_refptr<base::SequencedTaskRunner> sender_runner) - : binding_(this, std::move(request), std::move(runner)), + : receiver_(this, std::move(receiver), std::move(runner)), sender_runner_(std::move(sender_runner)) {} - ~IntegerSenderConnectionImpl() override {} + ~IntegerSenderConnectionImpl() override = default; - void set_get_sender_notification(const base::Closure& notification) { - get_sender_notification_ = notification; + void set_get_sender_notification(base::OnceClosure notification) { + get_sender_notification_ = std::move(notification); } - void GetSender(IntegerSenderAssociatedRequest sender) override { - sender_impl_.reset(new SenderType(std::move(sender), sender_runner_)); - get_sender_notification_.Run(); + void GetSender(IntegerSenderAssociatedRequest request) override { + sender_impl_ = + std::make_unique<SenderType>(std::move(request), sender_runner_); + std::move(get_sender_notification_).Run(); } void AsyncGetSender(AsyncGetSenderCallback callback) override { NOTREACHED(); } - Binding<IntegerSenderConnection>* binding() { return &binding_; } + Receiver<IntegerSenderConnection>* receiver() { return &receiver_; } SenderType* sender_impl() { return sender_impl_.get(); } private: - Binding<IntegerSenderConnection> binding_; + Receiver<IntegerSenderConnection> receiver_; std::unique_ptr<SenderType> sender_impl_; scoped_refptr<base::SequencedTaskRunner> sender_runner_; - base::Closure get_sender_notification_; + base::OnceClosure get_sender_notification_; }; class BindTaskRunnerTest : public testing::Test { protected: void SetUp() override { - binding_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); - ptr_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); + receiver_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); + remote_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); - auto request = MakeRequest(&ptr_, ptr_task_runner_); - impl_.reset(new ImplType(std::move(request), binding_task_runner_)); + auto receiver = remote_.BindNewPipeAndPassReceiver(remote_task_runner_); + impl_.reset(new ImplType(std::move(receiver), receiver_task_runner_)); } base::MessageLoop loop_; - scoped_refptr<TestTaskRunner> binding_task_runner_; - scoped_refptr<TestTaskRunner> ptr_task_runner_; + scoped_refptr<TestTaskRunner> receiver_task_runner_; + scoped_refptr<TestTaskRunner> remote_task_runner_; - IntegerSenderPtr ptr_; - using ImplType = - IntegerSenderImpl<Binding<IntegerSender>, IntegerSenderRequest>; + Remote<IntegerSender> remote_; + using ImplType = IntegerSenderImpl<Receiver<IntegerSender>, + PendingReceiver<IntegerSender>>; std::unique_ptr<ImplType> impl_; }; class AssociatedBindTaskRunnerTest : public testing::Test { protected: void SetUp() override { - connection_binding_task_runner_ = + connection_receiver_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); - connection_ptr_task_runner_ = + connection_remote_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); - sender_binding_task_runner_ = + sender_receiver_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); - sender_ptr_task_runner_ = scoped_refptr<TestTaskRunner>(new TestTaskRunner); + sender_remote_task_runner_ = + scoped_refptr<TestTaskRunner>(new TestTaskRunner); - auto connection_request = - MakeRequest(&connection_ptr_, connection_ptr_task_runner_); + auto connection_receiver = connection_remote_.BindNewPipeAndPassReceiver( + connection_remote_task_runner_); connection_impl_.reset(new IntegerSenderConnectionImpl( - std::move(connection_request), connection_binding_task_runner_, - sender_binding_task_runner_)); + std::move(connection_receiver), connection_receiver_task_runner_, + sender_receiver_task_runner_)); - connection_impl_->set_get_sender_notification( - base::Bind(&AssociatedBindTaskRunnerTest::QuitTaskRunner, - base::Unretained(this))); + connection_impl_->set_get_sender_notification(base::BindOnce( + &AssociatedBindTaskRunnerTest::QuitTaskRunner, base::Unretained(this))); - connection_ptr_->GetSender( - MakeRequest(&sender_ptr_, sender_ptr_task_runner_)); - connection_binding_task_runner_->Run(); + connection_remote_->GetSender(sender_remote_.BindNewEndpointAndPassReceiver( + sender_remote_task_runner_)); + connection_receiver_task_runner_->Run(); } - void QuitTaskRunner() { - connection_binding_task_runner_->Quit(); - } + void QuitTaskRunner() { connection_receiver_task_runner_->Quit(); } base::MessageLoop loop_; - scoped_refptr<TestTaskRunner> connection_binding_task_runner_; - scoped_refptr<TestTaskRunner> connection_ptr_task_runner_; - scoped_refptr<TestTaskRunner> sender_binding_task_runner_; - scoped_refptr<TestTaskRunner> sender_ptr_task_runner_; + scoped_refptr<TestTaskRunner> connection_receiver_task_runner_; + scoped_refptr<TestTaskRunner> connection_remote_task_runner_; + scoped_refptr<TestTaskRunner> sender_receiver_task_runner_; + scoped_refptr<TestTaskRunner> sender_remote_task_runner_; - IntegerSenderConnectionPtr connection_ptr_; + Remote<IntegerSenderConnection> connection_remote_; std::unique_ptr<IntegerSenderConnectionImpl> connection_impl_; - IntegerSenderAssociatedPtr sender_ptr_; + AssociatedRemote<IntegerSender> sender_remote_; }; -void DoSetFlagAndQuitTaskRunner(bool* flag, - scoped_refptr<TestTaskRunner> task_runner) { - *flag = true; - if (task_runner) - task_runner->Quit(); -} - -void DoExpectValueSetFlagAndQuitTaskRunner( - int32_t expected_value, - bool* flag, - scoped_refptr<TestTaskRunner> task_runner, - int32_t value) { - EXPECT_EQ(expected_value, value); - DoSetFlagAndQuitTaskRunner(flag, task_runner); -} - -void DoExpectValueSetFlagForwardValueAndQuitTaskRunner( - int32_t expected_value, - bool* flag, - scoped_refptr<TestTaskRunner> task_runner, - int32_t value, - IntegerSender::EchoCallback callback) { - EXPECT_EQ(expected_value, value); - *flag = true; - std::move(callback).Run(value); - task_runner->Quit(); -} - -base::Closure SetFlagAndQuitTaskRunner( - bool* flag, - scoped_refptr<TestTaskRunner> task_runner) { - return base::Bind(&DoSetFlagAndQuitTaskRunner, flag, task_runner); -} - -base::Callback<void(int32_t)> ExpectValueSetFlagAndQuitTaskRunner( - int32_t expected_value, - bool* flag, - scoped_refptr<TestTaskRunner> task_runner) { - return base::Bind(&DoExpectValueSetFlagAndQuitTaskRunner, expected_value, - flag, task_runner); -} - TEST_F(BindTaskRunnerTest, MethodCall) { bool echo_called = false; - impl_->set_echo_handler( - base::Bind(&DoExpectValueSetFlagForwardValueAndQuitTaskRunner, - 1024, &echo_called, binding_task_runner_)); + impl_->set_echo_handler(base::BindLambdaForTesting( + [&](int32_t value, IntegerSender::EchoCallback callback) { + EXPECT_EQ(1024, value); + echo_called = true; + std::move(callback).Run(value); + receiver_task_runner_->Quit(); + })); + bool echo_replied = false; - ptr_->Echo(1024, ExpectValueSetFlagAndQuitTaskRunner(1024, &echo_replied, - ptr_task_runner_)); - binding_task_runner_->Run(); + remote_->Echo(1024, base::BindLambdaForTesting([&](int32_t value) { + EXPECT_EQ(1024, value); + echo_replied = true; + remote_task_runner_->Quit(); + })); + receiver_task_runner_->Run(); EXPECT_TRUE(echo_called); - ptr_task_runner_->Run(); + remote_task_runner_->Run(); EXPECT_TRUE(echo_replied); } -TEST_F(BindTaskRunnerTest, BindingConnectionError) { - bool connection_error_called = false; - impl_->binding()->set_connection_error_handler( - SetFlagAndQuitTaskRunner(&connection_error_called, binding_task_runner_)); - ptr_.reset(); - binding_task_runner_->Run(); - EXPECT_TRUE(connection_error_called); +TEST_F(BindTaskRunnerTest, ReceiverDisconnectHandler) { + bool disconnected = false; + impl_->receiver()->set_disconnect_handler(base::BindLambdaForTesting([&] { + disconnected = true; + receiver_task_runner_->Quit(); + })); + remote_.reset(); + receiver_task_runner_->Run(); + EXPECT_TRUE(disconnected); } -TEST_F(BindTaskRunnerTest, PtrConnectionError) { - bool connection_error_called = false; - ptr_.set_connection_error_handler( - SetFlagAndQuitTaskRunner(&connection_error_called, ptr_task_runner_)); - impl_->binding()->Close(); - ptr_task_runner_->Run(); - EXPECT_TRUE(connection_error_called); -} - -void ExpectValueSetFlagAndForward(int32_t expected_value, - bool* flag, - int32_t value, - IntegerSender::EchoCallback callback) { - EXPECT_EQ(expected_value, value); - *flag = true; - std::move(callback).Run(value); +TEST_F(BindTaskRunnerTest, RemoteDisconnectHandler) { + bool disconnected = false; + remote_.set_disconnect_handler(base::BindLambdaForTesting([&] { + disconnected = true; + remote_task_runner_->Quit(); + })); + impl_->receiver()->reset(); + remote_task_runner_->Run(); + EXPECT_TRUE(disconnected); } TEST_F(AssociatedBindTaskRunnerTest, MethodCall) { bool echo_called = false; - connection_impl_->sender_impl()->set_echo_handler( - base::Bind(&ExpectValueSetFlagAndForward, 1024, &echo_called)); + connection_impl_->sender_impl()->set_echo_handler(base::BindLambdaForTesting( + [&](int32_t value, IntegerSender::EchoCallback callback) { + EXPECT_EQ(1024, value); + echo_called = true; + std::move(callback).Run(value); + })); bool echo_replied = false; - sender_ptr_->Echo( - 1024, ExpectValueSetFlagAndQuitTaskRunner(1024, &echo_replied, nullptr)); + sender_remote_->Echo(1024, base::BindLambdaForTesting([&](int32_t value) { + EXPECT_EQ(1024, value); + echo_replied = true; + })); // The Echo request first arrives at the master endpoint's task runner, and // then is forwarded to the associated endpoint's task runner. - connection_binding_task_runner_->RunOneTask(); - sender_binding_task_runner_->RunOneTask(); + connection_receiver_task_runner_->RunOneTask(); + sender_receiver_task_runner_->RunOneTask(); EXPECT_TRUE(echo_called); // Similarly, the Echo response arrives at the master endpoint's task runner // and then is forwarded to the associated endpoint's task runner. - connection_ptr_task_runner_->RunOneTask(); - sender_ptr_task_runner_->RunOneTask(); + connection_remote_task_runner_->RunOneTask(); + sender_remote_task_runner_->RunOneTask(); EXPECT_TRUE(echo_replied); } -TEST_F(AssociatedBindTaskRunnerTest, BindingConnectionError) { - bool sender_impl_error = false; - connection_impl_->sender_impl()->binding()->set_connection_error_handler( - SetFlagAndQuitTaskRunner(&sender_impl_error, - sender_binding_task_runner_)); - bool connection_impl_error = false; - connection_impl_->binding()->set_connection_error_handler( - SetFlagAndQuitTaskRunner(&connection_impl_error, - connection_binding_task_runner_)); - bool sender_ptr_error = false; - sender_ptr_.set_connection_error_handler( - SetFlagAndQuitTaskRunner(&sender_ptr_error, sender_ptr_task_runner_)); - connection_ptr_.reset(); - sender_ptr_task_runner_->Run(); - EXPECT_TRUE(sender_ptr_error); - connection_binding_task_runner_->Run(); - EXPECT_TRUE(connection_impl_error); - sender_binding_task_runner_->Run(); - EXPECT_TRUE(sender_impl_error); +TEST_F(AssociatedBindTaskRunnerTest, ReceiverDisconnectHandler) { + bool sender_impl_disconnected = false; + connection_impl_->sender_impl()->receiver()->set_disconnect_handler( + base::BindLambdaForTesting([&] { + sender_impl_disconnected = true; + sender_receiver_task_runner_->Quit(); + })); + bool connection_impl_disconnected = false; + connection_impl_->receiver()->set_disconnect_handler( + base::BindLambdaForTesting([&] { + connection_impl_disconnected = true; + connection_receiver_task_runner_->Quit(); + })); + bool sender_remote_disconnected = false; + sender_remote_.set_disconnect_handler(base::BindLambdaForTesting([&] { + sender_remote_disconnected = true; + sender_remote_task_runner_->Quit(); + })); + connection_remote_.reset(); + sender_remote_task_runner_->Run(); + EXPECT_TRUE(sender_remote_disconnected); + connection_receiver_task_runner_->Run(); + EXPECT_TRUE(connection_impl_disconnected); + sender_receiver_task_runner_->Run(); + EXPECT_TRUE(sender_impl_disconnected); } -TEST_F(AssociatedBindTaskRunnerTest, PtrConnectionError) { - bool sender_impl_error = false; - connection_impl_->sender_impl()->binding()->set_connection_error_handler( - SetFlagAndQuitTaskRunner(&sender_impl_error, - sender_binding_task_runner_)); - bool connection_ptr_error = false; - connection_ptr_.set_connection_error_handler( - SetFlagAndQuitTaskRunner(&connection_ptr_error, - connection_ptr_task_runner_)); - bool sender_ptr_error = false; - sender_ptr_.set_connection_error_handler( - SetFlagAndQuitTaskRunner(&sender_ptr_error, sender_ptr_task_runner_)); - connection_impl_->binding()->Close(); - sender_binding_task_runner_->Run(); - EXPECT_TRUE(sender_impl_error); - connection_ptr_task_runner_->Run(); - EXPECT_TRUE(connection_ptr_error); - sender_ptr_task_runner_->Run(); - EXPECT_TRUE(sender_ptr_error); +TEST_F(AssociatedBindTaskRunnerTest, RemoteDisconnectHandler) { + bool sender_impl_disconnected = false; + connection_impl_->sender_impl()->receiver()->set_disconnect_handler( + base::BindLambdaForTesting([&] { + sender_impl_disconnected = true; + sender_receiver_task_runner_->Quit(); + })); + bool connection_remote_disconnected = false; + connection_remote_.set_disconnect_handler(base::BindLambdaForTesting([&] { + connection_remote_disconnected = true; + connection_remote_task_runner_->Quit(); + })); + bool sender_remote_disconnected = false; + sender_remote_.set_disconnect_handler(base::BindLambdaForTesting([&] { + sender_remote_disconnected = true; + sender_remote_task_runner_->Quit(); + })); + connection_impl_->receiver()->reset(); + sender_receiver_task_runner_->Run(); + EXPECT_TRUE(sender_impl_disconnected); + connection_remote_task_runner_->Run(); + EXPECT_TRUE(connection_remote_disconnected); + sender_remote_task_runner_->Run(); + EXPECT_TRUE(sender_remote_disconnected); } } // namespace
diff --git a/mojo/public/cpp/bindings/tests/bindings_perftest.cc b/mojo/public/cpp/bindings/tests/bindings_perftest.cc index fb79f87..c5b5047 100644 --- a/mojo/public/cpp/bindings/tests/bindings_perftest.cc +++ b/mojo/public/cpp/bindings/tests/bindings_perftest.cc
@@ -10,10 +10,11 @@ #include "base/run_loop.h" #include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" -#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/interface_endpoint_client.h" #include "mojo/public/cpp/bindings/lib/multiplex_router.h" #include "mojo/public/cpp/bindings/message.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/test_support/test_support.h" #include "mojo/public/cpp/test_support/test_utils.h" #include "mojo/public/interfaces/bindings/tests/ping_service.mojom.h" @@ -32,30 +33,45 @@ class PingServiceImpl : public test::PingService { public: - PingServiceImpl() {} - ~PingServiceImpl() override {} + PingServiceImpl() = default; + ~PingServiceImpl() override = default; // |PingService| methods: - void Ping(PingCallback callback) override; + void Ping(PingCallback callback) override { std::move(callback).Run(); } private: DISALLOW_COPY_AND_ASSIGN(PingServiceImpl); }; -void PingServiceImpl::Ping(PingCallback callback) { - std::move(callback).Run(); -} - class PingPongTest { public: - explicit PingPongTest(test::PingServicePtr service); + explicit PingPongTest(PendingRemote<test::PingService> remote) + : remote_(std::move(remote)) {} - void Run(unsigned int iterations); + void Run(unsigned int iterations) { + iterations_to_run_ = iterations; + current_iterations_ = 0; + + base::RunLoop run_loop; + quit_closure_ = run_loop.QuitClosure(); + remote_->Ping( + base::BindOnce(&PingPongTest::OnPingDone, base::Unretained(this))); + run_loop.Run(); + } private: - void OnPingDone(); + void OnPingDone() { + current_iterations_++; + if (current_iterations_ >= iterations_to_run_) { + quit_closure_.Run(); + return; + } - test::PingServicePtr service_; + remote_->Ping( + base::BindOnce(&PingPongTest::OnPingDone, base::Unretained(this))); + } + + Remote<test::PingService> remote_; unsigned int iterations_to_run_; unsigned int current_iterations_; @@ -64,50 +80,28 @@ DISALLOW_COPY_AND_ASSIGN(PingPongTest); }; -PingPongTest::PingPongTest(test::PingServicePtr service) - : service_(std::move(service)) {} - -void PingPongTest::Run(unsigned int iterations) { - iterations_to_run_ = iterations; - current_iterations_ = 0; - - base::RunLoop run_loop; - quit_closure_ = run_loop.QuitClosure(); - service_->Ping(base::Bind(&PingPongTest::OnPingDone, base::Unretained(this))); - run_loop.Run(); -} - -void PingPongTest::OnPingDone() { - current_iterations_++; - if (current_iterations_ >= iterations_to_run_) { - quit_closure_.Run(); - return; - } - - service_->Ping(base::Bind(&PingPongTest::OnPingDone, base::Unretained(this))); -} - struct BoundPingService { - BoundPingService() : binding(&impl) { binding.Bind(MakeRequest(&service)); } + BoundPingService() : receiver(&impl, remote.BindNewPipeAndPassReceiver()) {} PingServiceImpl impl; - test::PingServicePtr service; - Binding<test::PingService> binding; + Remote<test::PingService> remote; + Receiver<test::PingService> receiver; }; class MojoBindingsPerftest : public testing::Test { public: - MojoBindingsPerftest() {} + MojoBindingsPerftest() = default; protected: base::MessageLoop loop_; }; TEST_F(MojoBindingsPerftest, InProcessPingPong) { - test::PingServicePtr service; + PendingRemote<test::PingService> remote; PingServiceImpl impl; - Binding<test::PingService> binding(&impl, MakeRequest(&service)); - PingPongTest test(std::move(service)); + Receiver<test::PingService> receiver(&impl, + remote.InitWithNewPipeAndPassReceiver()); + PingPongTest test(std::move(remote)); { const unsigned int kIterations = 100000;
diff --git a/mojo/public/cpp/bindings/tests/data_view_unittest.cc b/mojo/public/cpp/bindings/tests/data_view_unittest.cc index 3d7f50b..97c0353 100644 --- a/mojo/public/cpp/bindings/tests/data_view_unittest.cc +++ b/mojo/public/cpp/bindings/tests/data_view_unittest.cc
@@ -8,9 +8,11 @@ #include <vector> #include "base/message_loop/message_loop.h" -#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" #include "mojo/public/cpp/bindings/lib/serialization.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/interfaces/bindings/tests/test_data_view.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -43,8 +45,8 @@ class TestInterfaceImpl : public TestInterface { public: - explicit TestInterfaceImpl(TestInterfaceRequest request) - : binding_(this, std::move(request)) {} + explicit TestInterfaceImpl(PendingReceiver<TestInterface> receiver) + : receiver_(this, std::move(receiver)) {} ~TestInterfaceImpl() override {} // TestInterface implementation: @@ -53,7 +55,7 @@ } private: - Binding<TestInterface> binding_; + Receiver<TestInterface> receiver_; }; } // namespace @@ -165,11 +167,11 @@ } TEST_F(DataViewTest, InterfaceArray) { - TestInterfacePtrInfo ptr_info; - TestInterfaceImpl impl(MakeRequest(&ptr_info)); + PendingRemote<TestInterface> pending_remote; + TestInterfaceImpl impl(pending_remote.InitWithNewPipeAndPassReceiver()); TestStructPtr obj(TestStruct::New()); - obj->f_interface_array.push_back(std::move(ptr_info)); + obj->f_interface_array.push_back(std::move(pending_remote)); auto data_view_holder = SerializeTestStruct(std::move(obj)); auto& data_view = *data_view_holder->data_view; @@ -180,10 +182,12 @@ ASSERT_FALSE(array_data_view.is_null()); ASSERT_EQ(1u, array_data_view.size()); - TestInterfacePtr ptr2 = array_data_view.Take<TestInterfacePtr>(0); - ASSERT_TRUE(ptr2); + pending_remote = array_data_view.Take<PendingRemote<TestInterface>>(0); + ASSERT_TRUE(pending_remote); int32_t result = 0; - ASSERT_TRUE(ptr2->Echo(42, &result)); + + Remote<TestInterface> remote(std::move(pending_remote)); + ASSERT_TRUE(remote->Echo(42, &result)); EXPECT_EQ(42, result); }
diff --git a/mojo/public/cpp/bindings/tests/e2e_perftest.cc b/mojo/public/cpp/bindings/tests/e2e_perftest.cc index b32b4c0..3fae17f5 100644 --- a/mojo/public/cpp/bindings/tests/e2e_perftest.cc +++ b/mojo/public/cpp/bindings/tests/e2e_perftest.cc
@@ -16,7 +16,8 @@ #include "base/threading/thread_task_runner_handle.h" #include "mojo/core/embedder/embedder.h" #include "mojo/core/test/mojo_test_base.h" -#include "mojo/public/cpp/bindings/strong_binding.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/interfaces/bindings/tests/ping_service.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -25,31 +26,34 @@ class EchoServiceImpl : public test::EchoService { public: - explicit EchoServiceImpl(const base::Closure& quit_closure); - ~EchoServiceImpl() override; + EchoServiceImpl(PendingReceiver<test::EchoService> receiver, + base::OnceClosure quit_closure) + : receiver_(this, std::move(receiver)), + quit_closure_(std::move(quit_closure)) { + receiver_.set_disconnect_handler( + base::BindOnce(&EchoServiceImpl::OnDisconnect, base::Unretained(this))); + } - // |EchoService| methods: - void Echo(const std::string& test_data, EchoCallback callback) override; + ~EchoServiceImpl() override { std::move(quit_closure_).Run(); } + + // EchoService: + void Echo(const std::string& test_data, EchoCallback callback) override { + std::move(callback).Run(test_data); + } private: - const base::Closure quit_closure_; + void OnDisconnect() { delete this; } + + Receiver<test::EchoService> receiver_; + base::OnceClosure quit_closure_; }; -EchoServiceImpl::EchoServiceImpl(const base::Closure& quit_closure) - : quit_closure_(quit_closure) {} - -EchoServiceImpl::~EchoServiceImpl() { - quit_closure_.Run(); -} - -void EchoServiceImpl::Echo(const std::string& test_data, - EchoCallback callback) { - std::move(callback).Run(test_data); -} - class PingPongTest { public: - explicit PingPongTest(test::EchoServicePtr service); + explicit PingPongTest(PendingRemote<test::EchoService> service) + : service_(std::move(service)), + ping_done_callback_(base::BindRepeating(&PingPongTest::OnPingDone, + base::Unretained(this))) {} void RunTest(int iterations, int batch_size, int message_size); @@ -57,8 +61,8 @@ void DoPing(); void OnPingDone(const std::string& reply); - test::EchoServicePtr service_; - const base::Callback<void(const std::string&)> ping_done_callback_; + Remote<test::EchoService> service_; + const base::RepeatingCallback<void(const std::string&)> ping_done_callback_; int iterations_; int batch_size_; @@ -67,14 +71,9 @@ int current_iterations_; int calls_outstanding_; - base::Closure quit_closure_; + base::OnceClosure quit_closure_; }; -PingPongTest::PingPongTest(test::EchoServicePtr service) - : service_(std::move(service)), - ping_done_callback_( - base::Bind(&PingPongTest::OnPingDone, base::Unretained(this))) {} - void PingPongTest::RunTest(int iterations, int batch_size, int message_size) { iterations_ = iterations; batch_size_ = batch_size; @@ -94,7 +93,7 @@ DCHECK_EQ(0, calls_outstanding_); current_iterations_++; if (current_iterations_ > iterations_) { - quit_closure_.Run(); + std::move(quit_closure_).Run(); return; } @@ -139,10 +138,8 @@ const int kBatchSizes[] = {1, 10, 100}; const int kMessageSizes[] = {8, 64, 512, 4096, 65536}; - test::EchoServicePtr service; - service.Bind(InterfacePtrInfo<test::EchoService>( - ScopedMessagePipeHandle(MessagePipeHandle(client_mp)), - service.version())); + PendingRemote<test::EchoService> service( + ScopedMessagePipeHandle(MessagePipeHandle(client_mp)), 0); PingPongTest test(std::move(service)); for (int batch_size : kBatchSizes) { @@ -160,24 +157,26 @@ } }; -void CreateAndRunService(InterfaceRequest<test::EchoService> request, - const base::Closure& cb) { - MakeStrongBinding(std::make_unique<EchoServiceImpl>(cb), std::move(request)); +void CreateAndRunService(PendingReceiver<test::EchoService> receiver, + base::OnceClosure quit_closure) { + // Self-owned. + new EchoServiceImpl(std::move(receiver), std::move(quit_closure)); } DEFINE_TEST_CLIENT_TEST_WITH_PIPE(PingService, MojoE2EPerftest, mp) { MojoHandle service_mp; EXPECT_EQ("hello", ReadMessageWithHandles(mp, &service_mp, 1)); - auto request = InterfaceRequest<test::EchoService>( + auto receiver = PendingReceiver<test::EchoService>( ScopedMessagePipeHandle(MessagePipeHandle(service_mp))); base::RunLoop run_loop; core::GetIOTaskRunner()->PostTask( FROM_HERE, - base::BindOnce(&CreateAndRunService, std::move(request), - base::Bind(base::IgnoreResult(&base::TaskRunner::PostTask), - message_loop_.task_runner(), FROM_HERE, - run_loop.QuitClosure()))); + base::BindOnce( + &CreateAndRunService, std::move(receiver), + base::BindOnce(base::IgnoreResult(&base::TaskRunner::PostTask), + message_loop_.task_runner(), FROM_HERE, + run_loop.QuitClosure()))); run_loop.Run(); }
diff --git a/mojo/public/cpp/bindings/tests/equals_unittest.cc b/mojo/public/cpp/bindings/tests/equals_unittest.cc index 6483baf8..f91aede 100644 --- a/mojo/public/cpp/bindings/tests/equals_unittest.cc +++ b/mojo/public/cpp/bindings/tests/equals_unittest.cc
@@ -76,47 +76,5 @@ EXPECT_TRUE(n1.Equals(n2)); } -TEST_F(EqualsTest, InterfacePtr) { - base::MessageLoop message_loop; - - SomeInterfacePtr inf1; - SomeInterfacePtr inf2; - - EXPECT_TRUE(inf1.Equals(inf1)); - EXPECT_TRUE(inf1.Equals(inf2)); - - auto inf1_request = MakeRequest(&inf1); - ALLOW_UNUSED_LOCAL(inf1_request); - - EXPECT_TRUE(inf1.Equals(inf1)); - EXPECT_FALSE(inf1.Equals(inf2)); - - auto inf2_request = MakeRequest(&inf2); - ALLOW_UNUSED_LOCAL(inf2_request); - - EXPECT_FALSE(inf1.Equals(inf2)); -} - -TEST_F(EqualsTest, InterfaceRequest) { - base::MessageLoop message_loop; - - InterfaceRequest<SomeInterface> req1; - InterfaceRequest<SomeInterface> req2; - - EXPECT_TRUE(req1.Equals(req1)); - EXPECT_TRUE(req1.Equals(req2)); - - SomeInterfacePtr inf1; - req1 = MakeRequest(&inf1); - - EXPECT_TRUE(req1.Equals(req1)); - EXPECT_FALSE(req1.Equals(req2)); - - SomeInterfacePtr inf2; - req2 = MakeRequest(&inf2); - - EXPECT_FALSE(req1.Equals(req2)); -} - } // test } // mojo
diff --git a/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc b/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc index f55312ad1..4d5210d 100644 --- a/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc +++ b/mojo/public/cpp/bindings/tests/handle_passing_unittest.cc
@@ -8,9 +8,9 @@ #include "base/bind.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "mojo/public/cpp/bindings/strong_binding.h" +#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" +#include "mojo/public/cpp/bindings/unique_receiver_set.h" #include "mojo/public/cpp/system/wait.h" #include "mojo/public/cpp/test_support/test_utils.h" #include "mojo/public/interfaces/bindings/tests/sample_factory.mojom.h" @@ -38,22 +38,21 @@ class ImportedInterfaceImpl : public imported::ImportedInterface { public: - ImportedInterfaceImpl( - InterfaceRequest<imported::ImportedInterface> request, - const base::Closure& closure) - : binding_(this, std::move(request)), closure_(closure) {} + ImportedInterfaceImpl(PendingReceiver<imported::ImportedInterface> receiver, + base::OnceClosure closure) + : receiver_(this, std::move(receiver)), closure_(std::move(closure)) {} void DoSomething() override { do_something_count_++; - closure_.Run(); + std::move(closure_).Run(); } static int do_something_count() { return do_something_count_; } private: static int do_something_count_; - Binding<ImportedInterface> binding_; - base::Closure closure_; + Receiver<ImportedInterface> receiver_; + base::OnceClosure closure_; }; int ImportedInterfaceImpl::do_something_count_ = 0; @@ -73,8 +72,8 @@ class SampleFactoryImpl : public sample::Factory { public: - explicit SampleFactoryImpl(InterfaceRequest<sample::Factory> request) - : binding_(this, std::move(request)) {} + explicit SampleFactoryImpl(PendingReceiver<sample::Factory> receiver) + : receiver_(this, std::move(receiver)) {} void DoStuff(sample::RequestPtr request, ScopedMessagePipeHandle pipe, @@ -101,7 +100,7 @@ std::move(callback).Run(std::move(response), text1); if (request->obj) { - imported::ImportedInterfacePtr proxy(std::move(request->obj)); + Remote<imported::ImportedInterface> proxy(std::move(request->obj)); proxy->DoSomething(); } } @@ -129,24 +128,26 @@ } void CreateNamedObject( - InterfaceRequest<sample::NamedObject> object_request) override { - EXPECT_TRUE(object_request.is_pending()); - MakeStrongBinding(std::make_unique<SampleNamedObjectImpl>(), - std::move(object_request)); + PendingReceiver<sample::NamedObject> object_receiver) override { + EXPECT_TRUE(object_receiver.is_valid()); + object_receivers_.Add(std::make_unique<SampleNamedObjectImpl>(), + std::move(object_receiver)); } // These aren't called or implemented, but exist here to test that the // methods are generated with the correct argument types for imported // interfaces. void RequestImportedInterface( - InterfaceRequest<imported::ImportedInterface> imported, + PendingReceiver<imported::ImportedInterface> imported, RequestImportedInterfaceCallback callback) override {} - void TakeImportedInterface(imported::ImportedInterfacePtr imported, - TakeImportedInterfaceCallback callback) override {} + void TakeImportedInterface( + PendingRemote<imported::ImportedInterface> imported, + TakeImportedInterfaceCallback callback) override {} private: ScopedMessagePipeHandle pipe1_; - Binding<sample::Factory> binding_; + Receiver<sample::Factory> receiver_; + UniqueReceiverSet<sample::NamedObject> object_receivers_; }; class HandlePassingTest : public BindingsTestBase { @@ -195,8 +196,8 @@ } TEST_P(HandlePassingTest, Basic) { - sample::FactoryPtr factory; - SampleFactoryImpl factory_impl(MakeRequest(&factory)); + Remote<sample::Factory> factory; + SampleFactoryImpl factory_impl(factory.BindNewPipeAndPassReceiver()); MessagePipe pipe0; EXPECT_TRUE(WriteTextMessage(pipe0.handle1.get(), kText1)); @@ -204,9 +205,9 @@ MessagePipe pipe1; EXPECT_TRUE(WriteTextMessage(pipe1.handle1.get(), kText2)); - imported::ImportedInterfacePtrInfo imported; + PendingRemote<imported::ImportedInterface> imported; base::RunLoop run_loop; - ImportedInterfaceImpl imported_impl(MakeRequest(&imported), + ImportedInterfaceImpl imported_impl(imported.InitWithNewPipeAndPassReceiver(), run_loop.QuitClosure()); sample::RequestPtr request(sample::Request::New( @@ -230,11 +231,11 @@ } TEST_P(HandlePassingTest, PassInvalid) { - sample::FactoryPtr factory; - SampleFactoryImpl factory_impl(MakeRequest(&factory)); + Remote<sample::Factory> factory; + SampleFactoryImpl factory_impl(factory.BindNewPipeAndPassReceiver()); sample::RequestPtr request(sample::Request::New(1, ScopedMessagePipeHandle(), - base::nullopt, nullptr)); + base::nullopt, NullRemote())); bool got_response = false; std::string got_text_reply; @@ -252,8 +253,8 @@ // Verifies DataPipeConsumer can be passed and read from. TEST_P(HandlePassingTest, DataPipe) { - sample::FactoryPtr factory; - SampleFactoryImpl factory_impl(MakeRequest(&factory)); + Remote<sample::Factory> factory; + SampleFactoryImpl factory_impl(factory.BindNewPipeAndPassReceiver()); // Writes a string to a data pipe and passes the data pipe (consumer) to the // factory. @@ -287,22 +288,22 @@ } TEST_P(HandlePassingTest, CreateNamedObject) { - sample::FactoryPtr factory; - SampleFactoryImpl factory_impl(MakeRequest(&factory)); + Remote<sample::Factory> factory; + SampleFactoryImpl factory_impl(factory.BindNewPipeAndPassReceiver()); - sample::NamedObjectPtr object1; + Remote<sample::NamedObject> object1; EXPECT_FALSE(object1); - auto object1_request = mojo::MakeRequest(&object1); - EXPECT_TRUE(object1_request.is_pending()); - factory->CreateNamedObject(std::move(object1_request)); - EXPECT_FALSE(object1_request.is_pending()); // We've passed the request. + auto object1_receiver = object1.BindNewPipeAndPassReceiver(); + EXPECT_TRUE(object1_receiver); + factory->CreateNamedObject(std::move(object1_receiver)); + EXPECT_FALSE(object1_receiver); ASSERT_TRUE(object1); object1->SetName("object1"); - sample::NamedObjectPtr object2; - factory->CreateNamedObject(MakeRequest(&object2)); + Remote<sample::NamedObject> object2; + factory->CreateNamedObject(object2.BindNewPipeAndPassReceiver()); object2->SetName("object2"); base::RunLoop run_loop, run_loop2;
diff --git a/mojo/public/cpp/bindings/tests/lazy_serialization_unittest.cc b/mojo/public/cpp/bindings/tests/lazy_serialization_unittest.cc index 3fe075bd..424e47d23 100644 --- a/mojo/public/cpp/bindings/tests/lazy_serialization_unittest.cc +++ b/mojo/public/cpp/bindings/tests/lazy_serialization_unittest.cc
@@ -7,7 +7,8 @@ #include "base/run_loop.h" #include "base/test/bind_test_util.h" #include "base/test/scoped_task_environment.h" -#include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" #include "mojo/public/interfaces/bindings/tests/struct_with_traits.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -17,8 +18,8 @@ class LazySerializationTest : public testing::Test { public: - LazySerializationTest() {} - ~LazySerializationTest() override {} + LazySerializationTest() = default; + ~LazySerializationTest() override = default; private: base::test::ScopedTaskEnvironment task_environment_; @@ -29,9 +30,9 @@ class TestUnserializedStructImpl : public test::TestUnserializedStruct { public: explicit TestUnserializedStructImpl( - test::TestUnserializedStructRequest request) - : binding_(this, std::move(request)) {} - ~TestUnserializedStructImpl() override {} + PendingReceiver<test::TestUnserializedStruct> receiver) + : receiver_(this, std::move(receiver)) {} + ~TestUnserializedStructImpl() override = default; // test::TestUnserializedStruct: void PassUnserializedStruct( @@ -41,15 +42,15 @@ } private: - mojo::Binding<test::TestUnserializedStruct> binding_; + Receiver<test::TestUnserializedStruct> receiver_; DISALLOW_COPY_AND_ASSIGN(TestUnserializedStructImpl); }; class ForceSerializeTesterImpl : public test::ForceSerializeTester { public: - ForceSerializeTesterImpl(test::ForceSerializeTesterRequest request) - : binding_(this, std::move(request)) {} + ForceSerializeTesterImpl(PendingReceiver<test::ForceSerializeTester> receiver) + : receiver_(this, std::move(receiver)) {} ~ForceSerializeTesterImpl() override = default; // test::ForceSerializeTester: @@ -66,7 +67,7 @@ } private: - Binding<test::ForceSerializeTester> binding_; + Receiver<test::ForceSerializeTester> receiver_; DISALLOW_COPY_AND_ASSIGN(ForceSerializeTesterImpl); }; @@ -77,8 +78,8 @@ // supports lazy serialization, and where both ends of the interface are in // the same process. - test::TestUnserializedStructPtr ptr; - TestUnserializedStructImpl impl(MakeRequest(&ptr)); + Remote<test::TestUnserializedStruct> remote; + TestUnserializedStructImpl impl(remote.BindNewPipeAndPassReceiver()); const int32_t kTestMagicNumber = 42; @@ -89,18 +90,14 @@ // Send our data over the pipe and wait for it to come back. The value should // be preserved. We know the data was never serialized because the // StructTraits for this type will DCHECK if executed in any capacity. - int received_number = 0; base::RunLoop loop; - ptr->PassUnserializedStruct( - data, base::Bind( - [](base::RunLoop* loop, int* received_number, - const test::StructWithUnreachableTraitsImpl& passed) { - *received_number = passed.magic_number; - loop->Quit(); - }, - &loop, &received_number)); + remote->PassUnserializedStruct( + data, base::BindLambdaForTesting( + [&](const test::StructWithUnreachableTraitsImpl& passed) { + EXPECT_EQ(kTestMagicNumber, passed.magic_number); + loop.Quit(); + })); loop.Run(); - EXPECT_EQ(kTestMagicNumber, received_number); } TEST_F(LazySerializationTest, ForceSerialize) { @@ -108,8 +105,8 @@ // with lazy serialization enabled, messages which carry a force-serialized // type will always serialize at call time. - test::ForceSerializeTesterPtr tester; - ForceSerializeTesterImpl impl(mojo::MakeRequest(&tester)); + Remote<test::ForceSerializeTester> tester; + ForceSerializeTesterImpl impl(tester.BindNewPipeAndPassReceiver()); constexpr int32_t kTestValue = 42; @@ -138,8 +135,8 @@ // context, i.e. when a force-serialized type is contained within a // non-force-serialized type, - test::ForceSerializeTesterPtr tester; - ForceSerializeTesterImpl impl(mojo::MakeRequest(&tester)); + Remote<test::ForceSerializeTester> tester; + ForceSerializeTesterImpl impl(tester.BindNewPipeAndPassReceiver()); constexpr int32_t kTestValue = 42;
diff --git a/mojo/public/cpp/bindings/tests/native_struct_unittest.cc b/mojo/public/cpp/bindings/tests/native_struct_unittest.cc index 95a549d..92d1976d 100644 --- a/mojo/public/cpp/bindings/tests/native_struct_unittest.cc +++ b/mojo/public/cpp/bindings/tests/native_struct_unittest.cc
@@ -11,7 +11,8 @@ #include "base/run_loop.h" #include "base/test/scoped_task_environment.h" #include "ipc/ipc_param_traits.h" -#include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" #include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/cpp/system/wait.h" @@ -23,10 +24,10 @@ class NativeStructTest : public BindingsTestBase, public test::NativeTypeTester { public: - NativeStructTest() : binding_(this, mojo::MakeRequest(&proxy_)) {} + NativeStructTest() : receiver_(this, remote_.BindNewPipeAndPassReceiver()) {} ~NativeStructTest() override = default; - test::NativeTypeTester* proxy() { return proxy_.get(); } + test::NativeTypeTester* remote() { return remote_.get(); } private: // test::NativeTypeTester: @@ -41,8 +42,8 @@ std::move(callback).Run(std::move(s)); } - test::NativeTypeTesterPtr proxy_; - Binding<test::NativeTypeTester> binding_; + Remote<test::NativeTypeTester> remote_; + Receiver<test::NativeTypeTester> receiver_; DISALLOW_COPY_AND_ASSIGN(NativeStructTest); }; @@ -50,7 +51,7 @@ TEST_P(NativeStructTest, NativeStruct) { test::TestNativeStruct s("hello world", 5, 42); base::RunLoop loop; - proxy()->PassNativeStruct( + remote()->PassNativeStruct( s, base::Bind( [](test::TestNativeStruct* expected_struct, base::RunLoop* loop, const test::TestNativeStruct& passed) { @@ -69,7 +70,7 @@ test::TestNativeStructWithAttachments s(kTestMessage, std::move(pipe.handle0)); base::RunLoop loop; - proxy()->PassNativeStructWithAttachments( + remote()->PassNativeStructWithAttachments( std::move(s), base::Bind( [](const std::string& expected_message,
diff --git a/mojo/public/cpp/bindings/tests/pickle_unittest.cc b/mojo/public/cpp/bindings/tests/pickle_unittest.cc index 217fa6a5..8049c54 100644 --- a/mojo/public/cpp/bindings/tests/pickle_unittest.cc +++ b/mojo/public/cpp/bindings/tests/pickle_unittest.cc
@@ -10,8 +10,9 @@ #include "base/logging.h" #include "base/message_loop/message_loop.h" #include "base/run_loop.h" -#include "mojo/public/cpp/bindings/binding_set.h" -#include "mojo/public/cpp/bindings/interface_request.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/pickled_types_blink.h" #include "mojo/public/cpp/bindings/tests/pickled_types_chromium.h" #include "mojo/public/cpp/bindings/tests/variant_test_util.h" @@ -68,8 +69,8 @@ } template <typename T> -void ExpectError(InterfacePtr<T>* proxy, const base::Closure& callback) { - proxy->set_connection_error_handler(callback); +void ExpectError(Remote<T>* proxy, base::OnceClosure callback) { + proxy->set_disconnect_handler(std::move(callback)); } template <typename Func, typename Arg> @@ -153,20 +154,20 @@ PickleTest() {} template <typename ProxyType = PicklePasser> - InterfacePtr<ProxyType> ConnectToChromiumService() { - InterfacePtr<ProxyType> proxy; - chromium_bindings_.AddBinding( - &chromium_service_, - ConvertInterfaceRequest<PicklePasser>(mojo::MakeRequest(&proxy))); + Remote<ProxyType> ConnectToChromiumService() { + Remote<ProxyType> proxy; + chromium_receivers_.Add(&chromium_service_, + ConvertPendingReceiver<PicklePasser>( + proxy.BindNewPipeAndPassReceiver())); return proxy; } template <typename ProxyType = blink::PicklePasser> - InterfacePtr<ProxyType> ConnectToBlinkService() { - InterfacePtr<ProxyType> proxy; - blink_bindings_.AddBinding(&blink_service_, - ConvertInterfaceRequest<blink::PicklePasser>( - mojo::MakeRequest(&proxy))); + Remote<ProxyType> ConnectToBlinkService() { + Remote<ProxyType> proxy; + blink_receivers_.Add(&blink_service_, + ConvertPendingReceiver<blink::PicklePasser>( + proxy.BindNewPipeAndPassReceiver())); return proxy; } @@ -192,9 +193,9 @@ private: base::MessageLoop loop_; ChromiumPicklePasserImpl chromium_service_; - BindingSet<PicklePasser> chromium_bindings_; + ReceiverSet<PicklePasser> chromium_receivers_; BlinkPicklePasserImpl blink_service_; - BindingSet<blink::PicklePasser> blink_bindings_; + ReceiverSet<blink::PicklePasser> blink_receivers_; }; } // namespace
diff --git a/mojo/public/cpp/bindings/tests/receiver_callback_unittest.cc b/mojo/public/cpp/bindings/tests/receiver_callback_unittest.cc index d944bd06..38880d1 100644 --- a/mojo/public/cpp/bindings/tests/receiver_callback_unittest.cc +++ b/mojo/public/cpp/bindings/tests/receiver_callback_unittest.cc
@@ -9,10 +9,11 @@ #include "base/logging.h" #include "base/message_loop/message_loop.h" #include "base/run_loop.h" +#include "base/test/bind_test_util.h" #include "base/test/gtest_util.h" #include "build/build_config.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "mojo/public/cpp/bindings/interface_ptr.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/cpp/test_support/test_support.h" #include "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom.h" @@ -21,11 +22,11 @@ /////////////////////////////////////////////////////////////////////////////// // // The tests in this file are designed to test the interaction between a -// Callback and its associated Binding. If a Callback is deleted before -// being used we DCHECK fail--unless the associated Binding has already +// Callback and its associated Receiver. If a Callback is deleted before +// being used we DCHECK fail--unless the associated Receiver has already // been closed or deleted. This contract must be explained to the Mojo // application developer. For example it is the developer's responsibility to -// ensure that the Binding is destroyed before an unused Callback is destroyed. +// ensure that the Receiver is destroyed before an unused Callback is destroyed. // /////////////////////////////////////////////////////////////////////////////// @@ -33,17 +34,6 @@ namespace test { namespace { -void SaveValue(int32_t* storage, const base::Closure& closure, int32_t value) { - *storage = value; - if (!closure.is_null()) - closure.Run(); -} - -base::Callback<void(int32_t)> BindValueSaver(int32_t* last_value_seen, - const base::Closure& closure) { - return base::Bind(&SaveValue, last_value_seen, closure); -} - // An implementation of sample::Provider used on the server side. // It only implements one of the methods: EchoInt(). // All it does is save the values and Callbacks it sees. @@ -72,10 +62,8 @@ void EchoInt(int32_t x, EchoIntCallback callback) override { last_server_value_seen_ = x; callback_saved_ = std::move(callback); - if (!closure_.is_null()) { - closure_.Run(); - closure_.Reset(); - } + if (closure_) + std::move(closure_).Run(); } void EchoString(const std::string& a, EchoStringCallback callback) override { @@ -97,26 +85,26 @@ CHECK(false) << "Not implemented."; } - void resetLastServerValueSeen() { last_server_value_seen_ = 0; } + void ResetLastServerValueSeen() { last_server_value_seen_ = 0; } int32_t last_server_value_seen() const { return last_server_value_seen_; } - void set_closure(const base::Closure& closure) { closure_ = closure; } + void set_closure(base::OnceClosure closure) { closure_ = std::move(closure); } private: int32_t last_server_value_seen_; EchoIntCallback callback_saved_; - base::Closure closure_; + base::OnceClosure closure_; }; -class BindingCallbackTest : public testing::Test { +class ReceiverCallbackTest : public testing::Test { public: - BindingCallbackTest() {} - ~BindingCallbackTest() override {} + ReceiverCallbackTest() {} + ~ReceiverCallbackTest() override {} protected: int32_t last_client_callback_value_seen_; - sample::ProviderPtr interface_ptr_; + Remote<sample::Provider> remote_; void PumpMessages() { base::RunLoop().RunUntilIdle(); } @@ -124,24 +112,25 @@ base::MessageLoop loop_; }; -// Tests that the InterfacePtr and the Binding can communicate with each -// other normally. -TEST_F(BindingCallbackTest, Basic) { - // Create the ServerImpl and the Binding. +// Tests that the Remote and the Receiver can communicate with each other +// normally. +TEST_F(ReceiverCallbackTest, Basic) { + // Create the ServerImpl and the Receiver. InterfaceImpl server_impl; - Binding<sample::Provider> binding(&server_impl, MakeRequest(&interface_ptr_)); + Receiver<sample::Provider> receiver(&server_impl, + remote_.BindNewPipeAndPassReceiver()); // Initialize the test values. - server_impl.resetLastServerValueSeen(); + server_impl.ResetLastServerValueSeen(); last_client_callback_value_seen_ = 0; // Invoke the Echo method. base::RunLoop run_loop, run_loop2; server_impl.set_closure(run_loop.QuitClosure()); - interface_ptr_->EchoInt( - 7, - BindValueSaver(&last_client_callback_value_seen_, - run_loop2.QuitClosure())); + remote_->EchoInt(7, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + run_loop2.Quit(); + })); run_loop.Run(); // Check that server saw the correct value, but the client has not yet. @@ -156,16 +145,16 @@ EXPECT_EQ(7, last_client_callback_value_seen_); // Initialize the test values again. - server_impl.resetLastServerValueSeen(); + server_impl.ResetLastServerValueSeen(); last_client_callback_value_seen_ = 0; // Invoke the Echo method again. base::RunLoop run_loop3, run_loop4; server_impl.set_closure(run_loop3.QuitClosure()); - interface_ptr_->EchoInt( - 13, - BindValueSaver(&last_client_callback_value_seen_, - run_loop4.QuitClosure())); + remote_->EchoInt(13, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + run_loop4.Quit(); + })); run_loop3.Run(); // Check that server saw the correct value, but the client has not yet. @@ -180,31 +169,31 @@ EXPECT_EQ(13, last_client_callback_value_seen_); } -// Tests that running the Callback after the Binding has been deleted +// Tests that running the Callback after the Receiver has been deleted // results in a clean failure. -TEST_F(BindingCallbackTest, DeleteBindingThenRunCallback) { +TEST_F(ReceiverCallbackTest, DeleteReceiverThenRunCallback) { // Create the ServerImpl. InterfaceImpl server_impl; base::RunLoop run_loop; { - // Create the binding in an inner scope so it can be deleted first. - Binding<sample::Provider> binding(&server_impl, - MakeRequest(&interface_ptr_)); - interface_ptr_.set_connection_error_handler(run_loop.QuitClosure()); + // Create the receiver in an inner scope so it can be deleted first. + Receiver<sample::Provider> receiver(&server_impl, + remote_.BindNewPipeAndPassReceiver()); + remote_.set_disconnect_handler(run_loop.QuitClosure()); // Initialize the test values. - server_impl.resetLastServerValueSeen(); + server_impl.ResetLastServerValueSeen(); last_client_callback_value_seen_ = 0; // Invoke the Echo method. base::RunLoop run_loop2; server_impl.set_closure(run_loop2.QuitClosure()); - interface_ptr_->EchoInt( - 7, - BindValueSaver(&last_client_callback_value_seen_, base::Closure())); + remote_->EchoInt(7, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + })); run_loop2.Run(); } - // The binding has now been destroyed and the pipe is closed. + // The receiver has now been destroyed and its pipe endpoint is closed. // Check that server saw the correct value, but the client has not yet. EXPECT_EQ(7, server_impl.last_server_value_seen()); @@ -220,76 +209,78 @@ // Attempt to invoke the method again and confirm that an error was // encountered. - interface_ptr_->EchoInt( - 13, - BindValueSaver(&last_client_callback_value_seen_, base::Closure())); + remote_->EchoInt(13, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + run_loop.Quit(); + })); run_loop.Run(); - EXPECT_TRUE(interface_ptr_.encountered_error()); + EXPECT_FALSE(remote_.is_connected()); } // Tests that deleting a Callback without running it after the corresponding -// binding has already been deleted does not result in a crash. -TEST_F(BindingCallbackTest, DeleteBindingThenDeleteCallback) { +// Receiver has already been deleted does not result in a crash. +TEST_F(ReceiverCallbackTest, DeleteReceiverThenDeleteCallback) { // Create the ServerImpl. InterfaceImpl server_impl; { - // Create the binding in an inner scope so it can be deleted first. - Binding<sample::Provider> binding(&server_impl, - MakeRequest(&interface_ptr_)); + // Create the receiver in an inner scope so it can be deleted first. + Receiver<sample::Provider> receiver(&server_impl, + remote_.BindNewPipeAndPassReceiver()); // Initialize the test values. - server_impl.resetLastServerValueSeen(); + server_impl.ResetLastServerValueSeen(); last_client_callback_value_seen_ = 0; // Invoke the Echo method. base::RunLoop run_loop; server_impl.set_closure(run_loop.QuitClosure()); - interface_ptr_->EchoInt( - 7, - BindValueSaver(&last_client_callback_value_seen_, base::Closure())); + remote_->EchoInt(7, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + })); run_loop.Run(); } - // The binding has now been destroyed and the pipe is closed. + // The receiver has now been destroyed and its pipe endpoint is closed. // Check that server saw the correct value, but the client has not yet. EXPECT_EQ(7, server_impl.last_server_value_seen()); EXPECT_EQ(0, last_client_callback_value_seen_); // Delete the callback without running it. This should not - // cause a problem because the insfrastructure can detect that the - // binding has already been destroyed and the pipe is closed. + // cause a problem because the infrastructure can detect that the + // receiver has already been destroyed. server_impl.DeleteCallback(); } -// Tests that closing a Binding allows us to delete a callback +// Tests that closing a Receiver allows us to delete a callback // without running it without encountering a crash. -TEST_F(BindingCallbackTest, CloseBindingBeforeDeletingCallback) { - // Create the ServerImpl and the Binding. +TEST_F(ReceiverCallbackTest, ResetReceiverBeforeDeletingCallback) { + // Create the ServerImpl and the Receiver. InterfaceImpl server_impl; - Binding<sample::Provider> binding(&server_impl, MakeRequest(&interface_ptr_)); + Receiver<sample::Provider> receiver(&server_impl, + remote_.BindNewPipeAndPassReceiver()); // Initialize the test values. - server_impl.resetLastServerValueSeen(); + server_impl.ResetLastServerValueSeen(); last_client_callback_value_seen_ = 0; // Invoke the Echo method. base::RunLoop run_loop; server_impl.set_closure(run_loop.QuitClosure()); - interface_ptr_->EchoInt( - 7, - BindValueSaver(&last_client_callback_value_seen_, base::Closure())); + remote_->EchoInt(7, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + })); run_loop.Run(); // Check that server saw the correct value, but the client has not yet. EXPECT_EQ(7, server_impl.last_server_value_seen()); EXPECT_EQ(0, last_client_callback_value_seen_); - // Now close the Binding. - binding.Close(); + // Now disconnect the Receiver. + receiver.reset(); // Delete the callback without running it. This should not - // cause a crash because the insfrastructure can detect that the - // binding has already been closed. + // cause a crash because the infrastructure can detect that the + // receiver has already been closed. server_impl.DeleteCallback(); // Check that the client has still not seen the correct value. @@ -297,22 +288,23 @@ } // Tests that deleting a Callback without using it before the -// Binding has been destroyed or closed results in a DCHECK. -TEST_F(BindingCallbackTest, DeleteCallbackBeforeBindingDeathTest) { - // Create the ServerImpl and the Binding. +// Receiver has been destroyed or closed results in a DCHECK. +TEST_F(ReceiverCallbackTest, DeleteCallbackBeforeReceiverDeathTest) { + // Create the ServerImpl and the Receiver. InterfaceImpl server_impl; - Binding<sample::Provider> binding(&server_impl, MakeRequest(&interface_ptr_)); + Receiver<sample::Provider> receiver(&server_impl, + remote_.BindNewPipeAndPassReceiver()); // Initialize the test values. - server_impl.resetLastServerValueSeen(); + server_impl.ResetLastServerValueSeen(); last_client_callback_value_seen_ = 0; // Invoke the Echo method. base::RunLoop run_loop; server_impl.set_closure(run_loop.QuitClosure()); - interface_ptr_->EchoInt( - 7, - BindValueSaver(&last_client_callback_value_seen_, base::Closure())); + remote_->EchoInt(7, base::BindLambdaForTesting([&](int32_t value) { + last_client_callback_value_seen_ = value; + })); run_loop.Run(); // Check that server saw the correct value, but the client has not yet.
diff --git a/mojo/public/cpp/bindings/tests/receiver_set_unittest.cc b/mojo/public/cpp/bindings/tests/receiver_set_unittest.cc index 0377f82..c8829d4 100644 --- a/mojo/public/cpp/bindings/tests/receiver_set_unittest.cc +++ b/mojo/public/cpp/bindings/tests/receiver_set_unittest.cc
@@ -7,11 +7,12 @@ #include "base/bind.h" #include "base/run_loop.h" +#include "base/test/bind_test_util.h" #include "mojo/core/embedder/embedder.h" -#include "mojo/public/cpp/bindings/associated_binding_set.h" -#include "mojo/public/cpp/bindings/binding_set.h" -#include "mojo/public/cpp/bindings/strong_binding_set.h" +#include "mojo/public/cpp/bindings/associated_receiver_set.h" +#include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" +#include "mojo/public/cpp/bindings/unique_receiver_set.h" #include "mojo/public/interfaces/bindings/tests/ping_service.mojom.h" #include "mojo/public/interfaces/bindings/tests/test_associated_interfaces.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -20,74 +21,75 @@ namespace test { namespace { -using BindingSetTest = BindingsTestBase; +using ReceiverSetTest = BindingsTestBase; -template <typename BindingSetType, typename ContextType> -void ExpectContextHelper(BindingSetType* binding_set, +template <typename ReceiverSetType, typename ContextType> +void ExpectContextHelper(ReceiverSetType* receiver_set, ContextType expected_context) { - EXPECT_EQ(expected_context, binding_set->dispatch_context()); + EXPECT_EQ(expected_context, receiver_set->current_context()); } -template <typename BindingSetType, typename ContextType> -base::Closure ExpectContext(BindingSetType* binding_set, - ContextType expected_context) { - return base::Bind( - &ExpectContextHelper<BindingSetType, ContextType>, binding_set, - expected_context); +template <typename ReceiverSetType, typename ContextType> +base::RepeatingClosure ExpectContext(ReceiverSetType* receiver_set, + ContextType expected_context) { + return base::BindRepeating(&ExpectContextHelper<ReceiverSetType, ContextType>, + receiver_set, expected_context); } -template <typename BindingSetType> -void ExpectBindingIdHelper(BindingSetType* binding_set, - BindingId expected_binding_id) { - EXPECT_EQ(expected_binding_id, binding_set->dispatch_binding()); +template <typename ReceiverSetType> +void ExpectReceiverIdHelper(ReceiverSetType* receiver_set, + ReceiverId expected_receiver_id) { + EXPECT_EQ(expected_receiver_id, receiver_set->current_receiver()); } -template <typename BindingSetType> -base::Closure ExpectBindingId(BindingSetType* binding_set, - BindingId expected_binding_id) { - return base::Bind(&ExpectBindingIdHelper<BindingSetType>, binding_set, - expected_binding_id); +template <typename ReceiverSetType> +base::RepeatingClosure ExpectReceiverId(ReceiverSetType* receiver_set, + ReceiverId expected_receiver_id) { + return base::BindRepeating(&ExpectReceiverIdHelper<ReceiverSetType>, + receiver_set, expected_receiver_id); } -template <typename BindingSetType> -void ReportBadMessageHelper(BindingSetType* binding_set, +template <typename ReceiverSetType> +void ReportBadMessageHelper(ReceiverSetType* receiver_set, const std::string& error) { - binding_set->ReportBadMessage(error); + receiver_set->ReportBadMessage(error); } -template <typename BindingSetType> -base::Closure ReportBadMessage(BindingSetType* binding_set, - const std::string& error) { - return base::Bind(&ReportBadMessageHelper<BindingSetType>, binding_set, - error); +template <typename ReceiverSetType> +base::RepeatingClosure ReportBadMessage(ReceiverSetType* receiver_set, + const std::string& error) { + return base::BindRepeating(&ReportBadMessageHelper<ReceiverSetType>, + receiver_set, error); } -template <typename BindingSetType> -void SaveBadMessageCallbackHelper(BindingSetType* binding_set, +template <typename ReceiverSetType> +void SaveBadMessageCallbackHelper(ReceiverSetType* receiver_set, ReportBadMessageCallback* callback) { - *callback = binding_set->GetBadMessageCallback(); + *callback = receiver_set->GetBadMessageCallback(); } -template <typename BindingSetType> -base::Closure SaveBadMessageCallback(BindingSetType* binding_set, - ReportBadMessageCallback* callback) { - return base::Bind(&SaveBadMessageCallbackHelper<BindingSetType>, binding_set, - callback); +template <typename ReceiverSetType> +base::RepeatingClosure SaveBadMessageCallback( + ReceiverSetType* receiver_set, + ReportBadMessageCallback* callback) { + return base::BindRepeating(&SaveBadMessageCallbackHelper<ReceiverSetType>, + receiver_set, callback); } -base::Closure Sequence(const base::Closure& first, - const base::Closure& second) { - return base::Bind( - [] (const base::Closure& first, const base::Closure& second) { +base::RepeatingClosure Sequence(base::RepeatingClosure first, + base::RepeatingClosure second) { + return base::BindRepeating( + [](base::RepeatingClosure first, base::RepeatingClosure second) { first.Run(); second.Run(); - }, first, second); + }, + first, second); } class PingImpl : public PingService { public: - PingImpl() {} - ~PingImpl() override {} + PingImpl() = default; + ~PingImpl() override = default; void set_ping_handler(const base::RepeatingClosure& handler) { ping_handler_ = handler; @@ -104,23 +106,23 @@ base::RepeatingClosure ping_handler_; }; -TEST_P(BindingSetTest, BindingSetContext) { +TEST_P(ReceiverSetTest, ReceiverSetContext) { PingImpl impl; - BindingSet<PingService, int> bindings; - PingServicePtr ping_a, ping_b; - bindings.AddBinding(&impl, MakeRequest(&ping_a), 1); - bindings.AddBinding(&impl, MakeRequest(&ping_b), 2); + ReceiverSet<PingService, int> receivers; + Remote<PingService> ping_a, ping_b; + receivers.Add(&impl, ping_a.BindNewPipeAndPassReceiver(), 1); + receivers.Add(&impl, ping_b.BindNewPipeAndPassReceiver(), 2); { - impl.set_ping_handler(ExpectContext(&bindings, 1)); + impl.set_ping_handler(ExpectContext(&receivers, 1)); base::RunLoop loop; ping_a->Ping(loop.QuitClosure()); loop.Run(); } { - impl.set_ping_handler(ExpectContext(&bindings, 2)); + impl.set_ping_handler(ExpectContext(&receivers, 2)); base::RunLoop loop; ping_b->Ping(loop.QuitClosure()); loop.Run(); @@ -128,40 +130,42 @@ { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectContext(&bindings, 1), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectContext(&receivers, 1), loop.QuitClosure())); ping_a.reset(); loop.Run(); } { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectContext(&bindings, 2), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectContext(&receivers, 2), loop.QuitClosure())); ping_b.reset(); loop.Run(); } - EXPECT_TRUE(bindings.empty()); + EXPECT_TRUE(receivers.empty()); } -TEST_P(BindingSetTest, BindingSetDispatchBinding) { +TEST_P(ReceiverSetTest, ReceiverSetDispatchReceiver) { PingImpl impl; - BindingSet<PingService, int> bindings; - PingServicePtr ping_a, ping_b; - BindingId id_a = bindings.AddBinding(&impl, MakeRequest(&ping_a), 1); - BindingId id_b = bindings.AddBinding(&impl, MakeRequest(&ping_b), 2); + ReceiverSet<PingService, int> receivers; + Remote<PingService> ping_a, ping_b; + ReceiverId id_a = + receivers.Add(&impl, ping_a.BindNewPipeAndPassReceiver(), 1); + ReceiverId id_b = + receivers.Add(&impl, ping_b.BindNewPipeAndPassReceiver(), 2); { - impl.set_ping_handler(ExpectBindingId(&bindings, id_a)); + impl.set_ping_handler(ExpectReceiverId(&receivers, id_a)); base::RunLoop loop; ping_a->Ping(loop.QuitClosure()); loop.Run(); } { - impl.set_ping_handler(ExpectBindingId(&bindings, id_b)); + impl.set_ping_handler(ExpectReceiverId(&receivers, id_b)); base::RunLoop loop; ping_b->Ping(loop.QuitClosure()); loop.Run(); @@ -169,43 +173,41 @@ { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectBindingId(&bindings, id_a), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectReceiverId(&receivers, id_a), loop.QuitClosure())); ping_a.reset(); loop.Run(); } { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectBindingId(&bindings, id_b), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectReceiverId(&receivers, id_b), loop.QuitClosure())); ping_b.reset(); loop.Run(); } - EXPECT_TRUE(bindings.empty()); + EXPECT_TRUE(receivers.empty()); } -TEST_P(BindingSetTest, BindingSetConnectionErrorWithReason) { +TEST_P(ReceiverSetTest, ReceiverSetConnectionErrorWithReason) { PingImpl impl; - PingServicePtr ptr; - BindingSet<PingService> bindings; - bindings.AddBinding(&impl, MakeRequest(&ptr)); + Remote<PingService> remote; + ReceiverSet<PingService> receivers; + receivers.Add(&impl, remote.BindNewPipeAndPassReceiver()); base::RunLoop run_loop; - bindings.set_connection_error_with_reason_handler(base::Bind( - [](const base::Closure& quit_closure, uint32_t custom_reason, - const std::string& description) { + receivers.set_disconnect_with_reason_handler(base::BindLambdaForTesting( + [&](uint32_t custom_reason, const std::string& description) { EXPECT_EQ(1024u, custom_reason); EXPECT_EQ("bye", description); - quit_closure.Run(); - }, - run_loop.QuitClosure())); + run_loop.Quit(); + })); - ptr.ResetWithReason(1024u, "bye"); + remote.ResetWithReason(1024u, "bye"); } -TEST_P(BindingSetTest, BindingSetReportBadMessage) { +TEST_P(ReceiverSetTest, ReceiverSetReportBadMessage) { PingImpl impl; std::string last_received_error; @@ -214,35 +216,35 @@ const std::string& error) { *out_error = error; }, &last_received_error)); - BindingSet<PingService, int> bindings; - PingServicePtr ping_a, ping_b; - bindings.AddBinding(&impl, MakeRequest(&ping_a), 1); - bindings.AddBinding(&impl, MakeRequest(&ping_b), 2); + ReceiverSet<PingService, int> receivers; + Remote<PingService> ping_a, ping_b; + receivers.Add(&impl, ping_a.BindNewPipeAndPassReceiver(), 1); + receivers.Add(&impl, ping_b.BindNewPipeAndPassReceiver(), 2); { - impl.set_ping_handler(ReportBadMessage(&bindings, "message 1")); + impl.set_ping_handler(ReportBadMessage(&receivers, "message 1")); base::RunLoop loop; - ping_a.set_connection_error_handler(loop.QuitClosure()); + ping_a.set_disconnect_handler(loop.QuitClosure()); ping_a->Ping(base::Bind([] {})); loop.Run(); EXPECT_EQ("message 1", last_received_error); } { - impl.set_ping_handler(ReportBadMessage(&bindings, "message 2")); + impl.set_ping_handler(ReportBadMessage(&receivers, "message 2")); base::RunLoop loop; - ping_b.set_connection_error_handler(loop.QuitClosure()); + ping_b.set_disconnect_handler(loop.QuitClosure()); ping_b->Ping(base::Bind([] {})); loop.Run(); EXPECT_EQ("message 2", last_received_error); } - EXPECT_TRUE(bindings.empty()); + EXPECT_TRUE(receivers.empty()); core::SetDefaultProcessErrorCallback(mojo::core::ProcessErrorCallback()); } -TEST_P(BindingSetTest, BindingSetGetBadMessageCallback) { +TEST_P(ReceiverSetTest, ReceiverSetGetBadMessageCallback) { PingImpl impl; std::string last_received_error; @@ -251,17 +253,17 @@ const std::string& error) { *out_error = error; }, &last_received_error)); - BindingSet<PingService, int> bindings; - PingServicePtr ping_a, ping_b; - bindings.AddBinding(&impl, MakeRequest(&ping_a), 1); - bindings.AddBinding(&impl, MakeRequest(&ping_b), 2); + ReceiverSet<PingService, int> receivers; + Remote<PingService> ping_a, ping_b; + receivers.Add(&impl, ping_a.BindNewPipeAndPassReceiver(), 1); + receivers.Add(&impl, ping_b.BindNewPipeAndPassReceiver(), 2); ReportBadMessageCallback bad_message_callback_a; ReportBadMessageCallback bad_message_callback_b; { impl.set_ping_handler( - SaveBadMessageCallback(&bindings, &bad_message_callback_a)); + SaveBadMessageCallback(&receivers, &bad_message_callback_a)); base::RunLoop loop; ping_a->Ping(loop.QuitClosure()); loop.Run(); @@ -270,7 +272,7 @@ { impl.set_ping_handler( - SaveBadMessageCallback(&bindings, &bad_message_callback_b)); + SaveBadMessageCallback(&receivers, &bad_message_callback_b)); base::RunLoop loop; ping_b->Ping(loop.QuitClosure()); loop.Run(); @@ -281,18 +283,18 @@ { base::RunLoop loop; - ping_b.set_connection_error_handler(loop.QuitClosure()); + ping_b.set_disconnect_handler(loop.QuitClosure()); std::move(bad_message_callback_b).Run("message 2"); EXPECT_EQ("message 2", last_received_error); loop.Run(); } - EXPECT_TRUE(bindings.empty()); + EXPECT_TRUE(receivers.empty()); core::SetDefaultProcessErrorCallback(mojo::core::ProcessErrorCallback()); } -TEST_P(BindingSetTest, BindingSetGetBadMessageCallbackOutlivesBindingSet) { +TEST_P(ReceiverSetTest, ReceiverSetGetBadMessageCallbackOutlivesReceiverSet) { PingImpl impl; std::string last_received_error; @@ -303,12 +305,12 @@ ReportBadMessageCallback bad_message_callback; { - BindingSet<PingService, int> bindings; - PingServicePtr ping_a; - bindings.AddBinding(&impl, MakeRequest(&ping_a), 1); + ReceiverSet<PingService, int> receivers; + Remote<PingService> ping_a; + receivers.Add(&impl, ping_a.BindNewPipeAndPassReceiver(), 1); impl.set_ping_handler( - SaveBadMessageCallback(&bindings, &bad_message_callback)); + SaveBadMessageCallback(&receivers, &bad_message_callback)); base::RunLoop loop; ping_a->Ping(loop.QuitClosure()); loop.Run(); @@ -322,27 +324,27 @@ class PingProviderImpl : public AssociatedPingProvider, public PingService { public: - PingProviderImpl() {} - ~PingProviderImpl() override {} + PingProviderImpl() = default; + ~PingProviderImpl() override = default; void set_new_ping_context(int context) { new_ping_context_ = context; } - void set_new_ping_handler(const base::Closure& handler) { + void set_new_ping_handler(const base::RepeatingClosure& handler) { new_ping_handler_ = handler; } - void set_ping_handler(const base::Closure& handler) { + void set_ping_handler(const base::RepeatingClosure& handler) { ping_handler_ = handler; } - AssociatedBindingSet<PingService, int>& ping_bindings() { - return ping_bindings_; + AssociatedReceiverSet<PingService, int>& ping_receivers() { + return ping_receivers_; } private: // AssociatedPingProvider: - void GetPing(PingServiceAssociatedRequest request) override { - ping_bindings_.AddBinding(this, std::move(request), new_ping_context_); + void GetPing(AssociatedInterfaceRequest<PingService> receiver) override { + ping_receivers_.Add(this, std::move(receiver), new_ping_context_); if (!new_ping_handler_.is_null()) new_ping_handler_.Run(); } @@ -354,44 +356,45 @@ std::move(callback).Run(); } - AssociatedBindingSet<PingService, int> ping_bindings_; + AssociatedReceiverSet<PingService, int> ping_receivers_; int new_ping_context_ = -1; base::Closure ping_handler_; base::Closure new_ping_handler_; }; -TEST_P(BindingSetTest, AssociatedBindingSetContext) { - AssociatedPingProviderPtr provider; +TEST_P(ReceiverSetTest, AssociatedReceiverSetContext) { + Remote<AssociatedPingProvider> provider; PingProviderImpl impl; - Binding<AssociatedPingProvider> binding(&impl, MakeRequest(&provider)); + Receiver<AssociatedPingProvider> receiver( + &impl, provider.BindNewPipeAndPassReceiver()); - PingServiceAssociatedPtr ping_a; + AssociatedRemote<PingService> ping_a; { base::RunLoop loop; impl.set_new_ping_context(1); impl.set_new_ping_handler(loop.QuitClosure()); - provider->GetPing(MakeRequest(&ping_a)); + provider->GetPing(ping_a.BindNewEndpointAndPassReceiver()); loop.Run(); } - PingServiceAssociatedPtr ping_b; + AssociatedRemote<PingService> ping_b; { base::RunLoop loop; impl.set_new_ping_context(2); impl.set_new_ping_handler(loop.QuitClosure()); - provider->GetPing(MakeRequest(&ping_b)); + provider->GetPing(ping_b.BindNewEndpointAndPassReceiver()); loop.Run(); } { - impl.set_ping_handler(ExpectContext(&impl.ping_bindings(), 1)); + impl.set_ping_handler(ExpectContext(&impl.ping_receivers(), 1)); base::RunLoop loop; ping_a->Ping(loop.QuitClosure()); loop.Run(); } { - impl.set_ping_handler(ExpectContext(&impl.ping_bindings(), 2)); + impl.set_ping_handler(ExpectContext(&impl.ping_receivers(), 2)); base::RunLoop loop; ping_b->Ping(loop.QuitClosure()); loop.Run(); @@ -399,134 +402,134 @@ { base::RunLoop loop; - impl.ping_bindings().set_connection_error_handler( - Sequence(ExpectContext(&impl.ping_bindings(), 1), loop.QuitClosure())); + impl.ping_receivers().set_disconnect_handler( + Sequence(ExpectContext(&impl.ping_receivers(), 1), loop.QuitClosure())); ping_a.reset(); loop.Run(); } { base::RunLoop loop; - impl.ping_bindings().set_connection_error_handler( - Sequence(ExpectContext(&impl.ping_bindings(), 2), loop.QuitClosure())); + impl.ping_receivers().set_disconnect_handler( + Sequence(ExpectContext(&impl.ping_receivers(), 2), loop.QuitClosure())); ping_b.reset(); loop.Run(); } - EXPECT_TRUE(impl.ping_bindings().empty()); + EXPECT_TRUE(impl.ping_receivers().empty()); } -TEST_P(BindingSetTest, MasterInterfaceBindingSetContext) { - AssociatedPingProviderPtr provider_a, provider_b; +TEST_P(ReceiverSetTest, MasterInterfaceReceiverSetContext) { + Remote<AssociatedPingProvider> provider_a, provider_b; PingProviderImpl impl; - BindingSet<AssociatedPingProvider, int> bindings; + ReceiverSet<AssociatedPingProvider, int> receivers; - bindings.AddBinding(&impl, MakeRequest(&provider_a), 1); - bindings.AddBinding(&impl, MakeRequest(&provider_b), 2); + receivers.Add(&impl, provider_a.BindNewPipeAndPassReceiver(), 1); + receivers.Add(&impl, provider_b.BindNewPipeAndPassReceiver(), 2); { - PingServiceAssociatedPtr ping; + AssociatedRemote<PingService> ping; base::RunLoop loop; impl.set_new_ping_handler( - Sequence(ExpectContext(&bindings, 1), loop.QuitClosure())); - provider_a->GetPing(MakeRequest(&ping)); + Sequence(ExpectContext(&receivers, 1), loop.QuitClosure())); + provider_a->GetPing(ping.BindNewEndpointAndPassReceiver()); loop.Run(); } { - PingServiceAssociatedPtr ping; + AssociatedRemote<PingService> ping; base::RunLoop loop; impl.set_new_ping_handler( - Sequence(ExpectContext(&bindings, 2), loop.QuitClosure())); - provider_b->GetPing(MakeRequest(&ping)); + Sequence(ExpectContext(&receivers, 2), loop.QuitClosure())); + provider_b->GetPing(ping.BindNewEndpointAndPassReceiver()); loop.Run(); } { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectContext(&bindings, 1), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectContext(&receivers, 1), loop.QuitClosure())); provider_a.reset(); loop.Run(); } { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectContext(&bindings, 2), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectContext(&receivers, 2), loop.QuitClosure())); provider_b.reset(); loop.Run(); } - EXPECT_TRUE(bindings.empty()); + EXPECT_TRUE(receivers.empty()); } -TEST_P(BindingSetTest, MasterInterfaceBindingSetDispatchBinding) { - AssociatedPingProviderPtr provider_a, provider_b; +TEST_P(ReceiverSetTest, MasterInterfaceReceiverSetDispatchReceiver) { + Remote<AssociatedPingProvider> provider_a, provider_b; PingProviderImpl impl; - BindingSet<AssociatedPingProvider, int> bindings; + ReceiverSet<AssociatedPingProvider, int> receivers; - BindingId id_a = bindings.AddBinding(&impl, MakeRequest(&provider_a), 1); - BindingId id_b = bindings.AddBinding(&impl, MakeRequest(&provider_b), 2); + ReceiverId id_a = + receivers.Add(&impl, provider_a.BindNewPipeAndPassReceiver(), 1); + ReceiverId id_b = + receivers.Add(&impl, provider_b.BindNewPipeAndPassReceiver(), 2); { - PingServiceAssociatedPtr ping; + AssociatedRemote<PingService> ping; base::RunLoop loop; impl.set_new_ping_handler( - Sequence(ExpectBindingId(&bindings, id_a), loop.QuitClosure())); - provider_a->GetPing(MakeRequest(&ping)); + Sequence(ExpectReceiverId(&receivers, id_a), loop.QuitClosure())); + provider_a->GetPing(ping.BindNewEndpointAndPassReceiver()); loop.Run(); } { - PingServiceAssociatedPtr ping; + AssociatedRemote<PingService> ping; base::RunLoop loop; impl.set_new_ping_handler( - Sequence(ExpectBindingId(&bindings, id_b), loop.QuitClosure())); - provider_b->GetPing(MakeRequest(&ping)); + Sequence(ExpectReceiverId(&receivers, id_b), loop.QuitClosure())); + provider_b->GetPing(ping.BindNewEndpointAndPassReceiver()); loop.Run(); } { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectBindingId(&bindings, id_a), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectReceiverId(&receivers, id_a), loop.QuitClosure())); provider_a.reset(); loop.Run(); } { base::RunLoop loop; - bindings.set_connection_error_handler( - Sequence(ExpectBindingId(&bindings, id_b), loop.QuitClosure())); + receivers.set_disconnect_handler( + Sequence(ExpectReceiverId(&receivers, id_b), loop.QuitClosure())); provider_b.reset(); loop.Run(); } - EXPECT_TRUE(bindings.empty()); + EXPECT_TRUE(receivers.empty()); } -TEST_P(BindingSetTest, AssociatedBindingSetConnectionErrorWithReason) { - AssociatedPingProviderPtr master_ptr; +TEST_P(ReceiverSetTest, AssociatedReceiverSetConnectionErrorWithReason) { + Remote<AssociatedPingProvider> remote_master; PingProviderImpl master_impl; - Binding<AssociatedPingProvider> master_binding(&master_impl, - MakeRequest(&master_ptr)); + Receiver<AssociatedPingProvider> master_receiver( + &master_impl, remote_master.BindNewPipeAndPassReceiver()); base::RunLoop run_loop; - master_impl.ping_bindings().set_connection_error_with_reason_handler( - base::Bind( - [](const base::Closure& quit_closure, uint32_t custom_reason, - const std::string& description) { + master_impl.ping_receivers().set_disconnect_with_reason_handler( + base::BindLambdaForTesting( + [&](uint32_t custom_reason, const std::string& description) { EXPECT_EQ(2048u, custom_reason); EXPECT_EQ("bye", description); - quit_closure.Run(); - }, - run_loop.QuitClosure())); + run_loop.Quit(); + })); - PingServiceAssociatedPtr ptr; - master_ptr->GetPing(MakeRequest(&ptr)); + AssociatedRemote<PingService> remote_ping; + remote_master->GetPing(remote_ping.BindNewEndpointAndPassReceiver()); - ptr.ResetWithReason(2048u, "bye"); + remote_ping.ResetWithReason(2048u, "bye"); run_loop.Run(); } @@ -542,29 +545,29 @@ }; int PingInstanceCounter::instance_count = 0; -TEST_P(BindingSetTest, StrongBinding_Destructor) { - PingServicePtr ping_a, ping_b; - auto bindings = std::make_unique<StrongBindingSet<PingService>>(); +TEST_P(ReceiverSetTest, UniqueReceiverSetDestruction) { + Remote<PingService> ping_a, ping_b; + auto receivers = std::make_unique<UniqueReceiverSet<PingService>>(); - bindings->AddBinding(std::make_unique<PingInstanceCounter>(), - mojo::MakeRequest(&ping_a)); + receivers->Add(std::make_unique<PingInstanceCounter>(), + ping_a.BindNewPipeAndPassReceiver()); EXPECT_EQ(1, PingInstanceCounter::instance_count); - bindings->AddBinding(std::make_unique<PingInstanceCounter>(), - mojo::MakeRequest(&ping_b)); + receivers->Add(std::make_unique<PingInstanceCounter>(), + ping_b.BindNewPipeAndPassReceiver()); EXPECT_EQ(2, PingInstanceCounter::instance_count); - bindings.reset(); + receivers.reset(); EXPECT_EQ(0, PingInstanceCounter::instance_count); } -TEST_P(BindingSetTest, StrongBinding_ConnectionError) { - PingServicePtr ping_a, ping_b; - StrongBindingSet<PingService> bindings; - bindings.AddBinding(std::make_unique<PingInstanceCounter>(), - mojo::MakeRequest(&ping_a)); - bindings.AddBinding(std::make_unique<PingInstanceCounter>(), - mojo::MakeRequest(&ping_b)); +TEST_P(ReceiverSetTest, UniqueReceiverSetDisconnect) { + Remote<PingService> ping_a, ping_b; + UniqueReceiverSet<PingService> receivers; + receivers.Add(std::make_unique<PingInstanceCounter>(), + ping_a.BindNewPipeAndPassReceiver()); + receivers.Add(std::make_unique<PingInstanceCounter>(), + ping_b.BindNewPipeAndPassReceiver()); EXPECT_EQ(2, PingInstanceCounter::instance_count); ping_a.reset(); @@ -576,23 +579,25 @@ EXPECT_EQ(0, PingInstanceCounter::instance_count); } -TEST_P(BindingSetTest, StrongBinding_RemoveBinding) { - PingServicePtr ping_a, ping_b; - StrongBindingSet<PingService> bindings; - BindingId binding_id_a = bindings.AddBinding( - std::make_unique<PingInstanceCounter>(), mojo::MakeRequest(&ping_a)); - BindingId binding_id_b = bindings.AddBinding( - std::make_unique<PingInstanceCounter>(), mojo::MakeRequest(&ping_b)); +TEST_P(ReceiverSetTest, UniqueReceiverSetRemoveEntry) { + Remote<PingService> ping_a, ping_b; + UniqueReceiverSet<PingService> receivers; + ReceiverId receiver_id_a = + receivers.Add(std::make_unique<PingInstanceCounter>(), + ping_a.BindNewPipeAndPassReceiver()); + ReceiverId receiver_id_b = + receivers.Add(std::make_unique<PingInstanceCounter>(), + ping_b.BindNewPipeAndPassReceiver()); EXPECT_EQ(2, PingInstanceCounter::instance_count); - EXPECT_TRUE(bindings.RemoveBinding(binding_id_a)); + EXPECT_TRUE(receivers.Remove(receiver_id_a)); EXPECT_EQ(1, PingInstanceCounter::instance_count); - EXPECT_TRUE(bindings.RemoveBinding(binding_id_b)); + EXPECT_TRUE(receivers.Remove(receiver_id_b)); EXPECT_EQ(0, PingInstanceCounter::instance_count); } -INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(BindingSetTest); +INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(ReceiverSetTest); } // namespace } // namespace test
diff --git a/mojo/public/cpp/bindings/tests/receiver_unittest.cc b/mojo/public/cpp/bindings/tests/receiver_unittest.cc index b9d620b..d49efe8 100644 --- a/mojo/public/cpp/bindings/tests/receiver_unittest.cc +++ b/mojo/public/cpp/bindings/tests/receiver_unittest.cc
@@ -2,20 +2,21 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Note: This file tests both binding.h (mojo::Binding) and strong_binding.h -// (mojo::StrongBinding). - -#include "mojo/public/cpp/bindings/binding.h" - #include <stdint.h> #include <utility> #include "base/bind.h" +#include "base/bind_helpers.h" #include "base/macros.h" #include "base/memory/ptr_util.h" #include "base/memory/weak_ptr.h" #include "base/run_loop.h" +#include "base/test/bind_test_util.h" #include "mojo/core/embedder/embedder.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" #include "mojo/public/interfaces/bindings/tests/ping_service.mojom.h" @@ -28,80 +29,76 @@ class ServiceImpl : public sample::Service { public: - explicit ServiceImpl(bool* was_deleted = nullptr) - : was_deleted_(was_deleted) {} + ServiceImpl() = default; + explicit ServiceImpl(bool* was_deleted) + : destruction_callback_(base::BindLambdaForTesting( + [was_deleted] { *was_deleted = true; })) {} + explicit ServiceImpl(base::OnceClosure destruction_callback) + : destruction_callback_(std::move(destruction_callback)) {} + ~ServiceImpl() override { - if (was_deleted_) - *was_deleted_ = true; + if (destruction_callback_) + std::move(destruction_callback_).Run(); } private: // sample::Service implementation void Frobinate(sample::FooPtr foo, BazOptions options, - sample::PortPtr port, + PendingRemote<sample::Port> port, FrobinateCallback callback) override { std::move(callback).Run(1); } - void GetPort(InterfaceRequest<sample::Port> port) override {} + void GetPort(PendingReceiver<sample::Port> port) override {} - bool* const was_deleted_; + base::OnceClosure destruction_callback_; DISALLOW_COPY_AND_ASSIGN(ServiceImpl); }; -template <typename... Args> -void DoSetFlagAndRunClosure(bool* flag, - const base::Closure& closure, - Args... args) { - *flag = true; - if (!closure.is_null()) - closure.Run(); -} +using ReceiverTest = BindingsTestBase; -template <typename... Args> -base::Callback<void(Args...)> SetFlagAndRunClosure( - bool* flag, - const base::Closure& callback = base::Closure()) { - return base::Bind(&DoSetFlagAndRunClosure<Args...>, flag, callback); -} - -// BindingTest ----------------------------------------------------------------- - -using BindingTest = BindingsTestBase; - -TEST_P(BindingTest, Close) { +TEST_P(ReceiverTest, Reset) { bool called = false; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); - base::RunLoop run_loop; - ptr.set_connection_error_handler( - SetFlagAndRunClosure(&called, run_loop.QuitClosure())); - ServiceImpl impl; - Binding<sample::Service> binding(&impl, std::move(request)); + Remote<sample::Service> remote; - binding.Close(); + ServiceImpl impl; + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); + + base::RunLoop run_loop; + remote.set_disconnect_handler(base::BindLambdaForTesting([&] { + run_loop.Quit(); + called = true; + })); + + receiver.reset(); EXPECT_FALSE(called); run_loop.Run(); EXPECT_TRUE(called); } // Tests that destroying a mojo::Binding closes the bound message pipe handle. -TEST_P(BindingTest, DestroyClosesMessagePipe) { +TEST_P(ReceiverTest, DestroyClosesMessagePipe) { bool encountered_error = false; ServiceImpl impl; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); + Remote<sample::Service> remote; + auto pending_receiver = remote.BindNewPipeAndPassReceiver(); base::RunLoop run_loop; - ptr.set_connection_error_handler( - SetFlagAndRunClosure(&encountered_error, run_loop.QuitClosure())); + remote.set_disconnect_handler(base::BindLambdaForTesting([&] { + run_loop.Quit(); + encountered_error = true; + })); + bool called = false; base::RunLoop run_loop2; { - Binding<sample::Service> binding(&impl, std::move(request)); - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, - run_loop2.QuitClosure())); + Receiver<sample::Service> binding(&impl, std::move(pending_receiver)); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, + NullRemote(), base::BindLambdaForTesting([&](int32_t) { + run_loop2.Quit(); + called = true; + })); run_loop2.Run(); EXPECT_TRUE(called); EXPECT_FALSE(encountered_error); @@ -113,25 +110,28 @@ // And calls should fail. called = false; - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, - run_loop2.QuitClosure())); + remote->Frobinate( + nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { called = true; })); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(called); } // Tests that the binding's connection error handler gets called when the other // end is closed. -TEST_P(BindingTest, ConnectionError) { +TEST_P(ReceiverTest, Disconnect) { bool called = false; { ServiceImpl impl; - sample::ServicePtr ptr; - Binding<sample::Service> binding(&impl, MakeRequest(&ptr)); + Remote<sample::Service> remote; + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); base::RunLoop run_loop; - binding.set_connection_error_handler( - SetFlagAndRunClosure(&called, run_loop.QuitClosure())); - ptr.reset(); + receiver.set_disconnect_handler(base::BindLambdaForTesting([&] { + called = true; + run_loop.Quit(); + })); + remote.reset(); EXPECT_FALSE(called); run_loop.Run(); EXPECT_TRUE(called); @@ -143,103 +143,114 @@ // Tests that calling Close doesn't result in the connection error handler being // called. -TEST_P(BindingTest, CloseDoesntCallConnectionErrorHandler) { +TEST_P(ReceiverTest, ResetDoesntCallDisconnectHandler) { ServiceImpl impl; - sample::ServicePtr ptr; - Binding<sample::Service> binding(&impl, MakeRequest(&ptr)); + Remote<sample::Service> remote; + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); bool called = false; - binding.set_connection_error_handler(SetFlagAndRunClosure(&called)); - binding.Close(); + receiver.set_disconnect_handler( + base::BindLambdaForTesting([&] { called = true; })); + receiver.reset(); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(called); // We can also close the other end, and the error handler still won't be // called. - ptr.reset(); + remote.reset(); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(called); } -class ServiceImplWithBinding : public ServiceImpl { +class ServiceImplWithReceiver : public ServiceImpl { public: - ServiceImplWithBinding(bool* was_deleted, - const base::Closure& closure, - InterfaceRequest<sample::Service> request) + ServiceImplWithReceiver(bool* was_deleted, + base::OnceClosure closure, + PendingReceiver<sample::Service> receiver) : ServiceImpl(was_deleted), - binding_(this, std::move(request)), - closure_(closure) { - binding_.set_connection_error_handler( - base::Bind(&ServiceImplWithBinding::OnConnectionError, - base::Unretained(this))); + receiver_(this, std::move(receiver)), + closure_(std::move(closure)) { + receiver_.set_disconnect_handler(base::BindOnce( + &ServiceImplWithReceiver::OnDisconnect, base::Unretained(this))); } private: - ~ServiceImplWithBinding() override{ - closure_.Run(); - } + ~ServiceImplWithReceiver() override { std::move(closure_).Run(); } - void OnConnectionError() { delete this; } + void OnDisconnect() { delete this; } - Binding<sample::Service> binding_; - base::Closure closure_; + Receiver<sample::Service> receiver_; + base::OnceClosure closure_; - DISALLOW_COPY_AND_ASSIGN(ServiceImplWithBinding); + DISALLOW_COPY_AND_ASSIGN(ServiceImplWithReceiver); }; -// Tests that the binding may be deleted in the connection error handler. -TEST_P(BindingTest, SelfDeleteOnConnectionError) { +// Tests that the receiver may be deleted in its disconnect handler. +TEST_P(ReceiverTest, SelfDeleteOnDisconnect) { bool was_deleted = false; - sample::ServicePtr ptr; - // This should delete itself on connection error. + Remote<sample::Service> remote; base::RunLoop run_loop; - new ServiceImplWithBinding(&was_deleted, run_loop.QuitClosure(), - MakeRequest(&ptr)); - ptr.reset(); + // This will delete itself on disconnect. + new ServiceImplWithReceiver(&was_deleted, run_loop.QuitClosure(), + remote.BindNewPipeAndPassReceiver()); + remote.reset(); EXPECT_FALSE(was_deleted); run_loop.Run(); EXPECT_TRUE(was_deleted); } // Tests that explicitly calling Unbind followed by rebinding works. -TEST_P(BindingTest, Unbind) { +TEST_P(ReceiverTest, Unbind) { ServiceImpl impl; - sample::ServicePtr ptr; - Binding<sample::Service> binding(&impl, MakeRequest(&ptr)); + Remote<sample::Service> remote; + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); bool called = false; base::RunLoop run_loop; - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, - run_loop.QuitClosure())); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { + called = true; + run_loop.Quit(); + })); run_loop.Run(); EXPECT_TRUE(called); called = false; - auto request = binding.Unbind(); - EXPECT_FALSE(binding.is_bound()); - // All calls should fail when not bound... - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, - run_loop.QuitClosure())); + auto pending_receiver = receiver.Unbind(); + EXPECT_FALSE(receiver.is_bound()); + EXPECT_TRUE(pending_receiver); + + // All calls should be withheld when the receiver is not bound... + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { + called = true; + run_loop.Quit(); + })); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(called); called = false; - binding.Bind(std::move(request)); - EXPECT_TRUE(binding.is_bound()); - // ...and should succeed again when the rebound. + receiver.Bind(std::move(pending_receiver)); + EXPECT_TRUE(receiver.is_bound()); + EXPECT_FALSE(pending_receiver); + + // ...and calls should resume again when the receiver is + // rebound. base::RunLoop run_loop2; - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, - run_loop2.QuitClosure())); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { + called = true; + run_loop2.Quit(); + })); run_loop2.Run(); EXPECT_TRUE(called); } class IntegerAccessorImpl : public sample::IntegerAccessor { public: - IntegerAccessorImpl() {} - ~IntegerAccessorImpl() override {} + IntegerAccessorImpl() = default; + ~IntegerAccessorImpl() override = default; private: // sample::IntegerAccessor implementation. @@ -251,80 +262,86 @@ DISALLOW_COPY_AND_ASSIGN(IntegerAccessorImpl); }; -TEST_P(BindingTest, PauseResume) { +TEST_P(ReceiverTest, PauseResume) { bool called = false; base::RunLoop run_loop; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); + Remote<sample::Service> remote; ServiceImpl impl; - Binding<sample::Service> binding(&impl, std::move(request)); - binding.PauseIncomingMethodCallProcessing(); - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, - run_loop.QuitClosure())); + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); + receiver.Pause(); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { + called = true; + run_loop.Quit(); + })); + EXPECT_FALSE(called); base::RunLoop().RunUntilIdle(); - // Frobinate() should not be called as the binding is paused. + // Frobinate() should not be called as the receiver is paused. EXPECT_FALSE(called); - // Resume the binding, which should trigger processing. - binding.ResumeIncomingMethodCallProcessing(); + // Resume the receiver, which should trigger processing. + receiver.Resume(); run_loop.Run(); EXPECT_TRUE(called); } -// Verifies the connection error handler is not run while a binding is paused. -TEST_P(BindingTest, ErrorHandleNotRunWhilePaused) { +// Verifies the disconnect handler is not run while a receiver is paused. +TEST_P(ReceiverTest, ErrorHandleNotRunWhilePaused) { bool called = false; base::RunLoop run_loop; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); + Remote<sample::Service> remote; ServiceImpl impl; - Binding<sample::Service> binding(&impl, std::move(request)); - binding.set_connection_error_handler( - SetFlagAndRunClosure(&called, run_loop.QuitClosure())); - binding.PauseIncomingMethodCallProcessing(); + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); + receiver.set_disconnect_handler(base::BindLambdaForTesting([&] { + called = true; + run_loop.Quit(); + })); + receiver.Pause(); - ptr.reset(); + remote.reset(); base::RunLoop().RunUntilIdle(); - // The connection error handle should not be called as the binding is paused. + // The disconnect handler should not be called as the receiver is paused. EXPECT_FALSE(called); - // Resume the binding, which should trigger the error handler. - binding.ResumeIncomingMethodCallProcessing(); + // Resume the receiver, which should trigger the disconnect handler. + receiver.Resume(); run_loop.Run(); EXPECT_TRUE(called); } class PingServiceImpl : public test::PingService { public: - PingServiceImpl() {} - ~PingServiceImpl() override {} + PingServiceImpl() = default; + ~PingServiceImpl() override = default; // test::PingService: void Ping(PingCallback callback) override { - if (!ping_handler_.is_null()) + if (ping_handler_) ping_handler_.Run(); std::move(callback).Run(); } - void set_ping_handler(const base::Closure& handler) { - ping_handler_ = handler; + void set_ping_handler(base::RepeatingClosure handler) { + ping_handler_ = std::move(handler); } private: - base::Closure ping_handler_; + base::RepeatingClosure ping_handler_; DISALLOW_COPY_AND_ASSIGN(PingServiceImpl); }; class CallbackFilter : public MessageReceiver { public: - explicit CallbackFilter(const base::Closure& callback) + explicit CallbackFilter(const base::RepeatingClosure& callback) : callback_(callback) {} ~CallbackFilter() override {} - static std::unique_ptr<CallbackFilter> Wrap(const base::Closure& callback) { + static std::unique_ptr<CallbackFilter> Wrap( + const base::RepeatingClosure& callback) { return std::make_unique<CallbackFilter>(callback); } @@ -335,33 +352,37 @@ } private: - const base::Closure callback_; + const base::RepeatingClosure callback_; }; // Verifies that message filters are notified in the order they were added and // are always notified before a message is dispatched. -TEST_P(BindingTest, MessageFilter) { - test::PingServicePtr ptr; +TEST_P(ReceiverTest, MessageFilter) { + Remote<test::PingService> remote; PingServiceImpl impl; - mojo::Binding<test::PingService> binding(&impl, MakeRequest(&ptr)); + Receiver<test::PingService> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); int status = 0; - auto handler_helper = [] (int* status, int expected_status, int new_status) { - EXPECT_EQ(expected_status, *status); - *status = new_status; - }; - auto create_handler = [&] (int expected_status, int new_status) { - return base::Bind(handler_helper, &status, expected_status, new_status); - }; + receiver.AddFilter(CallbackFilter::Wrap(base::BindLambdaForTesting([&] { + EXPECT_EQ(0, status); + status = 1; + }))); - binding.AddFilter(CallbackFilter::Wrap(create_handler(0, 1))); - binding.AddFilter(CallbackFilter::Wrap(create_handler(1, 2))); - impl.set_ping_handler(create_handler(2, 3)); + receiver.AddFilter(CallbackFilter::Wrap(base::BindLambdaForTesting([&] { + EXPECT_EQ(1, status); + status = 2; + }))); + + impl.set_ping_handler(base::BindLambdaForTesting([&] { + EXPECT_EQ(2, status); + status = 3; + })); for (int i = 0; i < 10; ++i) { status = 0; base::RunLoop loop; - ptr->Ping(loop.QuitClosure()); + remote->Ping(loop.QuitClosure()); loop.Run(); EXPECT_EQ(3, status); } @@ -371,58 +392,57 @@ FAIL() << "Unexpected connection error"; } -TEST_P(BindingTest, FlushForTesting) { +TEST_P(ReceiverTest, FlushForTesting) { bool called = false; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); + Remote<sample::Service> remote; ServiceImpl impl; - Binding<sample::Service> binding(&impl, std::move(request)); - binding.set_connection_error_handler(base::Bind(&Fail)); + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); + receiver.set_disconnect_handler(base::BindOnce(&Fail)); - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called)); + remote->Frobinate( + nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { called = true; })); EXPECT_FALSE(called); - // Because the flush is sent from the binding, it only guarantees that the - // request has been received, not the response. The second flush waits for the - // response to be received. - binding.FlushForTesting(); - binding.FlushForTesting(); + // Because the flush is sent from the receiver, it only guarantees that the + // request has been received, not the response. The second flush waits for + // the response to be received. + receiver.FlushForTesting(); + receiver.FlushForTesting(); EXPECT_TRUE(called); } -TEST_P(BindingTest, FlushForTestingWithClosedPeer) { +TEST_P(ReceiverTest, FlushForTestingWithClosedPeer) { bool called = false; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); + Remote<sample::Service> remote; ServiceImpl impl; - Binding<sample::Service> binding(&impl, std::move(request)); - binding.set_connection_error_handler(SetFlagAndRunClosure(&called)); - ptr.reset(); + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); + receiver.set_disconnect_handler( + base::BindLambdaForTesting([&] { called = true; })); + remote.reset(); EXPECT_FALSE(called); - binding.FlushForTesting(); + receiver.FlushForTesting(); EXPECT_TRUE(called); - binding.FlushForTesting(); + receiver.FlushForTesting(); } -TEST_P(BindingTest, ConnectionErrorWithReason) { - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); +TEST_P(ReceiverTest, DisconnectWithReason) { + Remote<sample::Service> remote; ServiceImpl impl; - Binding<sample::Service> binding(&impl, std::move(request)); + Receiver<sample::Service> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); base::RunLoop run_loop; - binding.set_connection_error_with_reason_handler(base::Bind( - [](const base::Closure& quit_closure, uint32_t custom_reason, - const std::string& description) { + receiver.set_disconnect_with_reason_handler(base::BindLambdaForTesting( + [&](uint32_t custom_reason, const std::string& description) { EXPECT_EQ(1234u, custom_reason); EXPECT_EQ("hello", description); - quit_closure.Run(); - }, - run_loop.QuitClosure())); + run_loop.Quit(); + })); - ptr.ResetWithReason(1234u, "hello"); - + remote.ResetWithReason(1234u, "hello"); run_loop.Run(); } @@ -435,90 +455,80 @@ }; template <typename T> -using WeakBinding = Binding<T, WeakPtrImplRefTraits<T>>; +using WeakReceiver = Receiver<T, WeakPtrImplRefTraits<T>>; -TEST_P(BindingTest, CustomImplPointerType) { +TEST_P(ReceiverTest, CustomImplPointerType) { PingServiceImpl impl; base::WeakPtrFactory<test::PingService> weak_factory(&impl); - test::PingServicePtr proxy; - WeakBinding<test::PingService> binding(weak_factory.GetWeakPtr(), - MakeRequest(&proxy)); + Remote<test::PingService> remote; + WeakReceiver<test::PingService> receiver(weak_factory.GetWeakPtr(), + remote.BindNewPipeAndPassReceiver()); { - // Ensure the binding is functioning. + // Ensure the receiver is functioning. base::RunLoop run_loop; - proxy->Ping(run_loop.QuitClosure()); + remote->Ping(run_loop.QuitClosure()); run_loop.Run(); } { // Attempt to dispatch another message after the WeakPtr is invalidated. - base::Closure assert_not_reached = base::Bind([] { NOTREACHED(); }); - impl.set_ping_handler(assert_not_reached); - proxy->Ping(assert_not_reached); + impl.set_ping_handler(base::BindRepeating([] { NOTREACHED(); })); + remote->Ping(base::BindOnce([] { NOTREACHED(); })); - // The binding will close its end of the pipe which will trigger a - // connection error on |proxy|. + // The receiver will close its end of the pipe which will trigger a + // disconnect on |remote|. base::RunLoop run_loop; - proxy.set_connection_error_handler(run_loop.QuitClosure()); + remote.set_disconnect_handler(run_loop.QuitClosure()); weak_factory.InvalidateWeakPtrs(); run_loop.Run(); } } -TEST_P(BindingTest, ReportBadMessage) { +TEST_P(ReceiverTest, ReportBadMessage) { bool called = false; - test::PingServicePtr ptr; - auto request = MakeRequest(&ptr); + Remote<test::PingService> remote; + auto pending_receiver = remote.BindNewPipeAndPassReceiver(); base::RunLoop run_loop; - ptr.set_connection_error_handler( - SetFlagAndRunClosure(&called, run_loop.QuitClosure())); + remote.set_disconnect_handler(base::BindLambdaForTesting([&] { + called = true; + run_loop.Quit(); + })); PingServiceImpl impl; - Binding<test::PingService> binding(&impl, std::move(request)); - impl.set_ping_handler(base::Bind( - [](Binding<test::PingService>* binding) { - binding->ReportBadMessage("received bad message"); - }, - &binding)); + Receiver<test::PingService> receiver(&impl, std::move(pending_receiver)); + impl.set_ping_handler(base::BindLambdaForTesting( + [&] { receiver.ReportBadMessage("received bad message"); })); std::string received_error; - core::SetDefaultProcessErrorCallback( - base::Bind([](std::string* out_error, - const std::string& error) { *out_error = error; }, - &received_error)); + core::SetDefaultProcessErrorCallback(base::BindLambdaForTesting( + [&](const std::string& error) { received_error = error; })); - ptr->Ping(base::Bind([] {})); + remote->Ping(base::DoNothing()); EXPECT_FALSE(called); run_loop.Run(); EXPECT_TRUE(called); EXPECT_EQ("received bad message", received_error); - core::SetDefaultProcessErrorCallback(mojo::core::ProcessErrorCallback()); + core::SetDefaultProcessErrorCallback(base::NullCallback()); } -TEST_P(BindingTest, GetBadMessageCallback) { - test::PingServicePtr ptr; - auto request = MakeRequest(&ptr); +TEST_P(ReceiverTest, GetBadMessageCallback) { + Remote<test::PingService> remote; base::RunLoop run_loop; PingServiceImpl impl; ReportBadMessageCallback bad_message_callback; std::string received_error; - core::SetDefaultProcessErrorCallback( - base::Bind([](std::string* out_error, - const std::string& error) { *out_error = error; }, - &received_error)); + core::SetDefaultProcessErrorCallback(base::BindLambdaForTesting( + [&](const std::string& error) { received_error = error; })); { - Binding<test::PingService> binding(&impl, std::move(request)); - impl.set_ping_handler(base::Bind( - [](Binding<test::PingService>* binding, - ReportBadMessageCallback* out_callback) { - *out_callback = binding->GetBadMessageCallback(); - }, - &binding, &bad_message_callback)); - ptr->Ping(run_loop.QuitClosure()); + Receiver<test::PingService> receiver(&impl, + remote.BindNewPipeAndPassReceiver()); + impl.set_ping_handler(base::BindLambdaForTesting( + [&] { bad_message_callback = receiver.GetBadMessageCallback(); })); + remote->Ping(run_loop.QuitClosure()); run_loop.Run(); EXPECT_TRUE(received_error.empty()); EXPECT_TRUE(bad_message_callback); @@ -527,133 +537,78 @@ std::move(bad_message_callback).Run("delayed bad message"); EXPECT_EQ("delayed bad message", received_error); - core::SetDefaultProcessErrorCallback(mojo::core::ProcessErrorCallback()); + core::SetDefaultProcessErrorCallback(base::NullCallback()); } -// StrongBindingTest ----------------------------------------------------------- +TEST_P(ReceiverTest, InvalidPendingReceivers) { + PendingReceiver<sample::Service> uninitialized_pending; + EXPECT_FALSE(uninitialized_pending); + + // A "null" receiver is just a generic helper for an uninitialized + // PendingReceiver. Verify that it's equivalent to above. + PendingReceiver<sample::Service> null_pending{NullReceiver()}; + EXPECT_FALSE(null_pending); +} using StrongBindingTest = BindingsTestBase; -// Tests that destroying a mojo::StrongBinding closes the bound message pipe -// handle but does *not* destroy the implementation object. -TEST_P(StrongBindingTest, DestroyClosesMessagePipe) { +TEST_P(StrongBindingTest, CloseDestroysImplAndPipe) { base::RunLoop run_loop; - bool encountered_error = false; + bool disconnected = false; bool was_deleted = false; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); - ptr.set_connection_error_handler( - SetFlagAndRunClosure(&encountered_error, run_loop.QuitClosure())); + Remote<sample::Service> remote; + auto receiver = remote.BindNewPipeAndPassReceiver(); + remote.set_disconnect_handler(base::BindLambdaForTesting([&] { + disconnected = true; + run_loop.Quit(); + })); bool called = false; base::RunLoop run_loop2; - auto binding = MakeStrongBinding(std::make_unique<ServiceImpl>(&was_deleted), - std::move(request)); - ptr->Frobinate( - nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called, run_loop2.QuitClosure())); + auto binding = MakeStrongBinding<sample::Service>( + std::make_unique<ServiceImpl>(&was_deleted), std::move(receiver)); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int32_t) { + called = true; + run_loop2.Quit(); + })); run_loop2.Run(); EXPECT_TRUE(called); - EXPECT_FALSE(encountered_error); + EXPECT_FALSE(disconnected); binding->Close(); // Now that the StrongBinding is closed we should detect an error on the other // end of the pipe. run_loop.Run(); - EXPECT_TRUE(encountered_error); + EXPECT_TRUE(disconnected); // Destroying the StrongBinding also destroys the impl. ASSERT_TRUE(was_deleted); } -// Tests the typical case, where the implementation object owns the -// StrongBinding (and should be destroyed on connection error). -TEST_P(StrongBindingTest, ConnectionErrorDestroysImpl) { - sample::ServicePtr ptr; +TEST_P(StrongBindingTest, DisconnectDestroysImplAndPipe) { + Remote<sample::Service> remote; bool was_deleted = false; - // Will delete itself. base::RunLoop run_loop; - new ServiceImplWithBinding(&was_deleted, run_loop.QuitClosure(), - MakeRequest(&ptr)); + + MakeStrongBinding<sample::Service>( + std::make_unique<ServiceImpl>(base::BindLambdaForTesting([&] { + was_deleted = true; + run_loop.Quit(); + })), + remote.BindNewPipeAndPassReceiver()); base::RunLoop().RunUntilIdle(); EXPECT_FALSE(was_deleted); - ptr.reset(); + remote.reset(); EXPECT_FALSE(was_deleted); run_loop.Run(); EXPECT_TRUE(was_deleted); } -TEST_P(StrongBindingTest, FlushForTesting) { - bool called = false; - bool was_deleted = false; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); - auto binding = MakeStrongBinding(std::make_unique<ServiceImpl>(&was_deleted), - std::move(request)); - binding->set_connection_error_handler(base::Bind(&Fail)); - - ptr->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - SetFlagAndRunClosure<int32_t>(&called)); - EXPECT_FALSE(called); - // Because the flush is sent from the binding, it only guarantees that the - // request has been received, not the response. The second flush waits for the - // response to be received. - ASSERT_TRUE(binding); - binding->FlushForTesting(); - ASSERT_TRUE(binding); - binding->FlushForTesting(); - EXPECT_TRUE(called); - EXPECT_FALSE(was_deleted); - ptr.reset(); - ASSERT_TRUE(binding); - binding->set_connection_error_handler(base::Closure()); - binding->FlushForTesting(); - EXPECT_TRUE(was_deleted); -} - -TEST_P(StrongBindingTest, FlushForTestingWithClosedPeer) { - bool called = false; - bool was_deleted = false; - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); - auto binding = MakeStrongBinding(std::make_unique<ServiceImpl>(&was_deleted), - std::move(request)); - binding->set_connection_error_handler(SetFlagAndRunClosure(&called)); - ptr.reset(); - - EXPECT_FALSE(called); - EXPECT_FALSE(was_deleted); - ASSERT_TRUE(binding); - binding->FlushForTesting(); - EXPECT_TRUE(called); - EXPECT_TRUE(was_deleted); - ASSERT_FALSE(binding); -} - -TEST_P(StrongBindingTest, ConnectionErrorWithReason) { - sample::ServicePtr ptr; - auto request = MakeRequest(&ptr); - auto binding = - MakeStrongBinding(std::make_unique<ServiceImpl>(), std::move(request)); - base::RunLoop run_loop; - binding->set_connection_error_with_reason_handler(base::Bind( - [](const base::Closure& quit_closure, uint32_t custom_reason, - const std::string& description) { - EXPECT_EQ(5678u, custom_reason); - EXPECT_EQ("hello", description); - quit_closure.Run(); - }, - run_loop.QuitClosure())); - - ptr.ResetWithReason(5678u, "hello"); - - run_loop.Run(); -} - -INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(BindingTest); +INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(ReceiverTest); INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(StrongBindingTest); } // namespace -} // mojo +} // namespace mojo
diff --git a/mojo/public/cpp/bindings/tests/remote_unittest.cc b/mojo/public/cpp/bindings/tests/remote_unittest.cc index 4fdaeb3..1d82458 100644 --- a/mojo/public/cpp/bindings/tests/remote_unittest.cc +++ b/mojo/public/cpp/bindings/tests/remote_unittest.cc
@@ -1,4 +1,3 @@ - // Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -14,14 +13,17 @@ #include "base/run_loop.h" #include "base/sequenced_task_runner.h" #include "base/task/post_task.h" +#include "base/test/bind_test_util.h" #include "base/test/scoped_task_environment.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" -#include "mojo/public/cpp/bindings/binding.h" -#include "mojo/public/cpp/bindings/strong_binding.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" +#include "mojo/public/cpp/bindings/shared_remote.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" -#include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h" +#include "mojo/public/cpp/bindings/unique_receiver_set.h" +#include "mojo/public/cpp/system/wait.h" #include "mojo/public/interfaces/bindings/tests/math_calculator.mojom.h" #include "mojo/public/interfaces/bindings/tests/sample_interfaces.mojom.h" #include "mojo/public/interfaces/bindings/tests/sample_service.mojom.h" @@ -34,9 +36,9 @@ class MathCalculatorImpl : public math::Calculator { public: - explicit MathCalculatorImpl(InterfaceRequest<math::Calculator> request) - : total_(0.0), binding_(this, std::move(request)) {} - ~MathCalculatorImpl() override {} + explicit MathCalculatorImpl(PendingReceiver<math::Calculator> receiver) + : total_(0.0), receiver_(this, std::move(receiver)) {} + ~MathCalculatorImpl() override = default; void Clear(ClearCallback callback) override { total_ = 0.0; @@ -53,78 +55,75 @@ std::move(callback).Run(total_); } - Binding<math::Calculator>* binding() { return &binding_; } + Receiver<math::Calculator>& receiver() { return receiver_; } private: double total_; - Binding<math::Calculator> binding_; + Receiver<math::Calculator> receiver_; }; class MathCalculatorUI { public: - explicit MathCalculatorUI(math::CalculatorPtr calculator) - : calculator_(std::move(calculator)), - output_(0.0) {} + explicit MathCalculatorUI(PendingRemote<math::Calculator> calculator) + : calculator_(std::move(calculator)), output_(0.0) {} - bool encountered_error() const { return calculator_.encountered_error(); } - void set_connection_error_handler(const base::Closure& closure) { - calculator_.set_connection_error_handler(closure); + bool is_connected() const { return calculator_.is_connected(); } + void set_disconnect_handler(base::OnceClosure closure) { + calculator_.set_disconnect_handler(std::move(closure)); } - void Add(double value, const base::Closure& closure) { + void Add(double value, base::OnceClosure closure) { calculator_->Add( - value, - base::Bind(&MathCalculatorUI::Output, base::Unretained(this), closure)); + value, base::BindOnce(&MathCalculatorUI::Output, base::Unretained(this), + std::move(closure))); } - void Multiply(double value, const base::Closure& closure) { + void Multiply(double value, base::OnceClosure closure) { calculator_->Multiply( - value, - base::Bind(&MathCalculatorUI::Output, base::Unretained(this), closure)); + value, base::BindOnce(&MathCalculatorUI::Output, base::Unretained(this), + std::move(closure))); } double GetOutput() const { return output_; } - math::CalculatorPtr& GetInterfacePtr() { return calculator_; } + Remote<math::Calculator>& remote() { return calculator_; } private: - void Output(const base::Closure& closure, double output) { + void Output(base::OnceClosure closure, double output) { output_ = output; - if (!closure.is_null()) - closure.Run(); + if (closure) + std::move(closure).Run(); } - math::CalculatorPtr calculator_; + Remote<math::Calculator> calculator_; double output_; - base::Closure closure_; }; class SelfDestructingMathCalculatorUI { public: - explicit SelfDestructingMathCalculatorUI(math::CalculatorPtr calculator) + explicit SelfDestructingMathCalculatorUI( + PendingRemote<math::Calculator> calculator) : calculator_(std::move(calculator)), nesting_level_(0) { ++num_instances_; } - void BeginTest(bool nested, const base::Closure& closure) { + void BeginTest(bool nested, base::OnceClosure closure) { nesting_level_ = nested ? 2 : 1; calculator_->Add( - 1.0, - base::Bind(&SelfDestructingMathCalculatorUI::Output, - base::Unretained(this), closure)); + 1.0, base::BindOnce(&SelfDestructingMathCalculatorUI::Output, + base::Unretained(this), std::move(closure))); } static int num_instances() { return num_instances_; } - void Output(const base::Closure& closure, double value) { + void Output(base::OnceClosure closure, double value) { if (--nesting_level_ > 0) { // Add some more and wait for re-entrant call to Output! calculator_->Add( - 1.0, - base::Bind(&SelfDestructingMathCalculatorUI::Output, - base::Unretained(this), closure)); + 1.0, base::BindOnce(&SelfDestructingMathCalculatorUI::Output, + base::Unretained(this), std::move(closure))); } else { - closure.Run(); + std::move(closure).Run(); delete this; } } @@ -132,7 +131,7 @@ private: ~SelfDestructingMathCalculatorUI() { --num_instances_; } - math::CalculatorPtr calculator_; + Remote<math::Calculator> calculator_; int nesting_level_; static int num_instances_; }; @@ -142,43 +141,43 @@ class ReentrantServiceImpl : public sample::Service { public: - ~ReentrantServiceImpl() override {} + ~ReentrantServiceImpl() override = default; - explicit ReentrantServiceImpl(InterfaceRequest<sample::Service> request) + explicit ReentrantServiceImpl(PendingReceiver<sample::Service> receiver) : call_depth_(0), max_call_depth_(0), - binding_(this, std::move(request)) {} + receiver_(this, std::move(receiver)) {} int max_call_depth() { return max_call_depth_; } void Frobinate(sample::FooPtr foo, sample::Service::BazOptions baz, - sample::PortPtr port, + PendingRemote<sample::Port> port, sample::Service::FrobinateCallback callback) override { max_call_depth_ = std::max(++call_depth_, max_call_depth_); if (call_depth_ == 1) { - EXPECT_TRUE(binding_.WaitForIncomingMethodCall()); + EXPECT_TRUE(receiver_.WaitForIncomingCall()); } call_depth_--; std::move(callback).Run(5); } - void GetPort(mojo::InterfaceRequest<sample::Port> port) override {} + void GetPort(PendingReceiver<sample::Port> receiver) override {} private: int call_depth_; int max_call_depth_; - Binding<sample::Service> binding_; + Receiver<sample::Service> receiver_; }; class IntegerAccessorImpl : public sample::IntegerAccessor { public: IntegerAccessorImpl() : integer_(0) {} - ~IntegerAccessorImpl() override {} + ~IntegerAccessorImpl() override = default; int64_t integer() const { return integer_; } - void set_closure(const base::Closure& closure) { closure_ = closure; } + void set_closure(base::OnceClosure closure) { closure_ = std::move(closure); } private: // sample::IntegerAccessor implementation. @@ -187,69 +186,51 @@ } void SetInteger(int64_t data, sample::Enum type) override { integer_ = data; - if (!closure_.is_null()) { - closure_.Run(); - closure_.Reset(); - } + if (closure_) + std::move(closure_).Run(); } int64_t integer_; - base::Closure closure_; + base::OnceClosure closure_; }; -class InterfacePtrTest : public BindingsTestBase { +class RemoteTest : public BindingsTestBase { public: - InterfacePtrTest() {} - ~InterfacePtrTest() override { base::RunLoop().RunUntilIdle(); } + RemoteTest() = default; + ~RemoteTest() override { base::RunLoop().RunUntilIdle(); } void PumpMessages() { base::RunLoop().RunUntilIdle(); } }; -void SetFlagAndRunClosure(bool* flag, const base::Closure& closure) { - *flag = true; - closure.Run(); +TEST_P(RemoteTest, IsBound) { + Remote<math::Calculator> calc; + EXPECT_FALSE(calc); + MathCalculatorImpl calc_impl(calc.BindNewPipeAndPassReceiver()); + EXPECT_TRUE(calc); } -void IgnoreValueAndRunClosure(const base::Closure& closure, int32_t value) { - closure.Run(); -} - -void ExpectValueAndRunClosure(uint32_t expected_value, - const base::Closure& closure, - uint32_t value) { - EXPECT_EQ(expected_value, value); - closure.Run(); -} - -TEST_P(InterfacePtrTest, IsBound) { - math::CalculatorPtr calc; - EXPECT_FALSE(calc.is_bound()); - MathCalculatorImpl calc_impl(MakeRequest(&calc)); - EXPECT_TRUE(calc.is_bound()); -} - -class EndToEndInterfacePtrTest : public InterfacePtrTest { +class EndToEndRemoteTest : public RemoteTest { public: void RunTest(const scoped_refptr<base::SequencedTaskRunner> runner) { base::RunLoop run_loop; done_closure_ = run_loop.QuitClosure(); done_runner_ = base::ThreadTaskRunnerHandle::Get(); - runner->PostTask(FROM_HERE, - base::BindOnce(&EndToEndInterfacePtrTest::RunTestImpl, - base::Unretained(this))); + runner->PostTask(FROM_HERE, base::BindOnce(&EndToEndRemoteTest::RunTestImpl, + base::Unretained(this))); run_loop.Run(); } private: void RunTestImpl() { - math::CalculatorPtr calc; - calc_impl_ = std::make_unique<MathCalculatorImpl>(MakeRequest(&calc)); + PendingRemote<math::Calculator> calc; + calc_impl_ = std::make_unique<MathCalculatorImpl>( + calc.InitWithNewPipeAndPassReceiver()); calculator_ui_ = std::make_unique<MathCalculatorUI>(std::move(calc)); - calculator_ui_->Add(2.0, base::Bind(&EndToEndInterfacePtrTest::AddDone, - base::Unretained(this))); + calculator_ui_->Add(2.0, base::BindOnce(&EndToEndRemoteTest::AddDone, + base::Unretained(this))); calculator_ui_->Multiply(5.0, - base::Bind(&EndToEndInterfacePtrTest::MultiplyDone, - base::Unretained(this))); + base::BindOnce(&EndToEndRemoteTest::MultiplyDone, + base::Unretained(this))); EXPECT_EQ(0.0, calculator_ui_->GetOutput()); } @@ -262,24 +243,24 @@ done_runner_->PostTask(FROM_HERE, std::move(done_closure_)); } - base::Closure done_closure_; + base::OnceClosure done_closure_; scoped_refptr<base::SequencedTaskRunner> done_runner_; std::unique_ptr<MathCalculatorUI> calculator_ui_; std::unique_ptr<MathCalculatorImpl> calc_impl_; }; -TEST_P(EndToEndInterfacePtrTest, EndToEnd) { +TEST_P(EndToEndRemoteTest, EndToEnd) { RunTest(base::ThreadTaskRunnerHandle::Get()); } -TEST_P(EndToEndInterfacePtrTest, EndToEndOnSequence) { +TEST_P(EndToEndRemoteTest, EndToEndOnSequence) { RunTest(base::CreateSequencedTaskRunnerWithTraits({})); } -TEST_P(InterfacePtrTest, Movable) { - math::CalculatorPtr a; - math::CalculatorPtr b; - MathCalculatorImpl calc_impl(MakeRequest(&b)); +TEST_P(RemoteTest, Movable) { + Remote<math::Calculator> a; + Remote<math::Calculator> b; + MathCalculatorImpl calc_impl(b.BindNewPipeAndPassReceiver()); EXPECT_TRUE(!a); EXPECT_FALSE(!b); @@ -290,114 +271,112 @@ EXPECT_TRUE(!b); } -TEST_P(InterfacePtrTest, Resettable) { - math::CalculatorPtr a; +TEST_P(RemoteTest, Resettable) { + Remote<math::Calculator> a; - EXPECT_TRUE(!a); + EXPECT_FALSE(a); MessagePipe pipe; // Save this so we can test it later. Handle handle = pipe.handle0.get(); - a = MakeProxy( - InterfacePtrInfo<math::Calculator>(std::move(pipe.handle0), 0u)); + a.Bind(PendingRemote<math::Calculator>(std::move(pipe.handle0), 0u)); - EXPECT_FALSE(!a); + EXPECT_TRUE(a); a.reset(); - EXPECT_TRUE(!a); - EXPECT_FALSE(a.internal_state()->is_bound()); + EXPECT_FALSE(a); - // Test that handle was closed. - EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, CloseRaw(handle)); + // Test that handle was closed by waiting for its peer to signal. + Wait(pipe.handle1.get(), MOJO_HANDLE_SIGNAL_PEER_CLOSED); } -TEST_P(InterfacePtrTest, BindInvalidHandle) { - math::CalculatorPtr ptr; - EXPECT_FALSE(ptr.get()); - EXPECT_FALSE(ptr); +TEST_P(RemoteTest, InvalidPendingRemotes) { + PendingRemote<math::Calculator> invalid_remote; + EXPECT_FALSE(invalid_remote); - ptr.Bind(InterfacePtrInfo<math::Calculator>()); - EXPECT_FALSE(ptr.get()); - EXPECT_FALSE(ptr); + // A "null" remote is just a generic helper for an uninitialized + // PendingRemote. Verify that it's equivalent to above. + PendingRemote<math::Calculator> null_remote{NullRemote()}; + EXPECT_FALSE(null_remote); } -TEST_P(InterfacePtrTest, EncounteredError) { - math::CalculatorPtr proxy; - MathCalculatorImpl calc_impl(MakeRequest(&proxy)); +TEST_P(RemoteTest, IsConnected) { + PendingRemote<math::Calculator> remote; + MathCalculatorImpl calc_impl(remote.InitWithNewPipeAndPassReceiver()); - MathCalculatorUI calculator_ui(std::move(proxy)); + MathCalculatorUI calculator_ui(std::move(remote)); base::RunLoop run_loop; calculator_ui.Add(2.0, run_loop.QuitClosure()); run_loop.Run(); EXPECT_EQ(2.0, calculator_ui.GetOutput()); - EXPECT_FALSE(calculator_ui.encountered_error()); + EXPECT_TRUE(calculator_ui.is_connected()); calculator_ui.Multiply(5.0, base::Closure()); - EXPECT_FALSE(calculator_ui.encountered_error()); + EXPECT_TRUE(calculator_ui.is_connected()); - // Close the server. - calc_impl.binding()->Close(); + calc_impl.receiver().reset(); + + base::RunLoop run_loop2; + calculator_ui.set_disconnect_handler(run_loop2.QuitClosure()); // The state change isn't picked up locally yet. - base::RunLoop run_loop2; - calculator_ui.set_connection_error_handler(run_loop2.QuitClosure()); - EXPECT_FALSE(calculator_ui.encountered_error()); + EXPECT_TRUE(calculator_ui.is_connected()); run_loop2.Run(); - // OK, now we see the error. - EXPECT_TRUE(calculator_ui.encountered_error()); + // OK, now we see the disconnection. + EXPECT_FALSE(calculator_ui.is_connected()); } -TEST_P(InterfacePtrTest, EncounteredErrorCallback) { - math::CalculatorPtr proxy; - MathCalculatorImpl calc_impl(MakeRequest(&proxy)); +TEST_P(RemoteTest, DisconnectCallback) { + PendingRemote<math::Calculator> remote; + MathCalculatorImpl calc_impl(remote.InitWithNewPipeAndPassReceiver()); - bool encountered_error = false; + MathCalculatorUI calculator_ui(std::move(remote)); + + bool connected = true; base::RunLoop run_loop; - proxy.set_connection_error_handler( - base::Bind(&SetFlagAndRunClosure, &encountered_error, - run_loop.QuitClosure())); - - MathCalculatorUI calculator_ui(std::move(proxy)); + calculator_ui.remote().set_disconnect_handler(base::BindLambdaForTesting([&] { + connected = false; + run_loop.Quit(); + })); base::RunLoop run_loop2; calculator_ui.Add(2.0, run_loop2.QuitClosure()); run_loop2.Run(); EXPECT_EQ(2.0, calculator_ui.GetOutput()); - EXPECT_FALSE(calculator_ui.encountered_error()); + EXPECT_TRUE(calculator_ui.is_connected()); calculator_ui.Multiply(5.0, base::Closure()); - EXPECT_FALSE(calculator_ui.encountered_error()); + EXPECT_TRUE(calculator_ui.is_connected()); - // Close the server. - calc_impl.binding()->Close(); + calc_impl.receiver().reset(); // The state change isn't picked up locally yet. - EXPECT_FALSE(calculator_ui.encountered_error()); + EXPECT_TRUE(calculator_ui.is_connected()); run_loop.Run(); - // OK, now we see the error. - EXPECT_TRUE(calculator_ui.encountered_error()); + // OK, now we see the disconnection. + EXPECT_FALSE(calculator_ui.is_connected()); // We should have also been able to observe the error through the error // handler. - EXPECT_TRUE(encountered_error); + EXPECT_FALSE(connected); } -TEST_P(InterfacePtrTest, DestroyInterfacePtrOnMethodResponse) { - math::CalculatorPtr proxy; - MathCalculatorImpl calc_impl(MakeRequest(&proxy)); +TEST_P(RemoteTest, DestroyRemoteOnMethodResponse) { + PendingRemote<math::Calculator> remote; + MathCalculatorImpl calc_impl(remote.InitWithNewPipeAndPassReceiver()); EXPECT_EQ(0, SelfDestructingMathCalculatorUI::num_instances()); SelfDestructingMathCalculatorUI* impl = - new SelfDestructingMathCalculatorUI(std::move(proxy)); + new SelfDestructingMathCalculatorUI(std::move(remote)); base::RunLoop run_loop; impl->BeginTest(false, run_loop.QuitClosure()); run_loop.Run(); @@ -405,14 +384,14 @@ EXPECT_EQ(0, SelfDestructingMathCalculatorUI::num_instances()); } -TEST_P(InterfacePtrTest, NestedDestroyInterfacePtrOnMethodResponse) { - math::CalculatorPtr proxy; - MathCalculatorImpl calc_impl(MakeRequest(&proxy)); +TEST_P(RemoteTest, NestedDestroyRemoteOnMethodResponse) { + PendingRemote<math::Calculator> remote; + MathCalculatorImpl calc_impl(remote.InitWithNewPipeAndPassReceiver()); EXPECT_EQ(0, SelfDestructingMathCalculatorUI::num_instances()); SelfDestructingMathCalculatorUI* impl = - new SelfDestructingMathCalculatorUI(std::move(proxy)); + new SelfDestructingMathCalculatorUI(std::move(remote)); base::RunLoop run_loop; impl->BeginTest(true, run_loop.QuitClosure()); run_loop.Run(); @@ -420,17 +399,15 @@ EXPECT_EQ(0, SelfDestructingMathCalculatorUI::num_instances()); } -TEST_P(InterfacePtrTest, ReentrantWaitForIncomingMethodCall) { - sample::ServicePtr proxy; - ReentrantServiceImpl impl(MakeRequest(&proxy)); +TEST_P(RemoteTest, ReentrantWaitForIncomingCall) { + Remote<sample::Service> remote; + ReentrantServiceImpl impl(remote.BindNewPipeAndPassReceiver()); base::RunLoop run_loop, run_loop2; - proxy->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - base::Bind(&IgnoreValueAndRunClosure, - run_loop.QuitClosure())); - proxy->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, nullptr, - base::Bind(&IgnoreValueAndRunClosure, - run_loop2.QuitClosure())); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int) { run_loop.Quit(); })); + remote->Frobinate(nullptr, sample::Service::BazOptions::REGULAR, NullRemote(), + base::BindLambdaForTesting([&](int) { run_loop2.Quit(); })); run_loop.Run(); run_loop2.Run(); @@ -438,55 +415,59 @@ EXPECT_EQ(2, impl.max_call_depth()); } -TEST_P(InterfacePtrTest, QueryVersion) { +TEST_P(RemoteTest, QueryVersion) { IntegerAccessorImpl impl; - sample::IntegerAccessorPtr ptr; - Binding<sample::IntegerAccessor> binding(&impl, MakeRequest(&ptr)); + Remote<sample::IntegerAccessor> remote; + Receiver<sample::IntegerAccessor> receiver( + &impl, remote.BindNewPipeAndPassReceiver()); - EXPECT_EQ(0u, ptr.version()); + EXPECT_EQ(0u, remote.version()); base::RunLoop run_loop; - ptr.QueryVersion(base::Bind(&ExpectValueAndRunClosure, 3u, - run_loop.QuitClosure())); + remote.QueryVersion(base::BindLambdaForTesting([&](uint32_t version) { + EXPECT_EQ(3u, version); + run_loop.Quit(); + })); run_loop.Run(); - EXPECT_EQ(3u, ptr.version()); + EXPECT_EQ(3u, remote.version()); } -TEST_P(InterfacePtrTest, RequireVersion) { +TEST_P(RemoteTest, RequireVersion) { IntegerAccessorImpl impl; - sample::IntegerAccessorPtr ptr; - Binding<sample::IntegerAccessor> binding(&impl, MakeRequest(&ptr)); + Remote<sample::IntegerAccessor> remote; + Receiver<sample::IntegerAccessor> receiver( + &impl, remote.BindNewPipeAndPassReceiver()); - EXPECT_EQ(0u, ptr.version()); + EXPECT_EQ(0u, remote.version()); - ptr.RequireVersion(1u); - EXPECT_EQ(1u, ptr.version()); + remote.RequireVersion(1u); + EXPECT_EQ(1u, remote.version()); base::RunLoop run_loop; impl.set_closure(run_loop.QuitClosure()); - ptr->SetInteger(123, sample::Enum::VALUE); + remote->SetInteger(123, sample::Enum::VALUE); run_loop.Run(); - EXPECT_FALSE(ptr.encountered_error()); + EXPECT_TRUE(remote.is_connected()); EXPECT_EQ(123, impl.integer()); - ptr.RequireVersion(3u); - EXPECT_EQ(3u, ptr.version()); + remote.RequireVersion(3u); + EXPECT_EQ(3u, remote.version()); base::RunLoop run_loop2; impl.set_closure(run_loop2.QuitClosure()); - ptr->SetInteger(456, sample::Enum::VALUE); + remote->SetInteger(456, sample::Enum::VALUE); run_loop2.Run(); - EXPECT_FALSE(ptr.encountered_error()); + EXPECT_TRUE(remote.is_connected()); EXPECT_EQ(456, impl.integer()); // Require a version that is not supported by the impl side. - ptr.RequireVersion(4u); + remote.RequireVersion(4u); // This value is set to the input of RequireVersion() synchronously. - EXPECT_EQ(4u, ptr.version()); + EXPECT_EQ(4u, remote.version()); base::RunLoop run_loop3; - ptr.set_connection_error_handler(run_loop3.QuitClosure()); - ptr->SetInteger(789, sample::Enum::VALUE); + remote.set_disconnect_handler(run_loop3.QuitClosure()); + remote->SetInteger(789, sample::Enum::VALUE); run_loop3.Run(); - EXPECT_TRUE(ptr.encountered_error()); + EXPECT_FALSE(remote.is_connected()); // The call to SetInteger() after RequireVersion(4u) is ignored. EXPECT_EQ(456, impl.integer()); } @@ -519,20 +500,20 @@ TEST(StrongConnectorTest, Math) { base::MessageLoop loop; - bool error_received = false; + bool disconnected = false; bool destroyed = false; - math::CalculatorPtr calc; + PendingRemote<math::Calculator> calc; base::RunLoop run_loop; - auto binding = - MakeStrongBinding(std::make_unique<StrongMathCalculatorImpl>(&destroyed), - MakeRequest(&calc)); - binding->set_connection_error_handler(base::Bind( - &SetFlagAndRunClosure, &error_received, run_loop.QuitClosure())); + UniqueReceiverSet<math::Calculator> receivers; + receivers.Add(std::make_unique<StrongMathCalculatorImpl>(&destroyed), + calc.InitWithNewPipeAndPassReceiver()); + receivers.set_disconnect_handler(base::BindLambdaForTesting([&] { + disconnected = true; + run_loop.Quit(); + })); { - // Suppose this is instantiated in a process that has the other end of the - // message pipe. MathCalculatorUI calculator_ui(std::move(calc)); base::RunLoop run_loop, run_loop2; @@ -542,30 +523,31 @@ run_loop2.Run(); EXPECT_EQ(10.0, calculator_ui.GetOutput()); - EXPECT_FALSE(error_received); + EXPECT_FALSE(disconnected); EXPECT_FALSE(destroyed); } - // Destroying calculator_ui should close the pipe and generate an error on the - // other - // end which will destroy the instance since it is strongly bound. + // Destroying calculator_ui should close the pipe and signal disconnection on + // the receiving end, which will in turn destroy the impl since it's in a + // UniqueReceiverSet. run_loop.Run(); - EXPECT_TRUE(error_received); + EXPECT_TRUE(disconnected); EXPECT_TRUE(destroyed); } class WeakMathCalculatorImpl : public math::Calculator { public: - WeakMathCalculatorImpl(math::CalculatorRequest request, - bool* error_received, + WeakMathCalculatorImpl(PendingReceiver<math::Calculator> receiver, + bool* disconnected, bool* destroyed, - const base::Closure& closure) - : error_received_(error_received), - destroyed_(destroyed), - closure_(closure), - binding_(this, std::move(request)) { - binding_.set_connection_error_handler( - base::Bind(&SetFlagAndRunClosure, error_received_, closure_)); + base::OnceClosure closure) + : destroyed_(destroyed), receiver_(this, std::move(receiver)) { + receiver_.set_disconnect_handler(base::BindOnce( + [](bool* disconnected, base::OnceClosure closure) { + *disconnected = true; + std::move(closure).Run(); + }, + disconnected, std::move(closure))); } ~WeakMathCalculatorImpl() override { *destroyed_ = true; } @@ -585,31 +567,26 @@ private: double total_ = 0.0; - bool* error_received_; bool* destroyed_; - base::Closure closure_; + base::OnceClosure closure_; - Binding<math::Calculator> binding_; + Receiver<math::Calculator> receiver_; }; TEST(WeakConnectorTest, Math) { base::MessageLoop loop; - bool error_received = false; + bool disconnected = false; bool destroyed = false; MessagePipe pipe; base::RunLoop run_loop; - WeakMathCalculatorImpl impl(math::CalculatorRequest(std::move(pipe.handle0)), - &error_received, &destroyed, - run_loop.QuitClosure()); - - math::CalculatorPtr calc; - calc.Bind(InterfacePtrInfo<math::Calculator>(std::move(pipe.handle1), 0u)); + WeakMathCalculatorImpl impl( + PendingReceiver<math::Calculator>(std::move(pipe.handle0)), &disconnected, + &destroyed, run_loop.QuitClosure()); { - // Suppose this is instantiated in a process that has the other end of the - // message pipe. - MathCalculatorUI calculator_ui(std::move(calc)); + MathCalculatorUI calculator_ui( + PendingRemote<math::Calculator>(std::move(pipe.handle1), 0u)); base::RunLoop run_loop, run_loop2; calculator_ui.Add(2.0, run_loop.QuitClosure()); @@ -618,87 +595,92 @@ run_loop2.Run(); EXPECT_EQ(10.0, calculator_ui.GetOutput()); - EXPECT_FALSE(error_received); + EXPECT_FALSE(disconnected); EXPECT_FALSE(destroyed); - // Destroying calculator_ui should close the pipe and generate an error on - // the other - // end which will destroy the instance since it is strongly bound. } run_loop.Run(); - EXPECT_TRUE(error_received); + EXPECT_TRUE(disconnected); EXPECT_FALSE(destroyed); } class CImpl : public C { public: - CImpl(bool* d_called, const base::Closure& closure) - : d_called_(d_called), closure_(closure) {} - ~CImpl() override {} + CImpl(bool* d_called, base::OnceClosure closure) + : d_called_(d_called), closure_(std::move(closure)) {} + ~CImpl() override = default; + + void Bind(PendingReceiver<C> receiver) { + receiver_.Bind(std::move(receiver)); + } private: void D() override { *d_called_ = true; - closure_.Run(); + std::move(closure_).Run(); } + Receiver<C> receiver_{this}; bool* d_called_; - base::Closure closure_; + base::OnceClosure closure_; }; class BImpl : public B { public: - BImpl(bool* d_called, const base::Closure& closure) - : d_called_(d_called), closure_(closure) {} - ~BImpl() override {} + BImpl(bool* d_called, base::OnceClosure closure) + : c_(d_called, std::move(closure)) {} + ~BImpl() override = default; - private: - void GetC(InterfaceRequest<C> c) override { - MakeStrongBinding(std::make_unique<CImpl>(d_called_, closure_), - std::move(c)); + void Bind(PendingReceiver<B> receiver) { + receiver_.Bind(std::move(receiver)); } - bool* d_called_; - base::Closure closure_; + private: + void GetC(PendingReceiver<C> receiver) override { + c_.Bind(std::move(receiver)); + } + + Receiver<B> receiver_{this}; + CImpl c_; }; class AImpl : public A { public: - AImpl(InterfaceRequest<A> request, const base::Closure& closure) - : d_called_(false), binding_(this, std::move(request)), - closure_(closure) {} - ~AImpl() override {} + AImpl(PendingReceiver<A> receiver, base::OnceClosure closure) + : d_called_(false), + receiver_(this, std::move(receiver)), + b_(&d_called_, std::move(closure)) {} + ~AImpl() override = default; bool d_called() const { return d_called_; } private: - void GetB(InterfaceRequest<B> b) override { - MakeStrongBinding(std::make_unique<BImpl>(&d_called_, closure_), - std::move(b)); + void GetB(PendingReceiver<B> receiver) override { + b_.Bind(std::move(receiver)); } bool d_called_; - Binding<A> binding_; - base::Closure closure_; + Receiver<A> receiver_; + BImpl b_; }; -TEST_P(InterfacePtrTest, Scoping) { - APtr a; +TEST_P(RemoteTest, Scoping) { + Remote<A> a; base::RunLoop run_loop; - AImpl a_impl(MakeRequest(&a), run_loop.QuitClosure()); + AImpl a_impl(a.BindNewPipeAndPassReceiver(), run_loop.QuitClosure()); EXPECT_FALSE(a_impl.d_called()); { - BPtr b; - a->GetB(MakeRequest(&b)); - CPtr c; - b->GetC(MakeRequest(&c)); + Remote<B> b; + a->GetB(b.BindNewPipeAndPassReceiver()); + Remote<C> c; + b->GetC(c.BindNewPipeAndPassReceiver()); c->D(); } - // While B & C have fallen out of scope, the pipes will remain until they are - // flushed. + // While B & C have fallen out of scope, the receiving endpoints will continue + // to operate, and any messages sent prior to destruction will be delivered. EXPECT_FALSE(a_impl.d_called()); run_loop.Run(); EXPECT_TRUE(a_impl.d_called()); @@ -706,30 +688,34 @@ class PingTestImpl : public sample::PingTest { public: - explicit PingTestImpl(InterfaceRequest<sample::PingTest> request) - : binding_(this, std::move(request)) {} - ~PingTestImpl() override {} + explicit PingTestImpl(PendingReceiver<sample::PingTest> receiver) + : receiver_(this, std::move(receiver)) {} + ~PingTestImpl() override = default; private: // sample::PingTest: void Ping(PingCallback callback) override { std::move(callback).Run(); } - Binding<sample::PingTest> binding_; + Receiver<sample::PingTest> receiver_; }; // Tests that FuseProxy does what it's supposed to do. -TEST_P(InterfacePtrTest, Fusion) { - sample::PingTestPtrInfo proxy_info; - PingTestImpl impl(MakeRequest(&proxy_info)); +TEST_P(RemoteTest, Fusion) { + PendingRemote<sample::PingTest> pending_remote; + PingTestImpl impl(pending_remote.InitWithNewPipeAndPassReceiver()); // Create another PingTest pipe and fuse it to the one hanging off |impl|. - sample::PingTestPtr ptr; - EXPECT_TRUE(FuseInterface(mojo::MakeRequest(&ptr), std::move(proxy_info))); + Remote<sample::PingTest> remote; + EXPECT_TRUE(FusePipes(remote.BindNewPipeAndPassReceiver(), + std::move(pending_remote))); // Ping! bool called = false; base::RunLoop loop; - ptr->Ping(base::Bind(&SetFlagAndRunClosure, &called, loop.QuitClosure())); + remote->Ping(base::BindLambdaForTesting([&] { + called = true; + loop.Quit(); + })); loop.Run(); EXPECT_TRUE(called); } @@ -738,63 +724,61 @@ FAIL() << "Unexpected connection error"; } -TEST_P(InterfacePtrTest, FlushForTesting) { - math::CalculatorPtr calc; - MathCalculatorImpl calc_impl(MakeRequest(&calc)); - calc.set_connection_error_handler(base::Bind(&Fail)); +TEST_P(RemoteTest, FlushForTesting) { + PendingRemote<math::Calculator> remote; + MathCalculatorImpl calc_impl(remote.InitWithNewPipeAndPassReceiver()); - MathCalculatorUI calculator_ui(std::move(calc)); + MathCalculatorUI calculator_ui(std::move(remote)); + calculator_ui.remote().set_disconnect_handler(base::BindOnce(&Fail)); calculator_ui.Add(2.0, base::DoNothing()); - calculator_ui.GetInterfacePtr().FlushForTesting(); + calculator_ui.remote().FlushForTesting(); EXPECT_EQ(2.0, calculator_ui.GetOutput()); calculator_ui.Multiply(5.0, base::DoNothing()); - calculator_ui.GetInterfacePtr().FlushForTesting(); + calculator_ui.remote().FlushForTesting(); EXPECT_EQ(10.0, calculator_ui.GetOutput()); } -TEST_P(InterfacePtrTest, FlushAsyncForTesting) { - math::CalculatorPtr calc; - MathCalculatorImpl calc_impl(MakeRequest(&calc)); - calc.set_connection_error_handler(base::BindOnce(&Fail)); +TEST_P(RemoteTest, FlushAsyncForTesting) { + PendingRemote<math::Calculator> remote; + MathCalculatorImpl calc_impl(remote.InitWithNewPipeAndPassReceiver()); - MathCalculatorUI calculator_ui(std::move(calc)); + MathCalculatorUI calculator_ui(std::move(remote)); + calculator_ui.remote().set_disconnect_handler(base::BindOnce(&Fail)); calculator_ui.Add(2.0, base::DoNothing()); base::RunLoop run_loop; - calculator_ui.GetInterfacePtr().FlushAsyncForTesting(run_loop.QuitClosure()); + calculator_ui.remote().FlushAsyncForTesting(run_loop.QuitClosure()); run_loop.Run(); EXPECT_EQ(2.0, calculator_ui.GetOutput()); calculator_ui.Multiply(5.0, base::DoNothing()); base::RunLoop run_loop2; - calculator_ui.GetInterfacePtr().FlushAsyncForTesting(run_loop2.QuitClosure()); + calculator_ui.remote().FlushAsyncForTesting(run_loop2.QuitClosure()); run_loop2.Run(); EXPECT_EQ(10.0, calculator_ui.GetOutput()); } -void SetBool(bool* value) { - *value = true; -} - -TEST_P(InterfacePtrTest, FlushForTestingWithClosedPeer) { - math::CalculatorPtr calc; - MakeRequest(&calc); +TEST_P(RemoteTest, FlushForTestingWithClosedPeer) { + Remote<math::Calculator> calc; + ignore_result(calc.BindNewPipeAndPassReceiver()); bool called = false; - calc.set_connection_error_handler(base::Bind(&SetBool, &called)); + calc.set_disconnect_handler( + base::BindLambdaForTesting([&] { called = true; })); calc.FlushForTesting(); EXPECT_TRUE(called); calc.FlushForTesting(); } -TEST_P(InterfacePtrTest, FlushAsyncForTestingWithClosedPeer) { - math::CalculatorPtr calc; - MakeRequest(&calc); +TEST_P(RemoteTest, FlushAsyncForTestingWithClosedPeer) { + Remote<math::Calculator> calc; + ignore_result(calc.BindNewPipeAndPassReceiver()); bool called = false; - calc.set_connection_error_handler(base::BindOnce(&SetBool, &called)); + calc.set_disconnect_handler( + base::BindLambdaForTesting([&] { called = true; })); base::RunLoop run_loop; calc.FlushAsyncForTesting(run_loop.QuitClosure()); run_loop.Run(); @@ -805,178 +789,147 @@ run_loop2.Run(); } -TEST_P(InterfacePtrTest, ConnectionErrorWithReason) { - math::CalculatorPtr calc; - MathCalculatorImpl calc_impl(MakeRequest(&calc)); +TEST_P(RemoteTest, DisconnectWithReason) { + Remote<math::Calculator> calc; + MathCalculatorImpl calc_impl(calc.BindNewPipeAndPassReceiver()); base::RunLoop run_loop; - calc.set_connection_error_with_reason_handler(base::Bind( - [](const base::Closure& quit_closure, uint32_t custom_reason, - const std::string& description) { + calc.set_disconnect_with_reason_handler(base::BindLambdaForTesting( + [&](uint32_t custom_reason, const std::string& description) { EXPECT_EQ(42u, custom_reason); EXPECT_EQ("hey", description); - quit_closure.Run(); - }, - run_loop.QuitClosure())); + run_loop.Quit(); + })); - calc_impl.binding()->CloseWithReason(42u, "hey"); + calc_impl.receiver().ResetWithReason(42u, "hey"); run_loop.Run(); } -TEST_P(InterfacePtrTest, InterfaceRequestResetWithReason) { - math::CalculatorPtr calc; - auto request = MakeRequest(&calc); +TEST_P(RemoteTest, PendingReceiverResetWithReason) { + Remote<math::Calculator> calc; + auto pending_receiver = calc.BindNewPipeAndPassReceiver(); base::RunLoop run_loop; - calc.set_connection_error_with_reason_handler(base::Bind( - [](const base::Closure& quit_closure, uint32_t custom_reason, - const std::string& description) { + calc.set_disconnect_with_reason_handler(base::BindLambdaForTesting( + [&](uint32_t custom_reason, const std::string& description) { EXPECT_EQ(88u, custom_reason); EXPECT_EQ("greetings", description); - quit_closure.Run(); - }, - run_loop.QuitClosure())); + run_loop.Quit(); + })); - request.ResetWithReason(88u, "greetings"); + pending_receiver.ResetWithReason(88u, "greetings"); run_loop.Run(); } -TEST_P(InterfacePtrTest, CallbackIsPassedInterfacePtr) { - sample::PingTestPtr ptr; - auto request = mojo::MakeRequest(&ptr); +TEST_P(RemoteTest, CallbackIsPassedRemote) { + Remote<sample::PingTest> remote; + auto pending_receiver = remote.BindNewPipeAndPassReceiver(); base::RunLoop run_loop; // Make a call with the proxy's lifetime bound to the response callback. - sample::PingTest* raw_proxy = ptr.get(); - ptr.set_connection_error_handler(run_loop.QuitClosure()); - raw_proxy->Ping(base::Bind(base::DoNothing::Repeatedly<sample::PingTestPtr>(), - base::Passed(&ptr))); + sample::PingTest* raw_proxy = remote.get(); + remote.set_disconnect_handler(run_loop.QuitClosure()); + raw_proxy->Ping( + base::BindOnce([](Remote<sample::PingTest>) {}, std::move(remote))); - // Trigger an error on |ptr|. This will ultimately lead to the proxy's + // Signal disconnection on |remote|. This will ultimately lead to the proxy's // response callbacks being destroyed, which will in turn lead to the proxy // being destroyed. This should not crash. - request.PassMessagePipe(); + pending_receiver.reset(); run_loop.Run(); } -TEST_P(InterfacePtrTest, ConnectionErrorHandlerOwnsInterfacePtr) { - sample::PingTestPtr* ptr = new sample::PingTestPtr; - auto request = mojo::MakeRequest(ptr); +TEST_P(RemoteTest, DisconnectHandlerOwnsRemote) { + Remote<sample::PingTest>* remote = new Remote<sample::PingTest>; + auto pending_receiver = remote->BindNewPipeAndPassReceiver(); base::RunLoop run_loop; - // Make a call with |ptr|'s lifetime bound to the connection error handler - // callback. - ptr->set_connection_error_handler(base::Bind( - [](const base::Closure& quit, sample::PingTestPtr* ptr) { - ptr->reset(); - quit.Run(); + // Make a call with |remote|'s lifetime bound to the disconnect handler. + remote->set_disconnect_handler(base::BindOnce( + [](base::OnceClosure quit, Remote<sample::PingTest>* owned_remote) { + owned_remote->reset(); + std::move(quit).Run(); }, - run_loop.QuitClosure(), base::Owned(ptr))); + run_loop.QuitClosure(), base::Owned(remote))); - // Trigger an error on |ptr|. In the error handler |ptr| is reset. This - // shouldn't immediately destroy the callback (and |ptr| that it owns), before - // the callback is completed. - request.PassMessagePipe(); + // Signal disconnection on |remote|. In the disconnect handler |remote| is + // reset. This shouldn't immediately destroy the callback (and |remote| that + // it owns), before the callback is completed. + pending_receiver.reset(); run_loop.Run(); } -TEST_P(InterfacePtrTest, ThreadSafeInterfacePointer) { - math::CalculatorPtr ptr; - MathCalculatorImpl calc_impl(MakeRequest(&ptr)); - scoped_refptr<math::ThreadSafeCalculatorPtr> thread_safe_ptr = - math::ThreadSafeCalculatorPtr::Create(std::move(ptr)); +TEST_P(RemoteTest, SharedRemote) { + PendingRemote<math::Calculator> pending_remote; + MathCalculatorImpl calc_impl(pending_remote.InitWithNewPipeAndPassReceiver()); + SharedRemote<math::Calculator> shared_remote(std::move(pending_remote)); base::RunLoop run_loop; + base::OnceClosure quit_closure = run_loop.QuitClosure(); - auto run_method = base::Bind( - [](const scoped_refptr<base::TaskRunner>& main_task_runner, - const base::Closure& quit_closure, - const scoped_refptr<math::ThreadSafeCalculatorPtr>& thread_safe_ptr) { - auto calc_callback = base::Bind( - [](const scoped_refptr<base::TaskRunner>& main_task_runner, - const base::Closure& quit_closure, - scoped_refptr<base::SequencedTaskRunner> sender_sequence_runner, - double result) { + // Send a message on |thread_safe_remote| from a different sequence. + auto main_task_runner = base::SequencedTaskRunnerHandle::Get(); + auto sender_task_runner = base::CreateSequencedTaskRunnerWithTraits({}); + sender_task_runner->PostTask( + FROM_HERE, base::BindLambdaForTesting([&] { + shared_remote->Add( + 123, base::BindLambdaForTesting([&](double result) { EXPECT_EQ(123, result); // Validate the callback is invoked on the calling sequence. - EXPECT_TRUE(sender_sequence_runner->RunsTasksInCurrentSequence()); - // Notify the run_loop to quit. - main_task_runner->PostTask(FROM_HERE, quit_closure); - }); - scoped_refptr<base::SequencedTaskRunner> current_sequence_runner = - base::SequencedTaskRunnerHandle::Get(); - (*thread_safe_ptr) - ->Add(123, base::Bind(calc_callback, main_task_runner, quit_closure, - current_sequence_runner)); - }, - base::SequencedTaskRunnerHandle::Get(), run_loop.QuitClosure(), - thread_safe_ptr); - base::CreateSequencedTaskRunnerWithTraits({})->PostTask(FROM_HERE, - run_method); + EXPECT_TRUE(sender_task_runner->RunsTasksInCurrentSequence()); + main_task_runner->PostTask(FROM_HERE, std::move(quit_closure)); + })); + })); - // Block until the method callback is called on the background thread. run_loop.Run(); } -TEST_P(InterfacePtrTest, ThreadSafeInterfacePointerWithTaskRunner) { +TEST_P(RemoteTest, SharedRemoteWithTaskRunner) { const scoped_refptr<base::SequencedTaskRunner> other_thread_task_runner = base::CreateSequencedTaskRunnerWithTraits({}); - math::CalculatorPtr ptr; - auto request = mojo::MakeRequest(&ptr); + PendingRemote<math::Calculator> remote; + auto receiver = remote.InitWithNewPipeAndPassReceiver(); - // Create a ThreadSafeInterfacePtr that we'll bind from a different thread. - scoped_refptr<math::ThreadSafeCalculatorPtr> thread_safe_ptr = - math::ThreadSafeCalculatorPtr::Create(ptr.PassInterface(), - other_thread_task_runner); - ASSERT_TRUE(thread_safe_ptr); + // Create a ThreadSafeRemote that we'll bind from a different thread. + SharedRemote<math::Calculator> shared_remote(std::move(remote), + other_thread_task_runner); + ASSERT_TRUE(shared_remote); MathCalculatorImpl* math_calc_impl = nullptr; { base::RunLoop run_loop; - auto run_method = base::Bind( - [](const scoped_refptr<base::TaskRunner>& main_task_runner, - const base::Closure& quit_closure, - const scoped_refptr<math::ThreadSafeCalculatorPtr>& thread_safe_ptr, - math::CalculatorRequest request, - MathCalculatorImpl** math_calc_impl) { - math::CalculatorPtr ptr; - // In real life, the implementation would have a legitimate owner. - *math_calc_impl = new MathCalculatorImpl(std::move(request)); - main_task_runner->PostTask(FROM_HERE, quit_closure); - }, - base::SequencedTaskRunnerHandle::Get(), run_loop.QuitClosure(), - thread_safe_ptr, base::Passed(&request), &math_calc_impl); - other_thread_task_runner->PostTask(FROM_HERE, run_method); + auto quit_closure = run_loop.QuitClosure(); + other_thread_task_runner->PostTask( + FROM_HERE, base::BindLambdaForTesting([&] { + math_calc_impl = new MathCalculatorImpl(std::move(receiver)); + std::move(quit_closure).Run(); + })); run_loop.Run(); } { - // The interface ptr is bound, we can call methods on it. - auto calc_callback = - base::Bind([](const base::Closure& quit_closure, double result) { - EXPECT_EQ(123, result); - quit_closure.Run(); - }); base::RunLoop run_loop; - (*thread_safe_ptr) - ->Add(123, base::Bind(calc_callback, run_loop.QuitClosure())); - // Block until the method callback is called. + shared_remote->Add(123, base::BindLambdaForTesting([&](double result) { + EXPECT_EQ(123, result); + run_loop.Quit(); + })); run_loop.Run(); } other_thread_task_runner->DeleteSoon(FROM_HERE, math_calc_impl); - // Reset the pointer now so the InterfacePtr associated resources can be - // deleted before the background thread's message loop is invalidated. - thread_safe_ptr = nullptr; + // Reset the SharedRemote now so the background thread state tied to its + // internal Remote can be deleted before the background thread itself is + // cleaned up. + shared_remote.reset(); } -INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(InterfacePtrTest); +INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(RemoteTest); } // namespace } // namespace test
diff --git a/mojo/public/cpp/bindings/tests/report_bad_message_unittest.cc b/mojo/public/cpp/bindings/tests/report_bad_message_unittest.cc index bb48ab9..1394c86 100644 --- a/mojo/public/cpp/bindings/tests/report_bad_message_unittest.cc +++ b/mojo/public/cpp/bindings/tests/report_bad_message_unittest.cc
@@ -6,9 +6,11 @@ #include "base/callback.h" #include "base/macros.h" #include "base/run_loop.h" +#include "base/test/bind_test_util.h" #include "mojo/core/embedder/embedder.h" -#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/message.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" #include "mojo/public/interfaces/bindings/tests/test_bad_messages.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -19,11 +21,11 @@ class TestBadMessagesImpl : public TestBadMessages { public: - TestBadMessagesImpl() : binding_(this) {} - ~TestBadMessagesImpl() override {} + TestBadMessagesImpl() = default; + ~TestBadMessagesImpl() override = default; - void BindImpl(TestBadMessagesRequest request) { - binding_.Bind(std::move(request)); + void Bind(PendingReceiver<TestBadMessages> receiver) { + receiver_.Bind(std::move(receiver)); } ReportBadMessageCallback& bad_message_callback() { @@ -51,20 +53,20 @@ } ReportBadMessageCallback bad_message_callback_; - mojo::Binding<TestBadMessages> binding_; + mojo::Receiver<TestBadMessages> receiver_{this}; DISALLOW_COPY_AND_ASSIGN(TestBadMessagesImpl); }; class ReportBadMessageTest : public BindingsTestBase { public: - ReportBadMessageTest() {} + ReportBadMessageTest() = default; void SetUp() override { mojo::core::SetDefaultProcessErrorCallback(base::Bind( &ReportBadMessageTest::OnProcessError, base::Unretained(this))); - impl_.BindImpl(MakeRequest(&proxy_)); + impl_.Bind(remote_.BindNewPipeAndPassReceiver()); } void TearDown() override { @@ -72,40 +74,40 @@ mojo::core::ProcessErrorCallback()); } - TestBadMessages* proxy() { return proxy_.get(); } + TestBadMessages* remote() { return remote_.get(); } TestBadMessagesImpl* impl() { return &impl_; } - void SetErrorHandler(const base::Closure& handler) { - error_handler_ = handler; + void SetErrorHandler(base::OnceClosure handler) { + error_handler_ = std::move(handler); } private: void OnProcessError(const std::string& error) { - if (!error_handler_.is_null()) - error_handler_.Run(); + if (error_handler_) + std::move(error_handler_).Run(); } - TestBadMessagesPtr proxy_; + Remote<TestBadMessages> remote_; TestBadMessagesImpl impl_; - base::Closure error_handler_; + base::OnceClosure error_handler_; }; TEST_P(ReportBadMessageTest, Request) { // Verify that basic immediate error reporting works. bool error = false; - SetErrorHandler(base::Bind([] (bool* flag) { *flag = true; }, &error)); - EXPECT_TRUE(proxy()->RejectSync()); + SetErrorHandler(base::BindLambdaForTesting([&] { error = true; })); + EXPECT_TRUE(remote()->RejectSync()); EXPECT_TRUE(error); } TEST_P(ReportBadMessageTest, RequestAsync) { bool error = false; - SetErrorHandler(base::Bind([] (bool* flag) { *flag = true; }, &error)); + SetErrorHandler(base::BindLambdaForTesting([&] { error = true; })); // This should capture a bad message reporting callback in the impl. base::RunLoop loop; - proxy()->RejectEventually(loop.QuitClosure()); + remote()->RejectEventually(loop.QuitClosure()); loop.Run(); EXPECT_FALSE(error); @@ -118,17 +120,15 @@ TEST_P(ReportBadMessageTest, Response) { bool error = false; - SetErrorHandler(base::Bind([] (bool* flag) { *flag = true; }, &error)); + SetErrorHandler(base::BindLambdaForTesting([&] { error = true; })); base::RunLoop loop; - proxy()->RequestResponse( - base::Bind([] (const base::Closure& quit) { - // Report a bad message inside the response callback. This should - // trigger the error handler. - ReportBadMessage("no way!"); - quit.Run(); - }, - loop.QuitClosure())); + remote()->RequestResponse(base::BindLambdaForTesting([&] { + // Report a bad message inside the response callback. This should + // trigger the error handler. + ReportBadMessage("no way!"); + loop.Quit(); + })); loop.Run(); EXPECT_TRUE(error); @@ -136,18 +136,15 @@ TEST_P(ReportBadMessageTest, ResponseAsync) { bool error = false; - SetErrorHandler(base::Bind([] (bool* flag) { *flag = true; }, &error)); + SetErrorHandler(base::BindLambdaForTesting([&] { error = true; })); ReportBadMessageCallback bad_message_callback; base::RunLoop loop; - proxy()->RequestResponse( - base::Bind([] (const base::Closure& quit, - ReportBadMessageCallback* callback) { - // Capture the bad message callback inside the response callback. - *callback = GetBadMessageCallback(); - quit.Run(); - }, - loop.QuitClosure(), &bad_message_callback)); + remote()->RequestResponse(base::BindLambdaForTesting([&] { + // Capture the bad message callback inside the response callback. + bad_message_callback = GetBadMessageCallback(); + loop.Quit(); + })); loop.Run(); EXPECT_FALSE(error); @@ -161,10 +158,10 @@ TEST_P(ReportBadMessageTest, ResponseSync) { bool error = false; - SetErrorHandler(base::Bind([] (bool* flag) { *flag = true; }, &error)); + SetErrorHandler(base::BindLambdaForTesting([&] { error = true; })); SyncMessageResponseContext context; - proxy()->RequestResponseSync(); + remote()->RequestResponseSync(); EXPECT_FALSE(error); context.ReportBadMessage("i don't like this response"); @@ -173,12 +170,12 @@ TEST_P(ReportBadMessageTest, ResponseSyncDeferred) { bool error = false; - SetErrorHandler(base::Bind([] (bool* flag) { *flag = true; }, &error)); + SetErrorHandler(base::BindLambdaForTesting([&] { error = true; })); ReportBadMessageCallback bad_message_callback; { SyncMessageResponseContext context; - proxy()->RequestResponseSync(); + remote()->RequestResponseSync(); bad_message_callback = context.GetBadMessageCallback(); }
diff --git a/mojo/public/cpp/bindings/tests/request_response_unittest.cc b/mojo/public/cpp/bindings/tests/request_response_unittest.cc index 1369804..50cf63f 100644 --- a/mojo/public/cpp/bindings/tests/request_response_unittest.cc +++ b/mojo/public/cpp/bindings/tests/request_response_unittest.cc
@@ -7,7 +7,9 @@ #include "base/bind.h" #include "base/run_loop.h" -#include "mojo/public/cpp/bindings/binding.h" +#include "base/test/bind_test_util.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" #include "mojo/public/cpp/test_support/test_utils.h" #include "mojo/public/interfaces/bindings/tests/sample_import.mojom.h" @@ -20,8 +22,8 @@ class ProviderImpl : public sample::Provider { public: - explicit ProviderImpl(InterfaceRequest<sample::Provider> request) - : binding_(this, std::move(request)) {} + explicit ProviderImpl(PendingReceiver<sample::Provider> receiver) + : receiver_(this, std::move(receiver)) {} void EchoString(const std::string& a, EchoStringCallback callback) override { std::move(callback).Run(a); @@ -46,103 +48,76 @@ std::move(callback).Run(a); } - Binding<sample::Provider> binding_; + private: + Receiver<sample::Provider> receiver_; }; -void RecordString(std::string* storage, - const base::Closure& closure, - const std::string& str) { - *storage = str; - closure.Run(); -} - -void RecordStrings(std::string* storage, - const base::Closure& closure, - const std::string& a, - const std::string& b) { - *storage = a + b; - closure.Run(); -} - -void WriteToMessagePipe(const char* text, - const base::Closure& closure, - ScopedMessagePipeHandle handle) { - WriteTextMessage(handle.get(), text); - closure.Run(); -} - -void RecordEnum(sample::Enum* storage, - const base::Closure& closure, - sample::Enum value) { - *storage = value; - closure.Run(); -} - -class RequestResponseTest : public BindingsTestBase { - public: - RequestResponseTest() {} - ~RequestResponseTest() override { base::RunLoop().RunUntilIdle(); } - - void PumpMessages() { base::RunLoop().RunUntilIdle(); } -}; +using RequestResponseTest = BindingsTestBase; TEST_P(RequestResponseTest, EchoString) { - sample::ProviderPtr provider; - ProviderImpl provider_impl(MakeRequest(&provider)); + Remote<sample::Provider> provider; + ProviderImpl provider_impl(provider.BindNewPipeAndPassReceiver()); - std::string buf; base::RunLoop run_loop; - provider->EchoString("hello", - base::Bind(&RecordString, &buf, run_loop.QuitClosure())); - + constexpr const char kTestMessage[] = "hello"; + provider->EchoString(kTestMessage, base::BindLambdaForTesting( + [&](const std::string& response) { + EXPECT_EQ(kTestMessage, response); + run_loop.Quit(); + })); run_loop.Run(); - - EXPECT_EQ(std::string("hello"), buf); } TEST_P(RequestResponseTest, EchoStrings) { - sample::ProviderPtr provider; - ProviderImpl provider_impl(MakeRequest(&provider)); + Remote<sample::Provider> provider; + ProviderImpl provider_impl(provider.BindNewPipeAndPassReceiver()); std::string buf; base::RunLoop run_loop; - provider->EchoStrings("hello", " world", base::Bind(&RecordStrings, &buf, - run_loop.QuitClosure())); - + constexpr const char kTestMessage1[] = "hello"; + constexpr const char kTestMessage2[] = "hello"; + provider->EchoStrings( + kTestMessage1, kTestMessage2, + base::BindLambdaForTesting( + [&](const std::string& response1, const std::string& response2) { + EXPECT_EQ(kTestMessage1, response1); + EXPECT_EQ(kTestMessage2, response2); + run_loop.Quit(); + })); run_loop.Run(); - - EXPECT_EQ(std::string("hello world"), buf); } TEST_P(RequestResponseTest, EchoMessagePipeHandle) { - sample::ProviderPtr provider; - ProviderImpl provider_impl(MakeRequest(&provider)); + Remote<sample::Provider> provider; + ProviderImpl provider_impl(provider.BindNewPipeAndPassReceiver()); - MessagePipe pipe2; + MessagePipe pipe; base::RunLoop run_loop; + constexpr const char kTestMessage[] = "hello"; provider->EchoMessagePipeHandle( - std::move(pipe2.handle1), - base::Bind(&WriteToMessagePipe, "hello", run_loop.QuitClosure())); + std::move(pipe.handle1), + base::BindLambdaForTesting([&](ScopedMessagePipeHandle handle) { + WriteTextMessage(handle.get(), kTestMessage); + std::string value; + ReadTextMessage(pipe.handle0.get(), &value); + EXPECT_EQ(kTestMessage, value); + run_loop.Quit(); + })); run_loop.Run(); - - std::string value; - ReadTextMessage(pipe2.handle0.get(), &value); - - EXPECT_EQ(std::string("hello"), value); } TEST_P(RequestResponseTest, EchoEnum) { - sample::ProviderPtr provider; - ProviderImpl provider_impl(MakeRequest(&provider)); + Remote<sample::Provider> provider; + ProviderImpl provider_impl(provider.BindNewPipeAndPassReceiver()); - sample::Enum value; base::RunLoop run_loop; provider->EchoEnum(sample::Enum::VALUE, - base::Bind(&RecordEnum, &value, run_loop.QuitClosure())); + base::BindLambdaForTesting([&](sample::Enum value) { + EXPECT_EQ(sample::Enum::VALUE, value); + run_loop.Quit(); + })); run_loop.Run(); - - EXPECT_EQ(sample::Enum::VALUE, value); } INSTANTIATE_MOJO_BINDINGS_TEST_SUITE_P(RequestResponseTest);
diff --git a/mojo/public/cpp/bindings/tests/sample_service_unittest.cc b/mojo/public/cpp/bindings/tests/sample_service_unittest.cc index d6eb097..94c44a57 100644 --- a/mojo/public/cpp/bindings/tests/sample_service_unittest.cc +++ b/mojo/public/cpp/bindings/tests/sample_service_unittest.cc
@@ -9,6 +9,10 @@ #include <string> #include <utility> +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/bindings_test_base.h" #include "mojo/public/interfaces/bindings/tests/sample_service.mojom.h" #include "testing/gtest/include/gtest/gtest.h" @@ -247,7 +251,7 @@ public: void Frobinate(FooPtr foo, BazOptions baz, - PortPtr port, + mojo::PendingRemote<Port> pending_port, Service::FrobinateCallback callback) override { // Users code goes here to handle the incoming Frobinate message. @@ -257,6 +261,7 @@ CheckFoo(*foo); EXPECT_EQ(BazOptions::EXTRA, baz); + mojo::Remote<Port> port(std::move(pending_port)); if (g_dump_message_as_text) { // Also dump the Foo structure and all of its members. std::cout << "Frobinate:" << std::endl; @@ -268,7 +273,7 @@ std::move(callback).Run(5); } - void GetPort(mojo::InterfaceRequest<Port> port_request) override {} + void GetPort(mojo::PendingReceiver<Port> receiver) override {} }; class ServiceProxyImpl : public ServiceProxy { @@ -322,9 +327,8 @@ FooPtr foo = MakeFoo(); CheckFoo(*foo); - PortPtr port; service->Frobinate(std::move(foo), Service::BazOptions::EXTRA, - std::move(port), Service::FrobinateCallback()); + mojo::NullRemote(), Service::FrobinateCallback()); delete service; }
diff --git a/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc b/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc index 66c62fe..e01441fa 100644 --- a/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc +++ b/mojo/public/cpp/bindings/tests/struct_traits_unittest.cc
@@ -8,8 +8,9 @@ #include "base/memory/ptr_util.h" #include "base/message_loop/message_loop.h" #include "base/run_loop.h" -#include "mojo/public/cpp/bindings/binding_set.h" -#include "mojo/public/cpp/bindings/interface_request.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/rect_blink.h" #include "mojo/public/cpp/bindings/tests/rect_chromium.h" #include "mojo/public/cpp/bindings/tests/struct_with_traits_impl.h" @@ -53,8 +54,8 @@ } template <typename T> -void ExpectError(InterfacePtr<T> *proxy, const base::Closure& callback) { - proxy->set_connection_error_handler(callback); +void ExpectError(Remote<T>* proxy, base::OnceClosure callback) { + proxy->set_disconnect_handler(std::move(callback)); } // This implements the generated Chromium variant of RectService. @@ -113,30 +114,30 @@ class StructTraitsTest : public testing::Test, public TraitsTestService { public: - StructTraitsTest() {} + StructTraitsTest() = default; protected: - void BindToChromiumService(RectServiceRequest request) { - chromium_bindings_.AddBinding(&chromium_service_, std::move(request)); + void BindToChromiumService(PendingReceiver<RectService> receiver) { + chromium_receivers_.Add(&chromium_service_, std::move(receiver)); } - void BindToChromiumService(blink::RectServiceRequest request) { - chromium_bindings_.AddBinding( + void BindToChromiumService(PendingReceiver<blink::RectService> receiver) { + chromium_receivers_.Add( &chromium_service_, - ConvertInterfaceRequest<RectService>(std::move(request))); + ConvertPendingReceiver<RectService>(std::move(receiver))); } - void BindToBlinkService(blink::RectServiceRequest request) { - blink_bindings_.AddBinding(&blink_service_, std::move(request)); + void BindToBlinkService(PendingReceiver<blink::RectService> receiver) { + blink_receivers_.Add(&blink_service_, std::move(receiver)); } - void BindToBlinkService(RectServiceRequest request) { - blink_bindings_.AddBinding( + void BindToBlinkService(PendingReceiver<RectService> receiver) { + blink_receivers_.Add( &blink_service_, - ConvertInterfaceRequest<blink::RectService>(std::move(request))); + ConvertPendingReceiver<blink::RectService>(std::move(receiver))); } - TraitsTestServicePtr GetTraitsTestProxy() { - TraitsTestServicePtr proxy; - traits_test_bindings_.AddBinding(this, mojo::MakeRequest(&proxy)); + Remote<TraitsTestService> GetTraitsTestProxy() { + Remote<TraitsTestService> proxy; + traits_test_receivers_.Add(this, proxy.BindNewPipeAndPassReceiver()); return proxy; } @@ -190,19 +191,19 @@ base::MessageLoop loop_; ChromiumRectServiceImpl chromium_service_; - BindingSet<RectService> chromium_bindings_; + ReceiverSet<RectService> chromium_receivers_; BlinkRectServiceImpl blink_service_; - BindingSet<blink::RectService> blink_bindings_; + ReceiverSet<blink::RectService> blink_receivers_; - BindingSet<TraitsTestService> traits_test_bindings_; + ReceiverSet<TraitsTestService> traits_test_receivers_; }; } // namespace TEST_F(StructTraitsTest, ChromiumProxyToChromiumService) { - RectServicePtr chromium_proxy; - BindToChromiumService(MakeRequest(&chromium_proxy)); + Remote<RectService> chromium_proxy; + BindToChromiumService(chromium_proxy.BindNewPipeAndPassReceiver()); { base::RunLoop loop; chromium_proxy->AddRect(RectChromium(1, 1, 4, 5)); @@ -221,8 +222,8 @@ } TEST_F(StructTraitsTest, ChromiumToBlinkService) { - RectServicePtr chromium_proxy; - BindToBlinkService(MakeRequest(&chromium_proxy)); + Remote<RectService> chromium_proxy; + BindToBlinkService(chromium_proxy.BindNewPipeAndPassReceiver()); { base::RunLoop loop; chromium_proxy->AddRect(RectChromium(1, 1, 4, 5)); @@ -251,8 +252,8 @@ } TEST_F(StructTraitsTest, BlinkProxyToBlinkService) { - blink::RectServicePtr blink_proxy; - BindToBlinkService(MakeRequest(&blink_proxy)); + Remote<blink::RectService> blink_proxy; + BindToBlinkService(blink_proxy.BindNewPipeAndPassReceiver()); { base::RunLoop loop; blink_proxy->AddRect(RectBlink(1, 1, 4, 5)); @@ -271,8 +272,8 @@ } TEST_F(StructTraitsTest, BlinkProxyToChromiumService) { - blink::RectServicePtr blink_proxy; - BindToChromiumService(MakeRequest(&blink_proxy)); + Remote<blink::RectService> blink_proxy; + BindToChromiumService(blink_proxy.BindNewPipeAndPassReceiver()); { base::RunLoop loop; blink_proxy->AddRect(RectBlink(1, 1, 4, 5)); @@ -323,11 +324,10 @@ input.get_mutable_struct_map()["world"] = NestedStructWithTraitsImpl(2048); base::RunLoop loop; - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); - proxy->EchoStructWithTraits( - input, - base::Bind(&ExpectStructWithTraits, input, loop.QuitClosure())); + proxy->EchoStructWithTraits(input, base::BindOnce(&ExpectStructWithTraits, + input, loop.QuitClosure())); loop.Run(); } @@ -352,11 +352,11 @@ input.value = 42; base::RunLoop loop; - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); proxy->EchoTrivialStructWithTraits( - input, - base::Bind(&ExpectTrivialStructWithTraits, input, loop.QuitClosure())); + input, base::BindOnce(&ExpectTrivialStructWithTraits, input, + loop.QuitClosure())); loop.Run(); } @@ -374,12 +374,12 @@ input.get_mutable_handle().reset(mp.handle0.release()); base::RunLoop loop; - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); ScopedMessagePipeHandle received; proxy->EchoMoveOnlyStructWithTraits( std::move(input), - base::Bind(&CaptureMessagePipe, &received, loop.QuitClosure())); + base::BindOnce(&CaptureMessagePipe, &received, loop.QuitClosure())); loop.Run(); ASSERT_TRUE(received.is_valid()); @@ -411,12 +411,13 @@ TEST_F(StructTraitsTest, EchoNullableMoveOnlyStructWithTraits) { base::RunLoop loop; - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); base::Optional<MoveOnlyStructWithTraitsImpl> received; proxy->EchoNullableMoveOnlyStructWithTraits( - base::nullopt, base::Bind(&CaptureNullableMoveOnlyStructWithTraitsImpl, - &received, loop.QuitClosure())); + base::nullopt, + base::BindOnce(&CaptureNullableMoveOnlyStructWithTraitsImpl, &received, + loop.QuitClosure())); loop.Run(); EXPECT_FALSE(received); @@ -431,12 +432,12 @@ TEST_F(StructTraitsTest, EchoEnumWithTraits) { base::RunLoop loop; - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); proxy->EchoEnumWithTraits( EnumWithTraitsImpl::CUSTOM_VALUE_1, - base::Bind(&ExpectEnumWithTraits, EnumWithTraitsImpl::CUSTOM_VALUE_1, - loop.QuitClosure())); + base::BindOnce(&ExpectEnumWithTraits, EnumWithTraitsImpl::CUSTOM_VALUE_1, + loop.QuitClosure())); loop.Run(); } @@ -483,26 +484,27 @@ } TEST_F(StructTraitsTest, TypemapUniquePtr) { - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); { base::RunLoop loop; proxy->EchoStructWithTraitsForUniquePtr( std::make_unique<int>(12345), - base::Bind(&ExpectUniquePtr, base::Passed(std::make_unique<int>(12345)), - loop.QuitClosure())); + base::BindOnce(&ExpectUniquePtr, + base::Passed(std::make_unique<int>(12345)), + loop.QuitClosure())); loop.Run(); } { base::RunLoop loop; proxy->EchoNullableStructWithTraitsForUniquePtr( - nullptr, base::Bind(&ExpectUniquePtr, nullptr, loop.QuitClosure())); + nullptr, base::BindOnce(&ExpectUniquePtr, nullptr, loop.QuitClosure())); loop.Run(); } } TEST_F(StructTraitsTest, EchoUnionWithTraits) { - TraitsTestServicePtr proxy = GetTraitsTestProxy(); + Remote<TraitsTestService> proxy = GetTraitsTestProxy(); { std::unique_ptr<test::UnionWithTraitsBase> input( @@ -510,7 +512,7 @@ base::RunLoop loop; proxy->EchoUnionWithTraits( std::move(input), - base::Bind( + base::BindOnce( [](const base::Closure& quit_closure, std::unique_ptr<test::UnionWithTraitsBase> passed) { ASSERT_EQ(test::UnionWithTraitsBase::Type::INT32, passed->type()); @@ -518,7 +520,6 @@ static_cast<test::UnionWithTraitsInt32*>(passed.get()) ->value()); quit_closure.Run(); - }, loop.QuitClosure())); loop.Run(); @@ -530,7 +531,7 @@ base::RunLoop loop; proxy->EchoUnionWithTraits( std::move(input), - base::Bind( + base::BindOnce( [](const base::Closure& quit_closure, std::unique_ptr<test::UnionWithTraitsBase> passed) { ASSERT_EQ(test::UnionWithTraitsBase::Type::STRUCT, @@ -540,7 +541,6 @@ ->get_struct() .value); quit_closure.Run(); - }, loop.QuitClosure())); loop.Run();
diff --git a/mojo/public/cpp/bindings/tests/sync_method_unittest.cc b/mojo/public/cpp/bindings/tests/sync_method_unittest.cc index fa9add0..7e7a47d 100644 --- a/mojo/public/cpp/bindings/tests/sync_method_unittest.cc +++ b/mojo/public/cpp/bindings/tests/sync_method_unittest.cc
@@ -135,11 +135,11 @@ void AsyncEcho(int32_t value, AsyncEchoCallback callback) override { AsyncEchoImpl(value, std::move(callback)); } - void SendInterface(TestSyncAssociatedPtrInfo ptr) override { - SendInterfaceImpl(std::move(ptr)); + void SendRemote(PendingAssociatedRemote<TestSync> remote) override { + SendInterfaceImpl(std::move(remote)); } - void SendRequest(TestSyncAssociatedRequest request) override { - SendRequestImpl(std::move(request)); + void SendReceiver(PendingAssociatedReceiver<TestSync> receiver) override { + SendRequestImpl(std::move(receiver)); } Binding<TestSyncMaster>* binding() { return &binding_; } @@ -329,8 +329,8 @@ run_loop.Quit(); }); - master_ptr_->SendInterface(std::move(opposite_asso_ptr_info_)); - master_ptr_->SendRequest(std::move(asso_request_)); + master_ptr_->SendRemote(std::move(opposite_asso_ptr_info_)); + master_ptr_->SendReceiver(std::move(asso_request_)); run_loop.Run(); }
diff --git a/mojo/public/cpp/bindings/tests/test_helpers_unittest.cc b/mojo/public/cpp/bindings/tests/test_helpers_unittest.cc index 9a69f74..8cbdaaf 100644 --- a/mojo/public/cpp/bindings/tests/test_helpers_unittest.cc +++ b/mojo/public/cpp/bindings/tests/test_helpers_unittest.cc
@@ -4,7 +4,8 @@ #include "base/macros.h" #include "base/test/scoped_task_environment.h" -#include "mojo/public/cpp/bindings/binding.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/system/message_pipe.h" #include "mojo/public/cpp/system/wait.h" #include "mojo/public/interfaces/bindings/tests/ping_service.mojom-test-utils.h" @@ -27,8 +28,8 @@ class PingImpl : public test::PingService { public: - explicit PingImpl(test::PingServiceRequest request) - : binding_(this, std::move(request)) {} + explicit PingImpl(PendingReceiver<test::PingService> receiver) + : receiver_(this, std::move(receiver)) {} ~PingImpl() override = default; bool pinged() const { return pinged_; } @@ -41,15 +42,15 @@ private: bool pinged_ = false; - Binding<test::PingService> binding_; + Receiver<test::PingService> receiver_; DISALLOW_COPY_AND_ASSIGN(PingImpl); }; class EchoImpl : public test::EchoService { public: - explicit EchoImpl(test::EchoServiceRequest request) - : binding_(this, std::move(request)) {} + explicit EchoImpl(PendingReceiver<test::EchoService> receiver) + : receiver_(this, std::move(receiver)) {} ~EchoImpl() override = default; // test::EchoService: @@ -58,15 +59,15 @@ } private: - Binding<test::EchoService> binding_; + Receiver<test::EchoService> receiver_; DISALLOW_COPY_AND_ASSIGN(EchoImpl); }; class TrampolineImpl : public test::HandleTrampoline { public: - explicit TrampolineImpl(test::HandleTrampolineRequest request) - : binding_(this, std::move(request)) {} + explicit TrampolineImpl(PendingReceiver<test::HandleTrampoline> receiver) + : receiver_(this, std::move(receiver)) {} ~TrampolineImpl() override = default; // test::HandleTrampoline: @@ -82,22 +83,22 @@ } private: - Binding<test::HandleTrampoline> binding_; + Receiver<test::HandleTrampoline> receiver_; DISALLOW_COPY_AND_ASSIGN(TrampolineImpl); }; TEST_F(TestHelperTest, AsyncWaiter) { - test::PingServicePtr ping; - PingImpl ping_impl(MakeRequest(&ping)); + Remote<test::PingService> ping; + PingImpl ping_impl(ping.BindNewPipeAndPassReceiver()); test::PingServiceAsyncWaiter wait_for_ping(ping.get()); EXPECT_FALSE(ping_impl.pinged()); wait_for_ping.Ping(); EXPECT_TRUE(ping_impl.pinged()); - test::EchoServicePtr echo; - EchoImpl echo_impl(MakeRequest(&echo)); + Remote<test::EchoService> echo; + EchoImpl echo_impl(echo.BindNewPipeAndPassReceiver()); test::EchoServiceAsyncWaiter wait_for_echo(echo.get()); const std::string kTestString = "a machine that goes 'ping'"; @@ -105,8 +106,8 @@ wait_for_echo.Echo(kTestString, &response); EXPECT_EQ(kTestString, response); - test::HandleTrampolinePtr trampoline; - TrampolineImpl trampoline_impl(MakeRequest(&trampoline)); + Remote<test::HandleTrampoline> trampoline; + TrampolineImpl trampoline_impl(trampoline.BindNewPipeAndPassReceiver()); test::HandleTrampolineAsyncWaiter wait_for_trampoline(trampoline.get()); MessagePipe pipe;
diff --git a/mojo/public/cpp/bindings/tests/union_unittest.cc b/mojo/public/cpp/bindings/tests/union_unittest.cc index 86c8cf5..29889db 100644 --- a/mojo/public/cpp/bindings/tests/union_unittest.cc +++ b/mojo/public/cpp/bindings/tests/union_unittest.cc
@@ -11,13 +11,14 @@ #include "base/containers/flat_map.h" #include "base/message_loop/message_loop.h" #include "base/run_loop.h" -#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/lib/array_internal.h" #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/validation_context.h" #include "mojo/public/cpp/bindings/lib/validation_errors.h" #include "mojo/public/cpp/bindings/message.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/test_support/test_utils.h" #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" #include "mojo/public/interfaces/bindings/tests/test_unions.mojom.h" @@ -1127,36 +1128,37 @@ class SmallCacheImpl : public SmallCache { public: - explicit SmallCacheImpl(const base::Closure& closure) - : int_value_(0), closure_(closure) {} - ~SmallCacheImpl() override {} + explicit SmallCacheImpl(base::OnceClosure closure) + : int_value_(0), closure_(std::move(closure)) {} + ~SmallCacheImpl() override = default; + int64_t int_value() const { return int_value_; } private: void SetIntValue(int64_t int_value) override { int_value_ = int_value; - closure_.Run(); + std::move(closure_).Run(); } void GetIntValue(GetIntValueCallback callback) override { std::move(callback).Run(int_value_); } int64_t int_value_; - base::Closure closure_; + base::OnceClosure closure_; }; TEST(UnionTest, InterfaceInUnion) { base::MessageLoop message_loop; base::RunLoop run_loop; SmallCacheImpl impl(run_loop.QuitClosure()); - SmallCachePtr ptr; - Binding<SmallCache> bindings(&impl, MakeRequest(&ptr)); + Remote<SmallCache> remote; + Receiver<SmallCache> receiver(&impl, remote.BindNewPipeAndPassReceiver()); HandleUnionPtr handle(HandleUnion::New()); - handle->set_f_small_cache(ptr.PassInterface()); + handle->set_f_small_cache(remote.Unbind()); - ptr.Bind(std::move(handle->get_f_small_cache())); - ptr->SetIntValue(10); + remote.Bind(std::move(handle->get_f_small_cache())); + remote->SetIntValue(10); run_loop.Run(); EXPECT_EQ(10, impl.int_value()); } @@ -1165,12 +1167,12 @@ base::MessageLoop message_loop; base::RunLoop run_loop; SmallCacheImpl impl(run_loop.QuitClosure()); - SmallCachePtr ptr; - Binding<SmallCache> bindings(&impl, MakeRequest(&ptr)); + Remote<SmallCache> remote; + Receiver<SmallCache> receiver(&impl, remote.BindNewPipeAndPassReceiver()); - HandleUnionPtr handle = HandleUnion::NewFSmallCache(ptr.PassInterface()); - ptr.Bind(std::move(handle->get_f_small_cache())); - ptr->SetIntValue(10); + HandleUnionPtr handle = HandleUnion::NewFSmallCache(remote.Unbind()); + remote.Bind(std::move(handle->get_f_small_cache())); + remote->SetIntValue(10); run_loop.Run(); EXPECT_EQ(10, impl.int_value()); } @@ -1179,11 +1181,11 @@ base::MessageLoop message_loop; base::RunLoop run_loop; SmallCacheImpl impl(run_loop.QuitClosure()); - SmallCachePtr ptr; - Binding<SmallCache> bindings(&impl, MakeRequest(&ptr)); + Remote<SmallCache> remote; + Receiver<SmallCache> receiver(&impl, remote.BindNewPipeAndPassReceiver()); HandleUnionPtr handle(HandleUnion::New()); - handle->set_f_small_cache(ptr.PassInterface()); + handle->set_f_small_cache(remote.Unbind()); mojo::Message message; mojo::internal::SerializationContext context; @@ -1195,16 +1197,16 @@ HandleUnionPtr handle2(HandleUnion::New()); mojo::internal::Deserialize<HandleUnionDataView>(data, &handle2, &context); - ptr.Bind(std::move(handle2->get_f_small_cache())); - ptr->SetIntValue(10); + remote.Bind(std::move(handle2->get_f_small_cache())); + remote->SetIntValue(10); run_loop.Run(); EXPECT_EQ(10, impl.int_value()); } class UnionInterfaceImpl : public UnionInterface { public: - UnionInterfaceImpl() {} - ~UnionInterfaceImpl() override {} + UnionInterfaceImpl() = default; + ~UnionInterfaceImpl() override = default; private: void Echo(PodUnionPtr in, EchoCallback callback) override { @@ -1212,20 +1214,18 @@ } }; -void ExpectInt16(int16_t value, PodUnionPtr out) { - EXPECT_EQ(value, out->get_f_int16()); -} - TEST(UnionTest, UnionInInterface) { base::MessageLoop message_loop; UnionInterfaceImpl impl; - UnionInterfacePtr ptr; - Binding<UnionInterface> bindings(&impl, MakeRequest(&ptr)); + Remote<UnionInterface> remote; + Receiver<UnionInterface> receiver(&impl, remote.BindNewPipeAndPassReceiver()); PodUnionPtr pod(PodUnion::New()); pod->set_f_int16(16); - ptr->Echo(std::move(pod), base::Bind(&ExpectInt16, 16)); + remote->Echo(std::move(pod), base::BindOnce([](PodUnionPtr out) { + EXPECT_EQ(16, out->get_f_int16()); + })); base::RunLoop().RunUntilIdle(); }
diff --git a/mojo/public/cpp/bindings/tests/validation_unittest.cc b/mojo/public/cpp/bindings/tests/validation_unittest.cc index d1d6c99..86da0ab 100644 --- a/mojo/public/cpp/bindings/tests/validation_unittest.cc +++ b/mojo/public/cpp/bindings/tests/validation_unittest.cc
@@ -16,13 +16,13 @@ #include "base/run_loop.h" #include "base/threading/thread_task_runner_handle.h" #include "mojo/public/c/system/macros.h" -#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/connector.h" #include "mojo/public/cpp/bindings/filter_chain.h" -#include "mojo/public/cpp/bindings/interface_ptr.h" #include "mojo/public/cpp/bindings/lib/validation_errors.h" #include "mojo/public/cpp/bindings/message.h" #include "mojo/public/cpp/bindings/message_header_validator.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/validation_test_input_parser.h" #include "mojo/public/cpp/system/core.h" #include "mojo/public/cpp/system/message.h" @@ -443,28 +443,29 @@ RunValidationTests("resp_boundscheck_", &validators); } -// Test that InterfacePtr<X> applies the correct validators and they don't -// conflict with each other: +// Test that Remote<X> applies the correct validators and they don't conflict +// with each other: // - MessageHeaderValidator // - X::ResponseValidator_ -TEST_F(ValidationIntegrationTest, InterfacePtr) { - IntegrationTestInterfacePtr interface_ptr = MakeProxy( - InterfacePtrInfo<IntegrationTestInterface>(testee_endpoint(), 0u)); - interface_ptr.internal_state()->EnableTestingMode(); +TEST_F(ValidationIntegrationTest, Remote) { + Remote<IntegrationTestInterface> remote( + PendingRemote<IntegrationTestInterface>(testee_endpoint(), 0u)); + remote.internal_state()->EnableTestingMode(); RunValidationTests("integration_intf_resp", test_message_receiver()); RunValidationTests("integration_msghdr", test_message_receiver()); } -// Test that Binding<X> applies the correct validators and they don't -// conflict with each other: +// Test that Receiver<X> applies the correct validators and they don't conflict +// with each other: // - MessageHeaderValidator // - X::RequestValidator_ -TEST_F(ValidationIntegrationTest, Binding) { +TEST_F(ValidationIntegrationTest, Receiver) { IntegrationTestInterfaceImpl interface_impl; - Binding<IntegrationTestInterface> binding( - &interface_impl, IntegrationTestInterfaceRequest(testee_endpoint())); - binding.EnableTestingMode(); + Receiver<IntegrationTestInterface> receiver( + &interface_impl, + PendingReceiver<IntegrationTestInterface>(testee_endpoint())); + receiver.internal_state()->EnableTestingMode(); RunValidationTests("integration_intf_rqst", test_message_receiver()); RunValidationTests("integration_msghdr", test_message_receiver());
diff --git a/mojo/public/cpp/bindings/tests/variant_test_util.h b/mojo/public/cpp/bindings/tests/variant_test_util.h index f1e75b3..f2ceffb6 100644 --- a/mojo/public/cpp/bindings/tests/variant_test_util.h +++ b/mojo/public/cpp/bindings/tests/variant_test_util.h
@@ -5,23 +5,21 @@ #ifndef MOJO_PUBLIC_CPP_BINDINGS_TESTS_VARIANT_TEST_UTIL_H_ #define MOJO_PUBLIC_CPP_BINDINGS_TESTS_VARIANT_TEST_UTIL_H_ -#include <string.h> +#include <type_traits> -#include "base/logging.h" -#include "mojo/public/cpp/bindings/interface_request.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" namespace mojo { namespace test { -// Converts a request of Interface1 to a request of Interface0. Interface0 and -// Interface1 are expected to be two variants of the same mojom interface. -// In real-world use cases, users shouldn't need to worry about this. Because it -// is rare to deal with two variants of the same interface in the same app. +// Converts a PendingReceiver of Interface1 to a one of Interface0. Interface0 +// and Interface1 must be two variants of the same mojom interface. template <typename Interface0, typename Interface1> -InterfaceRequest<Interface0> ConvertInterfaceRequest( - InterfaceRequest<Interface1> request) { - DCHECK_EQ(0, strcmp(Interface0::Name_, Interface1::Name_)); - return InterfaceRequest<Interface0>(request.PassMessagePipe()); +PendingReceiver<Interface0> ConvertPendingReceiver( + PendingReceiver<Interface1> receiver) { + static_assert(std::is_base_of<typename Interface0::Base_, Interface1>::value, + "Interface types are not variants of the same mojom interface"); + return PendingReceiver<Interface0>(receiver.PassPipe()); } } // namespace test
diff --git a/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc b/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc index f7417c8..2abd36b 100644 --- a/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc +++ b/mojo/public/cpp/bindings/tests/wtf_types_unittest.cc
@@ -6,10 +6,11 @@ #include "base/message_loop/message_loop.h" #include "base/run_loop.h" #include "base/stl_util.h" -#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" #include "mojo/public/cpp/bindings/lib/serialization.h" #include "mojo/public/cpp/bindings/lib/wtf_serialization.h" +#include "mojo/public/cpp/bindings/receiver.h" +#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/tests/variant_test_util.h" #include "mojo/public/interfaces/bindings/tests/test_wtf_types.mojom-blink.h" #include "mojo/public/interfaces/bindings/tests/test_wtf_types.mojom.h" @@ -27,8 +28,8 @@ class TestWTFImpl : public TestWTF { public: - explicit TestWTFImpl(TestWTFRequest request) - : binding_(this, std::move(request)) {} + explicit TestWTFImpl(PendingReceiver<TestWTF> receiver) + : receiver_(this, std::move(receiver)) {} // mojo::test::TestWTF implementation: void EchoString(const base::Optional<std::string>& str, @@ -50,7 +51,7 @@ } private: - Binding<TestWTF> binding_; + Receiver<TestWTF> receiver_; }; class WTFTypesTest : public testing::Test { @@ -191,8 +192,9 @@ } TEST_F(WTFTypesTest, SendString) { - blink::TestWTFPtr ptr; - TestWTFImpl impl(ConvertInterfaceRequest<TestWTF>(MakeRequest(&ptr))); + Remote<blink::TestWTF> remote; + TestWTFImpl impl( + ConvertPendingReceiver<TestWTF>(remote.BindNewPipeAndPassReceiver())); WTF::Vector<WTF::String> strs = ConstructStringArray(); @@ -203,15 +205,16 @@ // - deserialized as base::Optional<std::string>; // - serialized; // - deserialized as WTF::String. - ptr->EchoString(strs[i], - base::Bind(&ExpectString, strs[i], loop.QuitClosure())); + remote->EchoString( + strs[i], base::BindOnce(&ExpectString, strs[i], loop.QuitClosure())); loop.Run(); } } TEST_F(WTFTypesTest, SendStringArray) { - blink::TestWTFPtr ptr; - TestWTFImpl impl(ConvertInterfaceRequest<TestWTF>(MakeRequest(&ptr))); + Remote<blink::TestWTF> remote; + TestWTFImpl impl( + ConvertPendingReceiver<TestWTF>(remote.BindNewPipeAndPassReceiver())); base::Optional<WTF::Vector<WTF::String>> arrs[3]; // arrs[0] is empty. @@ -228,16 +231,17 @@ // base::Optional<std::vector<base::Optional<std::string>>>; // - serialized; // - deserialized as base::Optional<WTF::Vector<WTF::String>>. - ptr->EchoStringArray( - arrs[i], base::Bind(&ExpectStringArray, base::Unretained(&arrs[i]), - loop.QuitClosure())); + remote->EchoStringArray( + arrs[i], base::BindOnce(&ExpectStringArray, base::Unretained(&arrs[i]), + loop.QuitClosure())); loop.Run(); } } TEST_F(WTFTypesTest, SendStringMap) { - blink::TestWTFPtr ptr; - TestWTFImpl impl(ConvertInterfaceRequest<TestWTF>(MakeRequest(&ptr))); + Remote<blink::TestWTF> remote; + TestWTFImpl impl( + ConvertPendingReceiver<TestWTF>(remote.BindNewPipeAndPassReceiver())); base::Optional<WTF::HashMap<WTF::String, WTF::String>> maps[3]; // maps[0] is empty. @@ -255,9 +259,9 @@ // - serialized; // - deserialized as base::Optional<WTF::HashMap<WTF::String, // WTF::String>>. - ptr->EchoStringMap(maps[i], - base::Bind(&ExpectStringMap, base::Unretained(&maps[i]), - loop.QuitClosure())); + remote->EchoStringMap( + maps[i], base::BindOnce(&ExpectStringMap, base::Unretained(&maps[i]), + loop.QuitClosure())); loop.Run(); } }
diff --git a/mojo/public/cpp/bindings/unique_receiver_set.h b/mojo/public/cpp/bindings/unique_receiver_set.h new file mode 100644 index 0000000..c75aeea --- /dev/null +++ b/mojo/public/cpp/bindings/unique_receiver_set.h
@@ -0,0 +1,31 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MOJO_PUBLIC_CPP_BINDINGS_UNIQUE_RECEIVER_SET_H_ +#define MOJO_PUBLIC_CPP_BINDINGS_UNIQUE_RECEIVER_SET_H_ + +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/unique_ptr_impl_ref_traits.h" + +namespace mojo { + +// This class manages a set of receiving endpoints where each endpoint is bound +// to a unique implementation of the interface owned by this object. That is to +// say, for every bound Receiver<T> in the set, there is a dedicated +// unique_ptr<T> owned by the set and receiving messages. +// +// Each owned implementation of T has its lifetime automatically managed by the +// UniqueReceiverSet, destroying an instance whenever its receiver is +// disconnected because the remote endpoint intentionally hung up, crashed, or +// sent malformed message. +template <typename Interface, + typename ContextType = void, + typename Deleter = std::default_delete<Interface>> +using UniqueReceiverSet = ReceiverSetBase< + Receiver<Interface, UniquePtrImplRefTraits<Interface, Deleter>>, + ContextType>; + +} // namespace mojo + +#endif // MOJO_PUBLIC_CPP_BINDINGS_UNIQUE_RECEIVER_SET_H_
diff --git a/mojo/public/interfaces/bindings/tests/sample_factory.mojom b/mojo/public/interfaces/bindings/tests/sample_factory.mojom index cb718afd..8a6cbab6 100644 --- a/mojo/public/interfaces/bindings/tests/sample_factory.mojom +++ b/mojo/public/interfaces/bindings/tests/sample_factory.mojom
@@ -15,8 +15,8 @@ handle<message_pipe>? pipe; array<handle<message_pipe>>? more_pipes; - // Interfaces can be used as members. - imported.ImportedInterface? obj; + // Interface remotes can be used as members. + pending_remote<imported.ImportedInterface>? obj; }; struct Response { @@ -33,9 +33,9 @@ DoStuff(Request request, handle<message_pipe>? pipe) => (Response response, string text); DoStuff2(handle<data_pipe_consumer> pipe) => (string text); - CreateNamedObject(NamedObject& obj); - RequestImportedInterface( - imported.ImportedInterface& obj) => (imported.ImportedInterface& obj); - TakeImportedInterface( - imported.ImportedInterface obj) => (imported.ImportedInterface obj); + CreateNamedObject(pending_receiver<NamedObject> obj); + RequestImportedInterface(pending_receiver<imported.ImportedInterface> obj) + => (pending_receiver<imported.ImportedInterface> obj); + TakeImportedInterface(pending_remote<imported.ImportedInterface> obj) + => (pending_remote<imported.ImportedInterface> obj); };
diff --git a/mojo/public/interfaces/bindings/tests/sample_service.mojom b/mojo/public/interfaces/bindings/tests/sample_service.mojom index 62ff1a8b..682cb3a 100644 --- a/mojo/public/interfaces/bindings/tests/sample_service.mojom +++ b/mojo/public/interfaces/bindings/tests/sample_service.mojom
@@ -101,12 +101,13 @@ EXTRA }; const uint8 kFavoriteBaz = 1; - Frobinate@0(Foo? foo@0, BazOptions baz@1, Port? port@2) => (int32 result@0); - GetPort@1(Port& port @0); + Frobinate@0(Foo? foo@0, BazOptions baz@1, pending_remote<Port>? port@2) + => (int32 result@0); + GetPort@1(pending_receiver<Port> receiver @0); }; // This interface is referenced above where it is defined. It also refers to // itself from a method. interface Port { - PostMessageToPort@0(string message_text@0, Port port@1); + PostMessageToPort@0(string message_text@0, pending_remote<Port> port@1); };
diff --git a/mojo/public/interfaces/bindings/tests/scoping.mojom b/mojo/public/interfaces/bindings/tests/scoping.mojom index 2e9edb1..d58c86c 100644 --- a/mojo/public/interfaces/bindings/tests/scoping.mojom +++ b/mojo/public/interfaces/bindings/tests/scoping.mojom
@@ -5,11 +5,11 @@ module mojo.test; interface A { - GetB(B& b); + GetB(pending_receiver<B> b); }; interface B { - GetC(C& c); + GetC(pending_receiver<C> c); }; interface C {
diff --git a/mojo/public/interfaces/bindings/tests/test_data_view.mojom b/mojo/public/interfaces/bindings/tests/test_data_view.mojom index 1fe8c6a..ba7822b 100644 --- a/mojo/public/interfaces/bindings/tests/test_data_view.mojom +++ b/mojo/public/interfaces/bindings/tests/test_data_view.mojom
@@ -33,7 +33,7 @@ array<bool> f_bool_array; array<int32> f_int32_array; array<TestEnum> f_enum_array; - array<TestInterface> f_interface_array; + array<pending_remote<TestInterface>> f_interface_array; array<array<int32>> f_nested_array; array<NestedStruct> f_struct_array; array<TestUnion> f_union_array;
diff --git a/mojo/public/interfaces/bindings/tests/test_structs.mojom b/mojo/public/interfaces/bindings/tests/test_structs.mojom index c7dc10e..27cbe5c 100644 --- a/mojo/public/interfaces/bindings/tests/test_structs.mojom +++ b/mojo/public/interfaces/bindings/tests/test_structs.mojom
@@ -158,8 +158,8 @@ array<int64> f3; array<float> f4; array<double> f5; - array<SomeInterface> f6; - array<SomeInterface&> f7; + array<pending_remote<SomeInterface>> f6; + array<pending_receiver<SomeInterface>> f7; }; // Used to verify that various float and double values can be encoded and @@ -378,7 +378,7 @@ }; struct ContainsInterface { - SomeInterface some_interface; + pending_remote<SomeInterface> some_interface; }; // Verify that a field can be called |other|. @@ -390,7 +390,7 @@ // Used to verify that structs can contain interface requests. struct ContainsInterfaceRequest { - SomeInterface& request; + pending_receiver<SomeInterface> request; }; // Used to verify that boolean fields are correctly serialized/deserialized.
diff --git a/mojo/public/interfaces/bindings/tests/test_sync_methods.mojom b/mojo/public/interfaces/bindings/tests/test_sync_methods.mojom index 3b8cfe6..b5a7911 100644 --- a/mojo/public/interfaces/bindings/tests/test_sync_methods.mojom +++ b/mojo/public/interfaces/bindings/tests/test_sync_methods.mojom
@@ -38,7 +38,6 @@ AsyncEcho(int32 value) => (int32 result); - SendInterface(associated TestSync ptr); - - SendRequest(associated TestSync& request); + SendRemote(pending_associated_remote<TestSync> remote); + SendReceiver(pending_associated_receiver<TestSync> receiver); };
diff --git a/mojo/public/interfaces/bindings/tests/test_unions.mojom b/mojo/public/interfaces/bindings/tests/test_unions.mojom index 4343bc7..6abffe0 100644 --- a/mojo/public/interfaces/bindings/tests/test_unions.mojom +++ b/mojo/public/interfaces/bindings/tests/test_unions.mojom
@@ -50,8 +50,8 @@ handle<data_pipe_consumer> f_data_pipe_consumer; handle<data_pipe_producer> f_data_pipe_producer; handle<shared_buffer> f_shared_buffer; - SmallCache f_small_cache; - SmallCache& f_small_cache_request; + pending_remote<SmallCache> f_small_cache; + pending_receiver<SmallCache> f_small_cache_receiver; }; struct WrapperStruct {
diff --git a/mojo/public/interfaces/bindings/tests/validation_test_associated_interfaces.mojom b/mojo/public/interfaces/bindings/tests/validation_test_associated_interfaces.mojom index 2fa77ff..0afad813 100644 --- a/mojo/public/interfaces/bindings/tests/validation_test_associated_interfaces.mojom +++ b/mojo/public/interfaces/bindings/tests/validation_test_associated_interfaces.mojom
@@ -10,9 +10,9 @@ interface InterfaceX {}; interface AssociatedConformanceTestInterface { - Method0(associated InterfaceX param0); - Method1(associated InterfaceX& param0); - Method2(associated InterfaceX? param0); - Method3(array<associated InterfaceX> param0); + Method0(pending_associated_remote<InterfaceX> param0); + Method1(pending_associated_receiver<InterfaceX> param0); + Method2(pending_associated_remote<InterfaceX>? param0); + Method3(array<pending_associated_remote<InterfaceX>> param0); };
diff --git a/mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom b/mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom index ab69045..44e938a 100644 --- a/mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom +++ b/mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom
@@ -91,11 +91,12 @@ Method10(map<string, uint8> param0); Method11(StructG param0); Method12(float param0) => (float param0); - Method13(InterfaceA? param0, uint32 param1, InterfaceA? param2); + Method13(InterfaceA? param0, uint32 param1, + InterfaceA? param2); Method14(EnumA param0, EnumB param1); Method15(array<EnumA>? param0, array<EnumB>? param1); Method16(map<EnumA, EnumA>? param0); - Method17(array<InterfaceA> param0); + Method17(array<pending_remote<InterfaceA>> param0); Method18(UnionA? param0); Method19(Recursive recursive); Method20(map<StructB, uint8> param0);
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl index 0334394..f8b28e7 100644 --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_declaration.tmpl
@@ -20,6 +20,7 @@ static constexpr bool PassesAssociatedKinds_ = {% if interface|passes_associated_kinds %}true{% else %}false{% endif %}; static constexpr bool HasSyncMethods_ = {% if interface|has_sync_methods %}true{% else %}false{% endif %}; + using Base_ = {{interface.name}}InterfaceBase; using Proxy_ = {{interface.name}}Proxy; template <typename ImplRefTraits>
diff --git a/mojo/public/tools/bindings/pylib/mojom/generate/pack.py b/mojo/public/tools/bindings/pylib/mojom/generate/pack.py index 98e4284..66c707a4 100644 --- a/mojo/public/tools/bindings/pylib/mojom/generate/pack.py +++ b/mojo/public/tools/bindings/pylib/mojom/generate/pack.py
@@ -64,7 +64,8 @@ @classmethod def GetAlignmentForKind(cls, kind): - if isinstance(kind, (mojom.Interface, mojom.AssociatedInterface)): + if isinstance(kind, (mojom.Interface, mojom.AssociatedInterface, + mojom.PendingRemote, mojom.PendingAssociatedRemote)): return 4 if isinstance(kind, mojom.Union): return 8
diff --git a/net/BUILD.gn b/net/BUILD.gn index 584c613..2ebf67a 100644 --- a/net/BUILD.gn +++ b/net/BUILD.gn
@@ -1206,6 +1206,11 @@ "third_party/mozilla_security_manager/nsNSSCertificateDB.h", "third_party/mozilla_security_manager/nsPKCS12Blob.cpp", "third_party/mozilla_security_manager/nsPKCS12Blob.h", + "third_party/quiche/src/common/platform/api/quiche_logging.h", + "third_party/quiche/src/common/platform/api/quiche_ptr_util.h", + "third_party/quiche/src/common/platform/api/quiche_test.h", + "third_party/quiche/src/common/platform/api/quiche_unordered_containers.h", + "third_party/quiche/src/common/simple_linked_hash_map.h", "third_party/quiche/src/http2/decoder/decode_buffer.cc", "third_party/quiche/src/http2/decoder/decode_buffer.h", "third_party/quiche/src/http2/decoder/decode_http2_structures.cc", @@ -1291,10 +1296,13 @@ "third_party/quiche/src/http2/http2_structures.h", "third_party/quiche/src/http2/platform/api/http2_arraysize.h", "third_party/quiche/src/http2/platform/api/http2_bug_tracker.h", + "third_party/quiche/src/http2/platform/api/http2_containers.h", + "third_party/quiche/src/http2/platform/api/http2_estimate_memory_usage.h", "third_party/quiche/src/http2/platform/api/http2_export.h", "third_party/quiche/src/http2/platform/api/http2_flag_utils.h", "third_party/quiche/src/http2/platform/api/http2_flags.h", "third_party/quiche/src/http2/platform/api/http2_logging.h", + "third_party/quiche/src/http2/platform/api/http2_macros.h", "third_party/quiche/src/http2/platform/api/http2_optional.h", "third_party/quiche/src/http2/platform/api/http2_ptr_util.h", "third_party/quiche/src/http2/platform/api/http2_reconstruct_object.h", @@ -1722,6 +1730,7 @@ "third_party/quiche/src/spdy/platform/api/spdy_estimate_memory_usage.h", "third_party/quiche/src/spdy/platform/api/spdy_export.h", "third_party/quiche/src/spdy/platform/api/spdy_flags.h", + "third_party/quiche/src/spdy/platform/api/spdy_logging.h", "third_party/quiche/src/spdy/platform/api/spdy_macros.h", "third_party/quiche/src/spdy/platform/api/spdy_mem_slice.h", "third_party/quiche/src/spdy/platform/api/spdy_ptr_util.h",
diff --git a/net/android/java/NetError.template b/net/android/java/NetError.template index f6c1661..2702834 100644 --- a/net/android/java/NetError.template +++ b/net/android/java/NetError.template
@@ -4,7 +4,21 @@ package org.chromium.net; -public class NetError { -#define NET_ERROR(name, value) public static final int ERR_##name = value; +import android.support.annotation.IntDef; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@IntDef({ +#define NET_ERROR(name, value) NetError.ERR_##name, #include "net/base/net_error_list.h" +#undef NET_ERROR +NetError.OK +}) +@Retention(RetentionPolicy.SOURCE) +public @interface NetError { +int OK = 0; +#define NET_ERROR(name, value) int ERR_##name = value; +#include "net/base/net_error_list.h" +#undef NET_ERROR }
diff --git a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java index 8fa3a178..e4fff90 100644 --- a/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java +++ b/net/android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java
@@ -249,11 +249,12 @@ */ private void processResult(Bundle result, RequestData requestData) { mSpnegoContext = result.getBundle(HttpNegotiateConstants.KEY_SPNEGO_CONTEXT); + @NetError int status; switch (result.getInt( HttpNegotiateConstants.KEY_SPNEGO_RESULT, HttpNegotiateConstants.ERR_UNEXPECTED)) { case HttpNegotiateConstants.OK: - status = 0; + status = NetError.OK; break; case HttpNegotiateConstants.ERR_UNEXPECTED: status = NetError.ERR_UNEXPECTED;
diff --git a/net/base/escape.cc b/net/base/escape.cc index b37078cb..2245fc5 100644 --- a/net/base/escape.cc +++ b/net/base/escape.cc
@@ -487,7 +487,7 @@ return base::UTF8ToUTF16WithAdjustments(text, adjustments); } -void UnescapeBinaryURLComponent(const std::string& escaped_text, +void UnescapeBinaryURLComponent(base::StringPiece escaped_text, UnescapeRule::Type rules, std::string* unescaped_text) { // Only NORMAL and REPLACE_PLUS_WITH_SPACE are supported.
diff --git a/net/base/escape.h b/net/base/escape.h index 8e86e61f..151dab3 100644 --- a/net/base/escape.h +++ b/net/base/escape.h
@@ -150,11 +150,11 @@ // // Only the NORMAL and REPLACE_PLUS_WITH_SPACE rules are allowed. // |escaped_text| and |unescaped_text| can be the same string. -NET_EXPORT void UnescapeBinaryURLComponent(const std::string& escaped_text, +NET_EXPORT void UnescapeBinaryURLComponent(base::StringPiece escaped_text, UnescapeRule::Type rules, std::string* unescaped_text); NET_EXPORT inline void UnescapeBinaryURLComponent( - const std::string& escaped_text, + base::StringPiece escaped_text, std::string* unescaped_text) { UnescapeBinaryURLComponent(escaped_text, UnescapeRule::NORMAL, unescaped_text);
diff --git a/net/base/net_errors.cc b/net/base/net_errors.cc index ed7f9fb..ed6bc4514 100644 --- a/net/base/net_errors.cc +++ b/net/base/net_errors.cc
@@ -22,7 +22,7 @@ } std::string ErrorToShortString(int error) { - if (error == 0) + if (error == OK) return "OK"; const char* error_string;
diff --git a/net/base/net_errors.h b/net/base/net_errors.h index 489c5e2..f24540a 100644 --- a/net/base/net_errors.h +++ b/net/base/net_errors.h
@@ -16,7 +16,7 @@ // Error values are negative. enum Error { - // No error. + // No error. Change NetError.template after changing value. OK = 0, #define NET_ERROR(label, value) ERR_ ## label = value,
diff --git a/net/http/http_network_session.cc b/net/http/http_network_session.cc index f14d716..088895ad 100644 --- a/net/http/http_network_session.cc +++ b/net/http/http_network_session.cc
@@ -137,7 +137,8 @@ quic_initial_rtt_for_handshake_milliseconds(0), http_09_on_non_default_ports_enabled(false), disable_idle_sockets_close_on_memory_pressure(false) { - quic_supported_versions.push_back(quic::QUIC_VERSION_43); + quic_supported_versions.push_back(quic::ParsedQuicVersion( + quic::PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_43)); enable_early_data = base::FeatureList::IsEnabled(features::kEnableTLS13EarlyData); } @@ -333,7 +334,7 @@ auto supported_versions(std::make_unique<base::ListValue>()); for (const auto& version : params_.quic_supported_versions) - supported_versions->AppendString(QuicVersionToString(version)); + supported_versions->AppendString(ParsedQuicVersionToString(version)); dict->Set("supported_versions", std::move(supported_versions)); auto origins_to_force_quic_on(std::make_unique<base::ListValue>());
diff --git a/net/http/http_network_session.h b/net/http/http_network_session.h index ead9752..9de62fae 100644 --- a/net/http/http_network_session.h +++ b/net/http/http_network_session.h
@@ -139,7 +139,7 @@ // QUIC runtime configuration options. // Versions of QUIC which may be used. - quic::QuicTransportVersionVector quic_supported_versions; + quic::ParsedQuicVersionVector quic_supported_versions; // User agent description to send in the QUIC handshake. std::string quic_user_agent_id; // Limit on the size of QUIC packets.
diff --git a/net/http/http_proxy_connect_job.cc b/net/http/http_proxy_connect_job.cc index 83f167d2..4bc16b74 100644 --- a/net/http/http_proxy_connect_job.cc +++ b/net/http/http_proxy_connect_job.cc
@@ -465,7 +465,7 @@ ProxyServer::Direct(), PRIVACY_MODE_DISABLED, SpdySessionKey::IsProxySession::kTrue, socket_tag()); if (common_connect_job_params()->spdy_session_pool->FindAvailableSession( - key, /* enable_ip_based_pooling = */ true, + key, /* enable_ip_based_pooling = */ false, /* is_websocket = */ false, net_log())) { using_spdy_ = true; next_state_ = STATE_SPDY_PROXY_CREATE_STREAM; @@ -593,7 +593,7 @@ SpdySessionKey::IsProxySession::kTrue, socket_tag()); base::WeakPtr<SpdySession> spdy_session = common_connect_job_params()->spdy_session_pool->FindAvailableSession( - key, /* enable_ip_based_pooling = */ true, + key, /* enable_ip_based_pooling = */ false, /* is_websocket = */ false, net_log()); // It's possible that a session to the proxy has recently been created if (spdy_session) { @@ -664,10 +664,10 @@ common_connect_job_params()->quic_stream_factory); // Use default QUIC version, which is the version listed supported version. - quic::QuicTransportVersion quic_version = + quic::ParsedQuicVersion quic_version = common_connect_job_params()->quic_supported_versions->front(); return quic_stream_request_->Request( - proxy_server, quic_version, ssl_params->privacy_mode(), + proxy_server, quic_version.transport_version, ssl_params->privacy_mode(), kH2QuicTunnelPriority, socket_tag(), ssl_params->ssl_config().GetCertVerifyFlags(), GURL("https://" + proxy_server.ToString()), net_log(),
diff --git a/net/http/http_server_properties.cc b/net/http/http_server_properties.cc index 8649ac196..cea0732 100644 --- a/net/http/http_server_properties.cc +++ b/net/http/http_server_properties.cc
@@ -86,14 +86,14 @@ base::Time expiration) { DCHECK_EQ(alternative_service.protocol, kProtoHTTP2); return AlternativeServiceInfo(alternative_service, expiration, - quic::QuicTransportVersionVector()); + quic::ParsedQuicVersionVector()); } // static AlternativeServiceInfo AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) { + const quic::ParsedQuicVersionVector& advertised_versions) { DCHECK_EQ(alternative_service.protocol, kProtoQUIC); return AlternativeServiceInfo(alternative_service, expiration, advertised_versions); @@ -106,11 +106,12 @@ AlternativeServiceInfo::AlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) + const quic::ParsedQuicVersionVector& advertised_versions) : alternative_service_(alternative_service), expiration_(expiration) { if (alternative_service_.protocol == kProtoQUIC) { advertised_versions_ = advertised_versions; - std::sort(advertised_versions_.begin(), advertised_versions_.end()); + std::sort(advertised_versions_.begin(), advertised_versions_.end(), + TransportVersionLessThan); } } @@ -134,6 +135,13 @@ exploded.day_of_month, exploded.hour, exploded.minute, exploded.second); } +// static +bool AlternativeServiceInfo::TransportVersionLessThan( + const quic::ParsedQuicVersion& lhs, + const quic::ParsedQuicVersion& rhs) { + return lhs.transport_version < rhs.transport_version; +} + std::ostream& operator<<(std::ostream& os, const AlternativeService& alternative_service) { os << alternative_service.ToString();
diff --git a/net/http/http_server_properties.h b/net/http/http_server_properties.h index 999bd2b..a1117925d 100644 --- a/net/http/http_server_properties.h +++ b/net/http/http_server_properties.h
@@ -133,7 +133,7 @@ static AlternativeServiceInfo CreateQuicAlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions); + const quic::ParsedQuicVersionVector& advertised_versions); AlternativeServiceInfo(); ~AlternativeServiceInfo(); @@ -173,12 +173,13 @@ } void set_advertised_versions( - const quic::QuicTransportVersionVector& advertised_versions) { + const quic::ParsedQuicVersionVector& advertised_versions) { if (alternative_service_.protocol != kProtoQUIC) return; advertised_versions_ = advertised_versions; - std::sort(advertised_versions_.begin(), advertised_versions_.end()); + std::sort(advertised_versions_.begin(), advertised_versions_.end(), + TransportVersionLessThan); } const AlternativeService& alternative_service() const { @@ -193,7 +194,7 @@ base::Time expiration() const { return expiration_; } - const quic::QuicTransportVersionVector& advertised_versions() const { + const quic::ParsedQuicVersionVector& advertised_versions() const { return advertised_versions_; } @@ -201,7 +202,10 @@ AlternativeServiceInfo( const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions); + const quic::ParsedQuicVersionVector& advertised_versions); + + static bool TransportVersionLessThan(const quic::ParsedQuicVersion& lhs, + const quic::ParsedQuicVersion& rhs); AlternativeService alternative_service_; base::Time expiration_; @@ -210,7 +214,7 @@ // by Chrome. If empty, defaults to versions used by the current instance of // the netstack. // This list MUST be sorted in ascending order. - quic::QuicTransportVersionVector advertised_versions_; + quic::ParsedQuicVersionVector advertised_versions_; }; struct NET_EXPORT SupportsQuic { @@ -373,7 +377,7 @@ const url::SchemeHostPort& origin, const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) = 0; + const quic::ParsedQuicVersionVector& advertised_versions) = 0; // Set alternative services for |origin|. Previous alternative services for // |origin| are discarded.
diff --git a/net/http/http_server_properties_impl.cc b/net/http/http_server_properties_impl.cc index 0a872c3..f18530db 100644 --- a/net/http/http_server_properties_impl.cc +++ b/net/http/http_server_properties_impl.cc
@@ -385,7 +385,7 @@ const url::SchemeHostPort& origin, const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) { + const quic::ParsedQuicVersionVector& advertised_versions) { DCHECK(alternative_service.protocol == kProtoQUIC); return SetAlternativeServices(
diff --git a/net/http/http_server_properties_impl.h b/net/http/http_server_properties_impl.h index e7fdd20..78c8cf0b 100644 --- a/net/http/http_server_properties_impl.h +++ b/net/http/http_server_properties_impl.h
@@ -109,7 +109,7 @@ const url::SchemeHostPort& origin, const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) override; + const quic::ParsedQuicVersionVector& advertised_versions) override; bool SetAlternativeServices(const url::SchemeHostPort& origin, const AlternativeServiceInfoVector& alternative_service_info_vector) override;
diff --git a/net/http/http_server_properties_manager.cc b/net/http/http_server_properties_manager.cc index 50658601..9b780f4c 100644 --- a/net/http/http_server_properties_manager.cc +++ b/net/http/http_server_properties_manager.cc
@@ -225,7 +225,7 @@ const url::SchemeHostPort& origin, const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) { + const quic::ParsedQuicVersionVector& advertised_versions) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); const bool changed = http_server_properties_impl_->SetQuicAlternativeService( origin, alternative_service, expiration, advertised_versions); @@ -842,7 +842,7 @@ << "server: " << server_str; return false; } - quic::QuicTransportVersionVector advertised_versions; + quic::ParsedQuicVersionVector advertised_versions; for (const auto& value : *versions_list) { int version; if (!value.GetAsInteger(&version)) { @@ -850,7 +850,10 @@ << server_str; return false; } - advertised_versions.push_back(quic::QuicTransportVersion(version)); + // TODO(nharper): Support ParsedQuicVersions (instead of + // QuicTransportVersions) in AlternativeServiceMap. + advertised_versions.push_back(quic::ParsedQuicVersion( + quic::PROTOCOL_QUIC_CRYPTO, quic::QuicTransportVersion(version))); } alternative_service_info->set_advertised_versions(advertised_versions); } @@ -1175,7 +1178,7 @@ std::unique_ptr<base::ListValue> advertised_versions_list = std::make_unique<base::ListValue>(); for (const auto& version : alternative_service_info.advertised_versions()) { - advertised_versions_list->AppendInteger(version); + advertised_versions_list->AppendInteger(version.transport_version); } alternative_service_dict->SetList(kAdvertisedVersionsKey, std::move(advertised_versions_list));
diff --git a/net/http/http_server_properties_manager.h b/net/http/http_server_properties_manager.h index 7d63bb9..a8ecf31 100644 --- a/net/http/http_server_properties_manager.h +++ b/net/http/http_server_properties_manager.h
@@ -106,7 +106,7 @@ const url::SchemeHostPort& origin, const AlternativeService& alternative_service, base::Time expiration, - const quic::QuicTransportVersionVector& advertised_versions) override; + const quic::ParsedQuicVersionVector& advertised_versions) override; bool SetAlternativeServices(const url::SchemeHostPort& origin, const AlternativeServiceInfoVector& alternative_service_info_vector) override;
diff --git a/net/http/http_server_properties_manager_unittest.cc b/net/http/http_server_properties_manager_unittest.cc index 7a78852..8673b83 100644 --- a/net/http/http_server_properties_manager_unittest.cc +++ b/net/http/http_server_properties_manager_unittest.cc
@@ -144,7 +144,7 @@ MockPrefDelegate* pref_delegate_; // Owned by HttpServerPropertiesManager. std::unique_ptr<HttpServerPropertiesManager> http_server_props_manager_; base::Time one_day_from_now_; - quic::QuicTransportVersionVector advertised_versions_; + quic::ParsedQuicVersionVector advertised_versions_; private: DISALLOW_COPY_AND_ASSIGN(HttpServerPropertiesManagerTest); @@ -1447,8 +1447,11 @@ AlternativeService quic_alternative_service1(kProtoQUIC, "", 443); base::Time expiration1; ASSERT_TRUE(base::Time::FromUTCString("2036-12-01 10:00:00", &expiration1)); - quic::QuicTransportVersionVector advertised_versions = { - quic::QUIC_VERSION_44, quic::QUIC_VERSION_39}; + quic::ParsedQuicVersionVector advertised_versions = { + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_44), + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_39)}; alternative_service_info_vector.push_back( AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( quic_alternative_service1, expiration1, advertised_versions)); @@ -1554,11 +1557,15 @@ EXPECT_EQ(123, alternative_service_info_vector[1].alternative_service().port); EXPECT_EQ(base::Time::Max(), alternative_service_info_vector[1].expiration()); // Verify advertised versions. - const quic::QuicTransportVersionVector loaded_advertised_versions = + const quic::ParsedQuicVersionVector loaded_advertised_versions = alternative_service_info_vector[1].advertised_versions(); EXPECT_EQ(2u, loaded_advertised_versions.size()); - EXPECT_EQ(quic::QUIC_VERSION_39, loaded_advertised_versions[0]); - EXPECT_EQ(quic::QUIC_VERSION_44, loaded_advertised_versions[1]); + EXPECT_EQ(quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_39), + loaded_advertised_versions[0]); + EXPECT_EQ(quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_44), + loaded_advertised_versions[1]); } TEST_P(HttpServerPropertiesManagerTest, @@ -1615,8 +1622,11 @@ // AlternativeService. AlternativeServiceInfoVector alternative_service_info_vector_2; // Quic alternative service set with two advertised QUIC versions. - quic::QuicTransportVersionVector advertised_versions = { - quic::QUIC_VERSION_44, quic::QUIC_VERSION_39}; + quic::ParsedQuicVersionVector advertised_versions = { + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_44), + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_39)}; alternative_service_info_vector_2.push_back( AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( quic_alternative_service1, expiration1, advertised_versions)); @@ -1645,8 +1655,11 @@ // #3: Set AlternativeService with same advertised_versions. AlternativeServiceInfoVector alternative_service_info_vector_3; // A same set of QUIC versions but listed in a different order. - quic::QuicTransportVersionVector advertised_versions_2 = { - quic::QUIC_VERSION_39, quic::QUIC_VERSION_44}; + quic::ParsedQuicVersionVector advertised_versions_2 = { + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_39), + quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, + quic::QUIC_VERSION_44)}; alternative_service_info_vector_3.push_back( AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( quic_alternative_service1, expiration1, advertised_versions_2));
diff --git a/net/http/http_stream_factory.cc b/net/http/http_stream_factory.cc index 6eded7b5..3bca1d7c 100644 --- a/net/http/http_stream_factory.cc +++ b/net/http/http_stream_factory.cc
@@ -75,7 +75,7 @@ continue; } // Check if QUIC version is supported. Filter supported QUIC versions. - quic::QuicTransportVersionVector advertised_versions; + quic::ParsedQuicVersionVector advertised_versions; if (protocol == kProtoQUIC && !alternative_service_entry.version.empty()) { advertised_versions = FilterSupportedAltSvcVersions( alternative_service_entry, session->params().quic_supported_versions,
diff --git a/net/http/http_stream_factory_job.cc b/net/http/http_stream_factory_job.cc index 28af63b..1fe654c 100644 --- a/net/http/http_stream_factory_job.cc +++ b/net/http/http_stream_factory_job.cc
@@ -106,7 +106,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, const ProxyServer& alternative_proxy_server, bool is_websocket, bool enable_ip_based_pooling, @@ -131,7 +131,11 @@ origin_url_.SchemeIs(url::kWssScheme) && proxy_info_.is_direct() && session_->params().enable_websocket_over_http2), - enable_ip_based_pooling_(enable_ip_based_pooling), + // Don't use IP connection pooling for HTTP over HTTPS proxies. It doesn't + // get us much, and testing it is more effort than its worth. + enable_ip_based_pooling_(enable_ip_based_pooling && + !(proxy_info_.proxy_server().is_https() && + origin_url_.SchemeIs(url::kHttpScheme))), delegate_(delegate), job_type_(job_type), using_ssl_(origin_url_.SchemeIs(url::kHttpsScheme) || @@ -172,14 +176,14 @@ // The Job is forced to use QUIC without a designated version, try the // preferred QUIC version that is supported by default. - if (quic_version_ == quic::QUIC_VERSION_UNSUPPORTED && + if (quic_version_ == quic::UnsupportedQuicVersion() && ShouldForceQuic(session, destination, origin_url, proxy_info, using_ssl_)) { quic_version_ = session->params().quic_supported_versions[0]; } if (using_quic_) - DCHECK_NE(quic_version_, quic::QUIC_VERSION_UNSUPPORTED); + DCHECK_NE(quic_version_, quic::UnsupportedQuicVersion()); DCHECK(session); if (alternative_protocol != kProtoUnknown) { @@ -766,9 +770,9 @@ ssl_config = &server_ssl_config_; } int rv = quic_request_.Request( - destination, quic_version_, request_info_.privacy_mode, priority_, - request_info_.socket_tag, ssl_config->GetCertVerifyFlags(), url, - net_log_, &net_error_details_, + destination, quic_version_.transport_version, + request_info_.privacy_mode, priority_, request_info_.socket_tag, + ssl_config->GetCertVerifyFlags(), url, net_log_, &net_error_details_, base::BindOnce(&Job::OnFailedOnDefaultNetwork, ptr_factory_.GetWeakPtr()), io_callback_); @@ -1302,7 +1306,7 @@ return std::make_unique<HttpStreamFactory::Job>( delegate, job_type, session, request_info, priority, proxy_info, server_ssl_config, proxy_ssl_config, destination, origin_url, - kProtoUnknown, quic::QUIC_VERSION_UNSUPPORTED, ProxyServer(), + kProtoUnknown, quic::UnsupportedQuicVersion(), ProxyServer(), is_websocket, enable_ip_based_pooling, net_log); } @@ -1319,7 +1323,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, bool is_websocket, bool enable_ip_based_pooling, NetLog* net_log) { @@ -1349,7 +1353,7 @@ return std::make_unique<HttpStreamFactory::Job>( delegate, job_type, session, request_info, priority, proxy_info, server_ssl_config, proxy_ssl_config, destination, origin_url, - kProtoUnknown, quic::QUIC_VERSION_UNSUPPORTED, alternative_proxy_server, + kProtoUnknown, quic::UnsupportedQuicVersion(), alternative_proxy_server, is_websocket, enable_ip_based_pooling, net_log); }
diff --git a/net/http/http_stream_factory_job.h b/net/http/http_stream_factory_job.h index 3946a9a..4923750 100644 --- a/net/http/http_stream_factory_job.h +++ b/net/http/http_stream_factory_job.h
@@ -168,7 +168,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, const ProxyServer& alternative_proxy_server, bool is_websocket, bool enable_ip_based_pooling, @@ -411,9 +411,9 @@ // True if Job uses QUIC. const bool using_quic_; - // quic::QuicTransportVersion that should be used to connect to the QUIC + // quic::ParsedQuicVersion that should be used to connect to the QUIC // server if Job uses QUIC. - quic::QuicTransportVersion quic_version_; + quic::ParsedQuicVersion quic_version_; // True if Alternative Service protocol field requires that HTTP/2 is used. // In this case, Job fails if it cannot pool to an existing SpdySession and @@ -518,7 +518,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, bool is_websocket, bool enable_ip_based_pooling, NetLog* net_log);
diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stream_factory_job_controller.cc index 4d3bcc185..d208cd01 100644 --- a/net/http/http_stream_factory_job_controller.cc +++ b/net/http/http_stream_factory_job_controller.cc
@@ -681,11 +681,11 @@ alternative_service_info_ = GetAlternativeServiceInfoFor(request_info_, delegate_, stream_type_); } - quic::QuicTransportVersion quic_version = quic::QUIC_VERSION_UNSUPPORTED; + quic::ParsedQuicVersion quic_version = quic::UnsupportedQuicVersion(); if (alternative_service_info_.protocol() == kProtoQUIC) { quic_version = SelectQuicVersion(alternative_service_info_.advertised_versions()); - DCHECK_NE(quic_version, quic::QUIC_VERSION_UNSUPPORTED); + DCHECK_NE(quic_version, quic::UnsupportedQuicVersion()); } if (is_preconnect_) { @@ -1060,7 +1060,7 @@ // If there is no QUIC version in the advertised versions that is // supported, ignore this entry. if (SelectQuicVersion(alternative_service_info.advertised_versions()) == - quic::QUIC_VERSION_UNSUPPORTED) + quic::UnsupportedQuicVersion()) continue; // Check whether there is an existing QUIC session to use for this origin. @@ -1095,23 +1095,23 @@ return first_alternative_service_info; } -quic::QuicTransportVersion HttpStreamFactory::JobController::SelectQuicVersion( - const quic::QuicTransportVersionVector& advertised_versions) { - const quic::QuicTransportVersionVector& supported_versions = +quic::ParsedQuicVersion HttpStreamFactory::JobController::SelectQuicVersion( + const quic::ParsedQuicVersionVector& advertised_versions) { + const quic::ParsedQuicVersionVector& supported_versions = session_->params().quic_supported_versions; if (advertised_versions.empty()) return supported_versions[0]; - for (const quic::QuicTransportVersion& supported : supported_versions) { - for (const quic::QuicTransportVersion& advertised : advertised_versions) { + for (const quic::ParsedQuicVersion& supported : supported_versions) { + for (const quic::ParsedQuicVersion& advertised : advertised_versions) { if (supported == advertised) { - DCHECK_NE(quic::QUIC_VERSION_UNSUPPORTED, supported); + DCHECK_NE(quic::UnsupportedQuicVersion(), supported); return supported; } } } - return quic::QUIC_VERSION_UNSUPPORTED; + return quic::UnsupportedQuicVersion(); } bool HttpStreamFactory::JobController::ShouldCreateAlternativeProxyServerJob(
diff --git a/net/http/http_stream_factory_job_controller.h b/net/http/http_stream_factory_job_controller.h index e549dd0..f24cdd7a 100644 --- a/net/http/http_stream_factory_job_controller.h +++ b/net/http/http_stream_factory_job_controller.h
@@ -250,13 +250,13 @@ HttpStreamRequest::Delegate* delegate, HttpStreamRequest::StreamType stream_type); - // Returns a quic::QuicTransportVersion that has been advertised in + // Returns a quic::ParsedQuicVersion that has been advertised in // |advertised_versions| and is supported. If more than one - // QuicTransportVersions are supported, the first matched in the supported + // ParsedQuicVersions are supported, the first matched in the supported // versions will be returned. If no mutually supported version is found, // QUIC_VERSION_UNSUPPORTED_VERSION will be returned. - quic::QuicTransportVersion SelectQuicVersion( - const quic::QuicTransportVersionVector& advertised_versions); + quic::ParsedQuicVersion SelectQuicVersion( + const quic::ParsedQuicVersionVector& advertised_versions); // Returns true if the |request_| can be fetched via an alternative // proxy server, and sets |alternative_proxy_info| to the alternative proxy
diff --git a/net/http/http_stream_factory_job_controller_unittest.cc b/net/http/http_stream_factory_job_controller_unittest.cc index 922b291..05c444f 100644 --- a/net/http/http_stream_factory_job_controller_unittest.cc +++ b/net/http/http_stream_factory_job_controller_unittest.cc
@@ -841,7 +841,7 @@ base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); session_->http_server_properties()->SetQuicAlternativeService( server, alternative_service, expiration, - {quic::QUIC_VERSION_UNSUPPORTED}); + {quic::UnsupportedQuicVersion()}); request_ = job_controller_->Start(&request_delegate_, nullptr, net_log_.bound(), @@ -2896,8 +2896,7 @@ // Set alternative service with no advertised version. session_->http_server_properties()->SetQuicAlternativeService( - server, alternative_service, expiration, - quic::QuicTransportVersionVector()); + server, alternative_service, expiration, quic::ParsedQuicVersionVector()); AlternativeServiceInfo alt_svc_info = JobControllerPeer::GetAlternativeServiceInfoFor( @@ -2908,7 +2907,7 @@ // Set alternative service for the same server with the same list of versions // that is supported. - quic::QuicTransportVersionVector supported_versions = + quic::ParsedQuicVersionVector supported_versions = session_->params().quic_supported_versions; ASSERT_TRUE(session_->http_server_properties()->SetQuicAlternativeService( server, alternative_service, expiration, supported_versions)); @@ -2916,19 +2915,22 @@ alt_svc_info = JobControllerPeer::GetAlternativeServiceInfoFor( job_controller_, request_info, &request_delegate_, HttpStreamRequest::HTTP_STREAM); - std::sort(supported_versions.begin(), supported_versions.end()); + std::sort( + supported_versions.begin(), supported_versions.end(), + [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) { + return a.transport_version < b.transport_version; + }); EXPECT_EQ(supported_versions, alt_svc_info.advertised_versions()); - quic::QuicTransportVersion unsupported_version_1( - quic::QUIC_VERSION_UNSUPPORTED); - quic::QuicTransportVersion unsupported_version_2( - quic::QUIC_VERSION_UNSUPPORTED); - for (const quic::QuicTransportVersion& version : - quic::AllSupportedTransportVersions()) { + quic::ParsedQuicVersion unsupported_version_1 = + quic::UnsupportedQuicVersion(); + quic::ParsedQuicVersion unsupported_version_2 = + quic::UnsupportedQuicVersion(); + for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) { if (std::find(supported_versions.begin(), supported_versions.end(), version) != supported_versions.end()) continue; - if (unsupported_version_1 == quic::QUIC_VERSION_UNSUPPORTED) { + if (unsupported_version_1 == quic::UnsupportedQuicVersion()) { unsupported_version_1 = version; continue; } @@ -2939,7 +2941,7 @@ // Set alternative service for the same server with two QUIC versions: // - one unsupported version: |unsupported_version_1|, // - one supported version: session_->params().quic_supported_versions[0]. - quic::QuicTransportVersionVector mixed_quic_versions = { + quic::ParsedQuicVersionVector mixed_quic_versions = { unsupported_version_1, session_->params().quic_supported_versions[0]}; ASSERT_TRUE(session_->http_server_properties()->SetQuicAlternativeService( server, alternative_service, expiration, mixed_quic_versions)); @@ -2949,7 +2951,11 @@ HttpStreamRequest::HTTP_STREAM); EXPECT_EQ(2u, alt_svc_info.advertised_versions().size()); // Verify that JobController returns the list of versions specified in set. - std::sort(mixed_quic_versions.begin(), mixed_quic_versions.end()); + std::sort( + mixed_quic_versions.begin(), mixed_quic_versions.end(), + [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) { + return a.transport_version < b.transport_version; + }); EXPECT_EQ(mixed_quic_versions, alt_svc_info.advertised_versions()); // Set alternative service for the same server with two unsupported QUIC @@ -2984,7 +2990,7 @@ // Set alternative service for www.google.com to be www.example.com over QUIC. url::SchemeHostPort server(request_info.url); base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); - quic::QuicTransportVersionVector supported_versions = + quic::ParsedQuicVersionVector supported_versions = session_->params().quic_supported_versions; session_->http_server_properties()->SetQuicAlternativeService( server, AlternativeService(kProtoQUIC, "www.example.com", 443), @@ -2995,7 +3001,11 @@ job_controller_, request_info, &request_delegate_, HttpStreamRequest::HTTP_STREAM); - std::sort(supported_versions.begin(), supported_versions.end()); + std::sort( + supported_versions.begin(), supported_versions.end(), + [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) { + return a.transport_version < b.transport_version; + }); EXPECT_EQ(kProtoQUIC, alt_svc_info.alternative_service().protocol); EXPECT_EQ(supported_versions, alt_svc_info.advertised_versions());
diff --git a/net/http/http_stream_factory_test_util.cc b/net/http/http_stream_factory_test_util.cc index bd71aa00..1e898ceb 100644 --- a/net/http/http_stream_factory_test_util.cc +++ b/net/http/http_stream_factory_test_util.cc
@@ -27,7 +27,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, const ProxyServer& alternative_proxy_server, bool is_websocket, bool enable_ip_based_pooling, @@ -80,7 +80,7 @@ auto main_job = std::make_unique<MockHttpStreamFactoryJob>( delegate, job_type, session, request_info, priority, proxy_info, SSLConfig(), SSLConfig(), destination, origin_url, kProtoUnknown, - quic::QUIC_VERSION_UNSUPPORTED, ProxyServer(), is_websocket, + quic::UnsupportedQuicVersion(), ProxyServer(), is_websocket, enable_ip_based_pooling, net_log); // Keep raw pointer to Job but pass ownership. @@ -101,7 +101,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, bool is_websocket, bool enable_ip_based_pooling, NetLog* net_log) { @@ -135,7 +135,7 @@ auto alternative_job = std::make_unique<MockHttpStreamFactoryJob>( delegate, job_type, session, request_info, priority, proxy_info, SSLConfig(), SSLConfig(), destination, origin_url, kProtoUnknown, - quic::QUIC_VERSION_UNSUPPORTED, alternative_proxy_server, is_websocket, + quic::UnsupportedQuicVersion(), alternative_proxy_server, is_websocket, enable_ip_based_pooling, net_log); // Keep raw pointer to Job but pass ownership.
diff --git a/net/http/http_stream_factory_test_util.h b/net/http/http_stream_factory_test_util.h index 5ce937a2..63ba8cc 100644 --- a/net/http/http_stream_factory_test_util.h +++ b/net/http/http_stream_factory_test_util.h
@@ -112,7 +112,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, const ProxyServer& alternative_proxy_server, bool is_websocket, bool enable_ip_based_pooling, @@ -158,7 +158,7 @@ HostPortPair destination, GURL origin_url, NextProto alternative_protocol, - quic::QuicTransportVersion quic_version, + quic::ParsedQuicVersion quic_version, bool is_websocket, bool enable_ip_based_pooling, NetLog* net_log) override;
diff --git a/net/http/http_stream_factory_unittest.cc b/net/http/http_stream_factory_unittest.cc index cc67340..ac5eacc 100644 --- a/net/http/http_stream_factory_unittest.cc +++ b/net/http/http_stream_factory_unittest.cc
@@ -2173,7 +2173,7 @@ class HttpStreamFactoryBidirectionalQuicTest : public TestWithScopedTaskEnvironment, public ::testing::WithParamInterface< - std::tuple<quic::QuicTransportVersion, bool>> { + std::tuple<quic::ParsedQuicVersion, bool>> { protected: HttpStreamFactoryBidirectionalQuicTest() : default_url_(kDefaultUrl), @@ -2209,8 +2209,7 @@ void Initialize() { params_.enable_quic = true; - params_.quic_supported_versions = - quic::test::SupportedTransportVersions(version_); + params_.quic_supported_versions = quic::test::SupportedVersions(version_); params_.quic_headers_include_h2_stream_dependency = client_headers_include_h2_stream_dependency_; @@ -2265,11 +2264,12 @@ const GURL default_url_; quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } private: - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const bool client_headers_include_h2_stream_dependency_; quic::MockClock clock_; quic::test::MockRandom random_generator_; @@ -2293,9 +2293,8 @@ INSTANTIATE_TEST_SUITE_P( VersionIncludeStreamDependencySequence, HttpStreamFactoryBidirectionalQuicTest, - ::testing::Combine( - ::testing::ValuesIn(quic::AllSupportedTransportVersions()), - ::testing::Bool())); + ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()), + ::testing::Bool())); TEST_P(HttpStreamFactoryBidirectionalQuicTest, RequestBidirectionalStreamImplQuicAlternative) {
diff --git a/net/http/http_util.cc b/net/http/http_util.cc index 6c04368..1d2251e 100644 --- a/net/http/http_util.cc +++ b/net/http/http_util.cc
@@ -665,51 +665,48 @@ // In order for a line to be continuable, it must specify a // non-blank header-name. Line continuations are specifically for // header values -- do not allow headers names to span lines. -static bool IsLineSegmentContinuable(const char* begin, const char* end) { - if (begin == end) +static bool IsLineSegmentContinuable(base::StringPiece line) { + if (line.empty()) return false; - const char* colon = std::find(begin, end, ':'); - if (colon == end) + size_t colon = line.find(':'); + if (colon == base::StringPiece::npos) return false; - const char* name_begin = begin; - const char* name_end = colon; + base::StringPiece name = line.substr(0, colon); // Name can't be empty. - if (name_begin == name_end) + if (name.empty()) return false; // Can't start with LWS (this would imply the segment is a continuation) - if (HttpUtil::IsLWS(*name_begin)) + if (HttpUtil::IsLWS(name[0])) return false; return true; } // Helper used by AssembleRawHeaders, to find the end of the status line. -static const char* FindStatusLineEnd(const char* begin, const char* end) { - size_t i = base::StringPiece(begin, end - begin).find_first_of("\r\n"); +static size_t FindStatusLineEnd(base::StringPiece str) { + size_t i = str.find_first_of("\r\n"); if (i == base::StringPiece::npos) - return end; - return begin + i; + return str.size(); + return i; } // Helper used by AssembleRawHeaders, to skip past leading LWS. -static const char* FindFirstNonLWS(const char* begin, const char* end) { - for (const char* cur = begin; cur != end; ++cur) { - if (!HttpUtil::IsLWS(*cur)) - return cur; +static base::StringPiece RemoveLeadingNonLWS(base::StringPiece str) { + for (size_t i = 0; i < str.size(); i++) { + if (!HttpUtil::IsLWS(str[i])) + return str.substr(i); } - return end; // Not found. + return base::StringPiece(); // Remove everything. } std::string HttpUtil::AssembleRawHeaders(base::StringPiece input) { std::string raw_headers; raw_headers.reserve(input.size()); - const char* input_end = input.data() + input.size(); - // Skip any leading slop, since the consumers of this output // (HttpResponseHeaders) don't deal with it. size_t status_begin_offset = @@ -718,36 +715,37 @@ input.remove_prefix(status_begin_offset); // Copy the status line. - const char* status_line_end = FindStatusLineEnd(input.data(), input_end); - raw_headers.append(input.data(), status_line_end); + size_t status_line_end = FindStatusLineEnd(input); + input.substr(0, status_line_end).AppendToString(&raw_headers); + input.remove_prefix(status_line_end); // After the status line, every subsequent line is a header line segment. // Should a segment start with LWS, it is a continuation of the previous // line's field-value. // TODO(ericroman): is this too permissive? (delimits on [\r\n]+) - base::CStringTokenizer lines(status_line_end, input_end, "\r\n"); + base::CStringTokenizer lines(input.data(), input.data() + input.size(), + "\r\n"); // This variable is true when the previous line was continuable. bool prev_line_continuable = false; while (lines.GetNext()) { - const char* line_begin = lines.token_begin(); - const char* line_end = lines.token_end(); + base::StringPiece line = lines.token_piece(); - if (prev_line_continuable && IsLWS(*line_begin)) { + if (prev_line_continuable && IsLWS(line[0])) { // Join continuation; reduce the leading LWS to a single SP. raw_headers.push_back(' '); - raw_headers.append(FindFirstNonLWS(line_begin, line_end), line_end); + RemoveLeadingNonLWS(line).AppendToString(&raw_headers); } else { // Terminate the previous line. raw_headers.push_back('\n'); // Copy the raw data to output. - raw_headers.append(line_begin, line_end); + line.AppendToString(&raw_headers); // Check if the current line can be continued. - prev_line_continuable = IsLineSegmentContinuable(line_begin, line_end); + prev_line_continuable = IsLineSegmentContinuable(line); } }
diff --git a/net/http/http_util_unittest.cc b/net/http/http_util_unittest.cc index 55672d5..74674f81 100644 --- a/net/http/http_util_unittest.cc +++ b/net/http/http_util_unittest.cc
@@ -12,10 +12,6 @@ namespace net { -namespace { -class HttpUtilTest : public testing::Test {}; -} - TEST(HttpUtilTest, IsSafeHeader) { static const char* const unsafe_headers[] = { "sec-",
diff --git a/net/quic/bidirectional_stream_quic_impl_unittest.cc b/net/quic/bidirectional_stream_quic_impl_unittest.cc index 3f94e0b..4ee06cc 100644 --- a/net/quic/bidirectional_stream_quic_impl_unittest.cc +++ b/net/quic/bidirectional_stream_quic_impl_unittest.cc
@@ -392,7 +392,7 @@ class BidirectionalStreamQuicImplTest : public ::testing::TestWithParam< - std::tuple<quic::QuicTransportVersion, bool>>, + std::tuple<quic::ParsedQuicVersion, bool>>, public WithScopedTaskEnvironment { protected: static const bool kFin = true; @@ -499,8 +499,7 @@ helper_.get(), alarm_factory_.get(), new QuicChromiumPacketWriter(socket.get(), runner_.get()), true /* owns_writer */, quic::Perspective::IS_CLIENT, - quic::test::SupportedVersions( - quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, version_))); + quic::test::SupportedVersions(version_)); if (connection_->version().KnowsWhichDecrypterToUse()) { connection_->InstallDecrypter(quic::ENCRYPTION_FORWARD_SECURE, quic::QuicMakeUnique<quic::NullDecrypter>( @@ -821,11 +820,12 @@ QuicChromiumClientSession* session() const { return session_.get(); } quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } std::string ConstructDataHeader(size_t body_len) { - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { return ""; } quic::HttpEncoder encoder; @@ -835,7 +835,7 @@ } protected: - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const bool client_headers_include_h2_stream_dependency_; BoundTestNetLog net_log_; scoped_refptr<TestTaskRunner> runner_; @@ -868,9 +868,8 @@ INSTANTIATE_TEST_SUITE_P( Version, BidirectionalStreamQuicImplTest, - ::testing::Combine( - ::testing::ValuesIn(quic::AllSupportedTransportVersions()), - ::testing::Bool())); + ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()), + ::testing::Bool())); TEST_P(BidirectionalStreamQuicImplTest, GetRequest) { SetRequest("GET", "/", DEFAULT_PRIORITY); @@ -1064,7 +1063,7 @@ AddWrite(ConstructRequestHeadersPacketInner( 2, GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, &header_stream_offset)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, !kFin, 0, {kBody1, kBody2})); } else { @@ -1082,7 +1081,7 @@ std::string header5 = ConstructDataHeader(strlen(kBody5)); quic::QuicStreamOffset data_offset = strlen(kBody1) + strlen(kBody2) + header.length() + header2.length(); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket( 5, !kIncludeVersion, kFin, data_offset, {kBody3, kBody4, kBody5})); } else { @@ -1199,7 +1198,7 @@ AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); const char kBody1[] = "here are some data"; std::string header = ConstructDataHeader(strlen(kBody1)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( 2, !kFin, DEFAULT_PRIORITY, &header_stream_offset, &spdy_request_headers_frame_length, {header, kBody1})); @@ -1214,7 +1213,7 @@ const char kBody2[] = "really small"; std::string header2 = ConstructDataHeader(strlen(kBody2)); quic::QuicStreamOffset data_offset = strlen(kBody1) + header.length(); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket( 4, !kIncludeVersion, kFin, data_offset, {header2, kBody2})); } else { @@ -1318,7 +1317,7 @@ std::string header = ConstructDataHeader(strlen(kBody1)); std::string header2 = ConstructDataHeader(strlen(kBody2)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( 2, !kFin, DEFAULT_PRIORITY, &header_stream_offset, &spdy_request_headers_frame_length, {header, kBody1, header2, kBody2})); @@ -1338,7 +1337,7 @@ std::string header5 = ConstructDataHeader(strlen(kBody5)); quic::QuicStreamOffset data_offset = strlen(kBody1) + strlen(kBody2) + header.length() + header2.length(); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket( 4, !kIncludeVersion, kFin, data_offset, {header3, kBody3, header4, kBody4, header5, kBody5})); @@ -1525,7 +1524,7 @@ 2, GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, &header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, kFin, 0, {header, kUploadData})); } else { @@ -1618,7 +1617,7 @@ 2, GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, &header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, kFin, 0, {header, kUploadData})); } else { @@ -1713,7 +1712,7 @@ &spdy_request_headers_frame_length, &header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 2, !kFin, 0, kUploadData, &client_maker_)); AddWrite(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 3, 3, kFin, @@ -2262,7 +2261,7 @@ 2, GetNthClientInitiatedBidirectionalStreamId(0), !kFin, DEFAULT_PRIORITY, &spdy_request_headers_frame_length, &header_stream_offset)); std::string header = ConstructDataHeader(strlen(kBody)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, kFin, 0, {header, kBody})); } else {
diff --git a/net/quic/mock_decrypter.cc b/net/quic/mock_decrypter.cc index 689c58d..3a99ad42 100644 --- a/net/quic/mock_decrypter.cc +++ b/net/quic/mock_decrypter.cc
@@ -11,7 +11,6 @@ using quic::Perspective; using quic::QuicPacketNumber; using quic::QuicStringPiece; -using quic::QuicTransportVersion; namespace net {
diff --git a/net/quic/mock_encrypter.cc b/net/quic/mock_encrypter.cc index 147cdda..0984631 100644 --- a/net/quic/mock_encrypter.cc +++ b/net/quic/mock_encrypter.cc
@@ -11,7 +11,6 @@ using quic::Perspective; using quic::QuicPacketNumber; using quic::QuicStringPiece; -using quic::QuicTransportVersion; namespace net {
diff --git a/net/quic/quic_chromium_client_session_test.cc b/net/quic/quic_chromium_client_session_test.cc index be97e603..f81af100 100644 --- a/net/quic/quic_chromium_client_session_test.cc +++ b/net/quic/quic_chromium_client_session_test.cc
@@ -83,7 +83,7 @@ class QuicChromiumClientSessionTest : public ::testing::TestWithParam< - std::tuple<quic::QuicTransportVersion, bool>>, + std::tuple<quic::ParsedQuicVersion, bool>>, public WithScopedTaskEnvironment { public: QuicChromiumClientSessionTest() @@ -140,8 +140,7 @@ quic::QuicUtils::CreateRandomConnectionId(&random_), quic::QuicSocketAddress(quic::QuicSocketAddressImpl(kIpEndPoint)), &helper_, &alarm_factory_, writer, true, quic::Perspective::IS_CLIENT, - quic::test::SupportedVersions( - quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, version_))); + quic::test::SupportedVersions(version_)); session_.reset(new TestingQuicChromiumClientSession( connection, std::move(socket), /*stream_factory=*/nullptr, &crypto_client_stream_factory_, &clock_, @@ -199,17 +198,19 @@ } quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } quic::QuicStreamId GetNthServerInitiatedUnidirectionalStreamId(int n) { - return quic::test::GetNthServerInitiatedUnidirectionalStreamId(version_, n); + return quic::test::GetNthServerInitiatedUnidirectionalStreamId( + version_.transport_version, n); } size_t GetMaxAllowedOutgoingBidirectionalStreams() { quic::QuicSession* quic_session = dynamic_cast<quic::QuicSession*>(&*session_); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { return quic::test::QuicSessionPeer::GetStreamIdManager(quic_session) ->max_open_outgoing_streams(); } @@ -222,7 +223,7 @@ 2; } - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const bool client_headers_include_h2_stream_dependency_; QuicFlagSaver flags_; // Save/restore all QUIC flag values. quic::QuicCryptoClientConfig crypto_config_; @@ -253,9 +254,8 @@ INSTANTIATE_TEST_SUITE_P( VersionIncludeStreamDependencySequence, QuicChromiumClientSessionTest, - ::testing::Combine( - ::testing::ValuesIn(quic::AllSupportedTransportVersions()), - ::testing::Bool())); + ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()), + ::testing::Bool())); TEST_P(QuicChromiumClientSessionTest, IsFatalErrorNotSetForNonFatalError) { MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; @@ -331,7 +331,7 @@ session_->CreateHandle(destination_); EXPECT_TRUE(handle->IsConnected()); EXPECT_FALSE(handle->IsCryptoHandshakeConfirmed()); - EXPECT_EQ(version_, handle->GetQuicVersion()); + EXPECT_EQ(version_.transport_version, handle->GetQuicVersion()); EXPECT_EQ(session_key_.server_id(), handle->server_id()); EXPECT_EQ(session_net_log.source().type, handle->net_log().source().type); EXPECT_EQ(session_net_log.source().id, handle->net_log().source().id); @@ -360,7 +360,7 @@ // Veirfy that the handle works correctly after the session is closed. EXPECT_FALSE(handle->IsConnected()); EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed()); - EXPECT_EQ(version_, handle->GetQuicVersion()); + EXPECT_EQ(version_.transport_version, handle->GetQuicVersion()); EXPECT_EQ(session_key_.server_id(), handle->server_id()); EXPECT_EQ(session_net_log.source().type, handle->net_log().source().type); EXPECT_EQ(session_net_log.source().id, handle->net_log().source().id); @@ -385,7 +385,7 @@ // Veirfy that the handle works correctly after the session is deleted. EXPECT_FALSE(handle->IsConnected()); EXPECT_TRUE(handle->IsCryptoHandshakeConfirmed()); - EXPECT_EQ(version_, handle->GetQuicVersion()); + EXPECT_EQ(version_.transport_version, handle->GetQuicVersion()); EXPECT_EQ(session_key_.server_id(), handle->server_id()); EXPECT_EQ(session_net_log.source().type, handle->net_log().source().type); EXPECT_EQ(session_net_log.source().id, handle->net_log().source().id); @@ -512,7 +512,7 @@ MockQuicData quic_data; quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1, nullptr)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // The open stream limit is set to 50 by // MockCryptoClientStream::SetConfigNegotiated() so when the 51st stream is // requested, a STREAMS_BLOCKED will be sent, indicating that it's blocked @@ -566,7 +566,7 @@ GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED, 0); session_->OnRstStream(rst); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // For version99, to close the stream completely, we also must receive a // STOP_SENDING frame: quic::QuicStopSendingFrame stop_sending( @@ -591,7 +591,7 @@ MockQuicData quic_data; quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1, nullptr)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // The open stream limit is set to 50 by // MockCryptoClientStream::SetConfigNegotiated() so when the 51st stream is // requested, a STREAMS_BLOCKED will be sent, indicating that it's blocked @@ -656,7 +656,7 @@ MockQuicData quic_data; quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1, nullptr)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // The open stream limit is set to 50 by // MockCryptoClientStream::SetConfigNegotiated() so when the 51st stream is // requested, a STREAMS_BLOCKED will be sent. @@ -708,7 +708,7 @@ GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED, 0); session_->OnRstStream(rst); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // For version99, we require a STOP_SENDING as well as a RESET_STREAM to // fully close the stream. quic::QuicStopSendingFrame stop_sending( @@ -791,7 +791,7 @@ MockQuicData quic_data; quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1, nullptr)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeStreamsBlockedPacket( 2, true, 52, /*unidirectional=*/false)); @@ -838,7 +838,7 @@ MockQuicData quic_data; quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1, nullptr)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // Initial configuration is 50 dynamic streams. Taking into account // the two static streams (crypto and headers), expect to block on // when hitting the limit of 52 streams @@ -1182,7 +1182,7 @@ MockQuicData quic_data; quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1, nullptr)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeStreamsBlockedPacket( 2, true, 52, /*unidirectional=*/false)); @@ -1557,7 +1557,7 @@ } TEST_P(QuicChromiumClientSessionTest, DetectPathDegradingDuringHandshake) { - if (version_ >= quic::QUIC_VERSION_47) { + if (version_.transport_version >= quic::QUIC_VERSION_47) { // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed return; }
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h index 4e31dfd8..97b8d68 100644 --- a/net/quic/quic_flags_list.h +++ b/net/quic/quic_flags_list.h
@@ -343,3 +343,8 @@ QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_terminate_gquic_connection_as_ietf, false) + +// If true, disable QUIC trial decryption in V44 and above. +QUIC_FLAG(bool, + FLAGS_quic_reloadable_flag_quic_v44_disable_trial_decryption, + false)
diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc index b2e826e..781b0a4 100644 --- a/net/quic/quic_http_stream_test.cc +++ b/net/quic/quic_http_stream_test.cc
@@ -171,7 +171,7 @@ }; class QuicHttpStreamTest : public ::testing::TestWithParam< - std::tuple<quic::QuicTransportVersion, bool>>, + std::tuple<quic::ParsedQuicVersion, bool>>, public WithScopedTaskEnvironment { public: void CloseStream(QuicHttpStream* stream, int /*rv*/) { stream->Close(false); } @@ -296,9 +296,8 @@ alarm_factory_.reset(new QuicChromiumAlarmFactory(runner_.get(), &clock_)); connection_ = new TestQuicConnection( - quic::test::SupportedVersions( - quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, version_)), - connection_id_, peer_addr_, helper_.get(), alarm_factory_.get(), + quic::test::SupportedVersions(version_), connection_id_, peer_addr_, + helper_.get(), alarm_factory_.get(), new QuicChromiumPacketWriter( socket.get(), base::ThreadTaskRunnerHandle::Get().get())); connection_->set_visitor(&visitor_); @@ -639,7 +638,7 @@ } std::string ConstructDataHeader(size_t body_len) { - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { return ""; } quic::HttpEncoder encoder; @@ -670,14 +669,16 @@ } quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } quic::QuicStreamId GetNthServerInitiatedUnidirectionalStreamId(int n) { - return quic::test::GetNthServerInitiatedUnidirectionalStreamId(version_, n); + return quic::test::GetNthServerInitiatedUnidirectionalStreamId( + version_.transport_version, n); } - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const bool client_headers_include_h2_stream_dependency_; BoundTestNetLog net_log_; @@ -729,9 +730,8 @@ INSTANTIATE_TEST_SUITE_P( VersionIncludeStreamDependencySequence, QuicHttpStreamTest, - ::testing::Combine( - ::testing::ValuesIn(quic::AllSupportedTransportVersions()), - ::testing::Bool())); + ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()), + ::testing::Bool())); TEST_P(QuicHttpStreamTest, RenewStreamForAuth) { Initialize(); @@ -1245,7 +1245,7 @@ AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndDataFramesPacket( 2, GetNthClientInitiatedBidirectionalStreamId(0), kIncludeVersion, kFin, DEFAULT_PRIORITY, 0, &header_stream_offset, @@ -1326,7 +1326,7 @@ quic::QuicStreamOffset header_stream_offset = 0; AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndDataFramesPacket( 2, GetNthClientInitiatedBidirectionalStreamId(0), kIncludeVersion, kFin, DEFAULT_PRIORITY, 0, &header_stream_offset, @@ -1410,7 +1410,7 @@ quic::QuicStreamOffset header_stream_offset = 0; AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); std::string header = ConstructDataHeader(chunk_size); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndDataFramesPacket( 2, GetNthClientInitiatedBidirectionalStreamId(0), kIncludeVersion, !kFin, DEFAULT_PRIORITY, 0, &header_stream_offset, @@ -1497,7 +1497,7 @@ AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); std::string header = ConstructDataHeader(chunk_size); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndDataFramesPacket( 2, GetNthClientInitiatedBidirectionalStreamId(0), kIncludeVersion, !kFin, DEFAULT_PRIORITY, 0, &header_stream_offset, @@ -1734,7 +1734,7 @@ quic::QuicStreamOffset header_stream_offset = 0; AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndDataFramesPacket( 2, GetNthClientInitiatedBidirectionalStreamId(0), kIncludeVersion, !kFin, DEFAULT_PRIORITY, 0, &header_stream_offset, @@ -1895,7 +1895,7 @@ quic::QuicStreamOffset header_stream_offset = 0; AddWrite(ConstructInitialSettingsPacket(&header_stream_offset)); std::string header = ConstructDataHeader(strlen(kUploadData)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { AddWrite(ConstructRequestHeadersAndDataFramesPacket( 2, GetNthClientInitiatedBidirectionalStreamId(0), kIncludeVersion, !kFin, DEFAULT_PRIORITY, 0, &header_stream_offset, @@ -2312,16 +2312,16 @@ uint64_t client_packet_number = 2; if (client_headers_include_h2_stream_dependency_ && - version_ >= quic::QUIC_VERSION_43) { + version_.transport_version >= quic::QUIC_VERSION_43) { AddWrite(ConstructClientPriorityPacket( client_packet_number++, kIncludeVersion, promise_id_, 0, DEFAULT_PRIORITY, &header_stream_offset)); } AddWrite(ConstructClientRstStreamVaryMismatchAndRequestHeadersPacket( client_packet_number++, - stream_id_ + quic::QuicUtils::StreamIdDelta(version_), !kIncludeVersion, - kFin, DEFAULT_PRIORITY, promise_id_, &spdy_request_header_frame_length, - &header_stream_offset)); + stream_id_ + quic::QuicUtils::StreamIdDelta(version_.transport_version), + !kIncludeVersion, kFin, DEFAULT_PRIORITY, promise_id_, + &spdy_request_header_frame_length, &header_stream_offset)); AddWrite(ConstructClientAckPacket(client_packet_number++, 3, 1, 2)); AddWrite(ConstructClientRstStreamCancelledPacket(client_packet_number++)); @@ -2381,7 +2381,7 @@ EXPECT_EQ( QuicHttpStreamPeer::GetQuicChromiumClientStream(promised_stream_.get()) ->id(), - stream_id_ + quic::QuicUtils::StreamIdDelta(version_)); + stream_id_ + quic::QuicUtils::StreamIdDelta(version_.transport_version)); // After rendezvous failure, the push stream has been cancelled. EXPECT_EQ(session_->GetPromisedByUrl(promise_url_), nullptr); @@ -2395,8 +2395,9 @@ SetResponse("404 Not Found", string()); size_t spdy_response_header_frame_length; ProcessPacket(InnerConstructResponseHeadersPacket( - 3, stream_id_ + quic::QuicUtils::StreamIdDelta(version_), kFin, - &spdy_response_header_frame_length)); + 3, + stream_id_ + quic::QuicUtils::StreamIdDelta(version_.transport_version), + kFin, &spdy_response_header_frame_length)); base::RunLoop().RunUntilIdle();
diff --git a/net/quic/quic_http_utils.cc b/net/quic/quic_http_utils.cc index fa9ab08..1f1f2762 100644 --- a/net/quic/quic_http_utils.cc +++ b/net/quic/quic_http_utils.cc
@@ -57,18 +57,18 @@ return dict; } -quic::QuicTransportVersionVector FilterSupportedAltSvcVersions( +quic::ParsedQuicVersionVector FilterSupportedAltSvcVersions( const spdy::SpdyAltSvcWireFormat::AlternativeService& quic_alt_svc, - const quic::QuicTransportVersionVector& supported_versions, + const quic::ParsedQuicVersionVector& supported_versions, bool support_ietf_format_quic_altsvc) { - quic::QuicTransportVersionVector supported_alt_svc_versions; + quic::ParsedQuicVersionVector supported_alt_svc_versions; if (support_ietf_format_quic_altsvc && quic_alt_svc.protocol_id == "hq") { // Using IETF format for advertising QUIC. In this case, // |alternative_service_entry.version| will store QUIC version labels. for (uint32_t quic_version_label : quic_alt_svc.version) { - for (quic::QuicTransportVersion supported : supported_versions) { + for (quic::ParsedQuicVersion supported : supported_versions) { quic::QuicVersionLabel supported_version_label_network_order = - QuicVersionToQuicVersionLabel(supported); + CreateQuicVersionLabel(supported); if (supported_version_label_network_order == quic_version_label) { supported_alt_svc_versions.push_back(supported); RecordAltSvcFormat(IETF_FORMAT); @@ -77,8 +77,9 @@ } } else if (quic_alt_svc.protocol_id == "quic") { for (uint32_t quic_version : quic_alt_svc.version) { - for (quic::QuicTransportVersion supported : supported_versions) { - if (static_cast<uint32_t>(supported) == quic_version) { + for (quic::ParsedQuicVersion supported : supported_versions) { + if (static_cast<uint32_t>(supported.transport_version) == + quic_version) { supported_alt_svc_versions.push_back(supported); RecordAltSvcFormat(GOOGLE_FORMAT); }
diff --git a/net/quic/quic_http_utils.h b/net/quic/quic_http_utils.h index 5990ad1..3fe19fc 100644 --- a/net/quic/quic_http_utils.h +++ b/net/quic/quic_http_utils.h
@@ -36,11 +36,11 @@ const spdy::SpdyHeaderBlock* headers, NetLogCaptureMode capture_mode); -// Parses |alt_svc_versions| into a quic::QuicTransportVersionVector and removes +// Parses |alt_svc_versions| into a quic::ParsedQuicVersionVector and removes // all entries that aren't found in |supported_versions|. -NET_EXPORT quic::QuicTransportVersionVector FilterSupportedAltSvcVersions( +NET_EXPORT quic::ParsedQuicVersionVector FilterSupportedAltSvcVersions( const spdy::SpdyAltSvcWireFormat::AlternativeService& quic_alt_svc, - const quic::QuicTransportVersionVector& supported_versions, + const quic::ParsedQuicVersionVector& supported_versions, bool support_ietf_format_quic_altsvc); } // namespace net
diff --git a/net/quic/quic_http_utils_test.cc b/net/quic/quic_http_utils_test.cc index 2d070e2..8a92955 100644 --- a/net/quic/quic_http_utils_test.cc +++ b/net/quic/quic_http_utils_test.cc
@@ -12,6 +12,9 @@ #include "net/third_party/quiche/src/spdy/core/spdy_alt_svc_wire_format.h" #include "testing/gtest/include/gtest/gtest.h" +using quic::ParsedQuicVersion; +using quic::PROTOCOL_QUIC_CRYPTO; + namespace net { namespace test { @@ -38,8 +41,10 @@ } TEST(QuicHttpUtilsTest, FilterSupportedAltSvcVersions) { - quic::QuicTransportVersionVector supported_versions = { - quic::QUIC_VERSION_46, quic::QUIC_VERSION_39, quic::QUIC_VERSION_44}; + quic::ParsedQuicVersionVector supported_versions = { + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_46), + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_39), + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_44)}; std::vector<uint32_t> alt_svc_versions_google = {quic::QUIC_VERSION_44, quic::QUIC_VERSION_43}; @@ -47,8 +52,8 @@ QuicVersionToQuicVersionLabel(quic::QUIC_VERSION_44), QuicVersionToQuicVersionLabel(quic::QUIC_VERSION_43)}; - quic::QuicTransportVersionVector supported_alt_svc_versions = { - quic::QUIC_VERSION_44}; + quic::ParsedQuicVersionVector supported_alt_svc_versions = { + ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, quic::QUIC_VERSION_44)}; spdy::SpdyAltSvcWireFormat::AlternativeService altsvc; altsvc.protocol_id = "quic"; @@ -62,14 +67,14 @@ altsvc.version = alt_svc_versions_ietf; EXPECT_EQ(supported_alt_svc_versions, FilterSupportedAltSvcVersions(altsvc, supported_versions, true)); - EXPECT_EQ(quic::QuicTransportVersionVector(), + EXPECT_EQ(quic::ParsedQuicVersionVector(), FilterSupportedAltSvcVersions(altsvc, supported_versions, false)); altsvc.protocol_id = "invalid_protocol"; altsvc.version = alt_svc_versions_ietf; - EXPECT_EQ(quic::QuicTransportVersionVector(), + EXPECT_EQ(quic::ParsedQuicVersionVector(), FilterSupportedAltSvcVersions(altsvc, supported_versions, true)); - EXPECT_EQ(quic::QuicTransportVersionVector(), + EXPECT_EQ(quic::ParsedQuicVersionVector(), FilterSupportedAltSvcVersions(altsvc, supported_versions, false)); }
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc index 17f9ac87..ccffb73 100644 --- a/net/quic/quic_network_transaction_unittest.cc +++ b/net/quic/quic_network_transaction_unittest.cc
@@ -119,7 +119,7 @@ struct PoolingTestParams { friend std::ostream& operator<<(std::ostream& os, const PoolingTestParams& p) { - os << "{ version: " << QuicVersionToString(p.version) + os << "{ version: " << ParsedQuicVersionToString(p.version) << ", destination_type: "; switch (p.destination_type) { case SAME_AS_FIRST: @@ -138,27 +138,27 @@ return os; } - quic::QuicTransportVersion version; + quic::ParsedQuicVersion version; DestinationType destination_type; bool client_headers_include_h2_stream_dependency; }; std::string GenerateQuicVersionsListForAltSvcHeader( - const quic::QuicTransportVersionVector& versions) { + const quic::ParsedQuicVersionVector& versions) { std::string result = ""; - for (const quic::QuicTransportVersion& version : versions) { + for (const quic::ParsedQuicVersion& version : versions) { if (!result.empty()) result.append(","); - result.append(base::NumberToString(version)); + result.append(base::NumberToString(version.transport_version)); } return result; } std::vector<PoolingTestParams> GetPoolingTestParams() { std::vector<PoolingTestParams> params; - quic::QuicTransportVersionVector all_supported_versions = - quic::AllSupportedTransportVersions(); - for (const quic::QuicTransportVersion version : all_supported_versions) { + quic::ParsedQuicVersionVector all_supported_versions = + quic::AllSupportedVersions(); + for (const quic::ParsedQuicVersion version : all_supported_versions) { params.push_back(PoolingTestParams{version, SAME_AS_FIRST, false}); params.push_back(PoolingTestParams{version, SAME_AS_FIRST, true}); params.push_back(PoolingTestParams{version, SAME_AS_SECOND, false}); @@ -256,13 +256,13 @@ class QuicNetworkTransactionTest : public PlatformTest, public ::testing::WithParamInterface< - std::tuple<quic::QuicTransportVersion, bool>>, + std::tuple<quic::ParsedQuicVersion, bool>>, public WithScopedTaskEnvironment { protected: QuicNetworkTransactionTest() : version_(std::get<0>(GetParam())), client_headers_include_h2_stream_dependency_(std::get<1>(GetParam())), - supported_versions_(quic::test::SupportedTransportVersions(version_)), + supported_versions_(quic::test::SupportedVersions(version_)), random_generator_(0), client_maker_( version_, @@ -675,7 +675,7 @@ } std::string ConstructDataHeader(size_t body_len) { - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { return ""; } quic::HttpEncoder encoder; @@ -684,8 +684,7 @@ return std::string(buffer.get(), header_length); } - void CreateSession( - const quic::QuicTransportVersionVector& supported_versions) { + void CreateSession(const quic::ParsedQuicVersionVector& supported_versions) { session_params_.enable_quic = true; session_params_.quic_supported_versions = supported_versions; session_params_.quic_headers_include_h2_stream_dependency = @@ -725,7 +724,8 @@ EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); EXPECT_TRUE(response->was_fetched_via_spdy); EXPECT_TRUE(response->was_alpn_negotiated); - EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), + EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion( + version_.transport_version), response->connection_info); } @@ -935,11 +935,13 @@ } quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } quic::QuicStreamId GetNthServerInitiatedUnidirectionalStreamId(int n) { - return quic::test::GetNthServerInitiatedUnidirectionalStreamId(version_, n); + return quic::test::GetNthServerInitiatedUnidirectionalStreamId( + version_.transport_version, n); } static void AddCertificate(SSLSocketDataProvider* ssl_data) { @@ -948,9 +950,9 @@ ASSERT_TRUE(ssl_data->ssl_info.cert); } - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const bool client_headers_include_h2_stream_dependency_; - quic::QuicTransportVersionVector supported_versions_; + quic::ParsedQuicVersionVector supported_versions_; QuicFlagSaver flags_; // Save/restore all QUIC flag values. quic::MockClock clock_; quic::test::MockRandom random_generator_; @@ -1004,9 +1006,8 @@ INSTANTIATE_TEST_SUITE_P( VersionIncludeStreamDependencySequence, QuicNetworkTransactionTest, - ::testing::Combine( - ::testing::ValuesIn(quic::AllSupportedTransportVersions()), - ::testing::Bool())); + ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()), + ::testing::Bool())); TEST_P(QuicNetworkTransactionTest, WriteErrorHandshakeConfirmed) { session_params_.retry_without_alt_svc_on_quic_errors = false; @@ -1213,7 +1214,7 @@ int log_stream_id; ASSERT_TRUE(entries[pos].GetIntegerValue("stream_id", &log_stream_id)); - EXPECT_EQ(quic::QuicUtils::GetHeadersStreamId(version_), + EXPECT_EQ(quic::QuicUtils::GetHeadersStreamId(version_.transport_version), static_cast<quic::QuicStreamId>(log_stream_id)); } @@ -1251,10 +1252,12 @@ for (size_t offset = 0; offset < spdy_frame.size(); offset += chunk_size) { size_t len = std::min(chunk_size, spdy_frame.size() - offset); mock_quic_data.AddRead( - ASYNC, ConstructServerDataPacket( - packet_number++, - quic::QuicUtils::GetHeadersStreamId(version_), false, false, - offset, base::StringPiece(spdy_frame.data() + offset, len))); + ASYNC, + ConstructServerDataPacket( + packet_number++, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, offset, + base::StringPiece(spdy_frame.data() + offset, len))); } std::string header = ConstructDataHeader(6); @@ -1310,10 +1313,12 @@ for (size_t offset = 0; offset < spdy_frame.size(); offset += chunk_size) { size_t len = std::min(chunk_size, spdy_frame.size() - offset); mock_quic_data.AddRead( - ASYNC, ConstructServerDataPacket( - packet_number++, - quic::QuicUtils::GetHeadersStreamId(version_), false, false, - offset, base::StringPiece(spdy_frame.data() + offset, len))); + ASYNC, + ConstructServerDataPacket( + packet_number++, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, offset, + base::StringPiece(spdy_frame.data() + offset, len))); } std::string header = ConstructDataHeader(6); @@ -1523,12 +1528,10 @@ } TEST_P(QuicNetworkTransactionTest, DoNotUseQuicForUnsupportedVersion) { - quic::QuicTransportVersion unsupported_version = - quic::QUIC_VERSION_UNSUPPORTED; + quic::ParsedQuicVersion unsupported_version = quic::UnsupportedQuicVersion(); // Add support for another QUIC version besides |version_|. Also find a // unsupported version. - for (const quic::QuicTransportVersion& version : - quic::AllSupportedTransportVersions()) { + for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) { if (version == version_) continue; if (supported_versions_.size() != 2) { @@ -1538,7 +1541,7 @@ unsupported_version = version; break; } - DCHECK_NE(unsupported_version, quic::QUIC_VERSION_UNSUPPORTED); + DCHECK_NE(unsupported_version, quic::UnsupportedQuicVersion()); // Set up alternative service to use QUIC with a version that is not // supported. @@ -1562,8 +1565,7 @@ // the response from the server will advertise new Alt-Svc with supported // versions. std::string advertised_versions_list_str = - GenerateQuicVersionsListForAltSvcHeader( - quic::AllSupportedTransportVersions()); + GenerateQuicVersionsListForAltSvcHeader(quic::AllSupportedVersions()); std::string altsvc_header = base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%s\"\r\n\r\n", advertised_versions_list_str.c_str()); @@ -1618,7 +1620,11 @@ EXPECT_EQ(kProtoQUIC, alt_svc_info_vector[0].alternative_service().protocol); EXPECT_EQ(2u, alt_svc_info_vector[0].advertised_versions().size()); // Advertised versions will be lised in a sorted order. - std::sort(supported_versions_.begin(), supported_versions_.end()); + std::sort( + supported_versions_.begin(), supported_versions_.end(), + [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) { + return a.transport_version < b.transport_version; + }); EXPECT_EQ(supported_versions_[0], alt_svc_info_vector[0].advertised_versions()[0]); EXPECT_EQ(supported_versions_[1], @@ -1813,10 +1819,8 @@ // Add support for another QUIC version besides |version_| on the client side. // Also find a different version advertised by the server. - quic::QuicTransportVersion advertised_version_2 = - quic::QUIC_VERSION_UNSUPPORTED; - for (const quic::QuicTransportVersion& version : - quic::AllSupportedTransportVersions()) { + quic::ParsedQuicVersion advertised_version_2 = quic::UnsupportedQuicVersion(); + for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) { if (version == version_) continue; if (supported_versions_.size() != 2) { @@ -1826,11 +1830,11 @@ advertised_version_2 = version; break; } - DCHECK_NE(advertised_version_2, quic::QUIC_VERSION_UNSUPPORTED); + DCHECK_NE(advertised_version_2, quic::UnsupportedQuicVersion()); - std::string QuicAltSvcWithVersionHeader = - base::StringPrintf("Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n", - advertised_version_2, version_); + std::string QuicAltSvcWithVersionHeader = base::StringPrintf( + "Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n", + advertised_version_2.transport_version, version_.transport_version); MockRead http_reads[] = { MockRead("HTTP/1.1 200 OK\r\n"), @@ -1879,21 +1883,21 @@ // The QuicStreamFactoy will pick the preferred QUIC_VERSION: |version_|, // which is verified as the PacketMakers are using |version_|. - quic::QuicTransportVersion common_version_2 = quic::QUIC_VERSION_UNSUPPORTED; - for (const quic::QuicTransportVersion& version : - quic::AllSupportedTransportVersions()) { + quic::ParsedQuicVersion common_version_2 = quic::UnsupportedQuicVersion(); + for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) { if (version == version_) continue; common_version_2 = version; break; } - DCHECK_NE(common_version_2, quic::QUIC_VERSION_UNSUPPORTED); + DCHECK_NE(common_version_2, quic::UnsupportedQuicVersion()); supported_versions_.push_back( common_version_2); // Supported but unpreferred. std::string QuicAltSvcWithVersionHeader = base::StringPrintf( - "Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n", common_version_2, version_); + "Alt-Svc: quic=\":443\";v=\"%d,%d\"\r\n\r\n", + common_version_2.transport_version, version_.transport_version); MockRead http_reads[] = { MockRead("HTTP/1.1 200 OK\r\n"), @@ -2051,8 +2055,7 @@ TEST_P(QuicNetworkTransactionTest, StoreMutuallySupportedVersionsWhenProcessAltSvc) { // Add support for another QUIC version besides |version_|. - for (const quic::QuicTransportVersion& version : - quic::AllSupportedTransportVersions()) { + for (const quic::ParsedQuicVersion& version : quic::AllSupportedVersions()) { if (version == version_) continue; supported_versions_.push_back(version); @@ -2060,8 +2063,7 @@ } std::string advertised_versions_list_str = - GenerateQuicVersionsListForAltSvcHeader( - quic::AllSupportedTransportVersions()); + GenerateQuicVersionsListForAltSvcHeader(quic::AllSupportedVersions()); std::string altsvc_header = base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%s\"\r\n\r\n", advertised_versions_list_str.c_str()); @@ -2116,7 +2118,11 @@ EXPECT_EQ(kProtoQUIC, alt_svc_info_vector[0].alternative_service().protocol); EXPECT_EQ(2u, alt_svc_info_vector[0].advertised_versions().size()); // Advertised versions will be lised in a sorted order. - std::sort(supported_versions_.begin(), supported_versions_.end()); + std::sort( + supported_versions_.begin(), supported_versions_.end(), + [](const quic::ParsedQuicVersion& a, const quic::ParsedQuicVersion& b) { + return a.transport_version < b.transport_version; + }); EXPECT_EQ(supported_versions_[0], alt_svc_info_vector[0].advertised_versions()[0]); EXPECT_EQ(supported_versions_[1], @@ -2124,8 +2130,8 @@ } TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) { - std::string altsvc_header = - base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_); + std::string altsvc_header = base::StringPrintf( + "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_.transport_version); MockRead http_reads[] = { MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()), MockRead("hello world"), @@ -2169,7 +2175,7 @@ } TEST_P(QuicNetworkTransactionTest, GoAwayWithConnectionMigrationOnPortsOnly) { - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { // Not available under version 99 return; } @@ -2247,7 +2253,7 @@ // alternate network as well, QUIC is marked as broken and the brokenness will // not expire when default network changes. TEST_P(QuicNetworkTransactionTest, QuicFailsOnBothNetworksWhileTCPSucceeds) { - if (version_ >= quic::QUIC_VERSION_47) { + if (version_.transport_version >= quic::QUIC_VERSION_47) { // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed return; } @@ -2272,7 +2278,7 @@ quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); // TODO(zhongyi): remove condition check once b/115926584 is fixed. - if (version_ <= quic::QUIC_VERSION_39) { + if (version_.transport_version <= quic::QUIC_VERSION_39) { quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); } @@ -2367,7 +2373,7 @@ // alternate network, QUIC is marked as broken. The brokenness will expire when // the default network changes. TEST_P(QuicNetworkTransactionTest, RetryOnAlternateNetworkWhileTCPSucceeds) { - if (version_ >= quic::QUIC_VERSION_47) { + if (version_.transport_version >= quic::QUIC_VERSION_47) { // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed return; } @@ -2392,7 +2398,7 @@ quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); // TODO(zhongyi): remove condition check once b/115926584 is fixed. - if (version_ <= quic::QUIC_VERSION_39) { + if (version_.transport_version <= quic::QUIC_VERSION_39) { quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); } @@ -2501,7 +2507,7 @@ // before handshake is confirmed. If TCP doesn't succeed but QUIC on the // alternative network succeeds, QUIC is not marked as broken. TEST_P(QuicNetworkTransactionTest, RetryOnAlternateNetworkWhileTCPHanging) { - if (version_ >= quic::QUIC_VERSION_47) { + if (version_.transport_version >= quic::QUIC_VERSION_47) { // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed return; } @@ -2527,7 +2533,7 @@ client_maker_.MakeDummyCHLOPacket(packet_num++)); // TODO(zhongyi): remove condition check once b/115926584 is fixed, i.e., // quic_fix_has_pending_crypto_data is introduced and enabled. - if (version_ <= quic::QUIC_VERSION_39) { + if (version_.transport_version <= quic::QUIC_VERSION_39) { quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeDummyCHLOPacket(packet_num++)); } @@ -2654,42 +2660,50 @@ client_maker_.MakeInitialSettingsPacketAndSaveData( 2, &header_stream_offset, &settings_data)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 6, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 3 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 9, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + // TLP 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 1 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 3 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 11, true, quic::QUIC_NETWORK_IDLE_TIMEOUT, @@ -2764,51 +2778,61 @@ client_maker_.MakeInitialSettingsPacketAndSaveData( 2, &header_stream_offset, &settings_data)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 6, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 3 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 9, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + // TLP 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 1 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 3 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 4 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 11, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 12, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 12, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 5 quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 13, true, quic::QUIC_TOO_MANY_RTOS, @@ -2887,51 +2911,58 @@ 3, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 1 quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeRstPacket( 6, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeRstPacket( 9, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); // RTO 3 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 11, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 4 quic_data.AddWrite( SYNCHRONOUS, client_maker_.MakeRstPacket( 12, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 13, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 13, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); // RTO 5 quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 14, true, quic::QUIC_TOO_MANY_RTOS, @@ -3075,42 +3106,50 @@ client_maker_.MakeInitialSettingsPacketAndSaveData( 2, &header_stream_offset, &settings_data)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 6, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 3 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 9, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + // TLP 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 1 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 3 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 11, true, quic::QUIC_NETWORK_IDLE_TIMEOUT, @@ -3209,42 +3248,50 @@ client_maker_.MakeInitialSettingsPacketAndSaveData( 2, &header_stream_offset, &settings_data)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 6, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 3 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 9, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + // TLP 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 1 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 3 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 11, true, quic::QUIC_NETWORK_IDLE_TIMEOUT, @@ -3358,41 +3405,49 @@ // TLP 1 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, 0, request_data)); // TLP 2 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, settings_offset, settings_data)); // RTO 1 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 6, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, settings_offset, settings_data)); // RTO 2 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 9, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, settings_offset, settings_data)); // RTO 3 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 11, quic::QuicUtils::GetHeadersStreamId(version_), false, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, settings_offset, settings_data)); if (GetQuicReloadableFlag( quic_fix_time_of_first_packet_sent_after_receiving)) { @@ -3492,51 +3547,61 @@ client_maker_.MakeInitialSettingsPacketAndSaveData( 2, &header_stream_offset, &settings_data)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 6, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); - // RTO 3 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 9, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + // TLP 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 1 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 6, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 2 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); + // RTO 3 + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 9, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 4 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 11, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 12, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 12, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 13, true, quic::QUIC_TOO_MANY_RTOS, @@ -3640,51 +3705,58 @@ 3, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); // TLP 1 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 4, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 4, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); // TLP 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 5, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 5, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 1 quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeRstPacket( 6, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 7, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 7, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); // RTO 2 - quic_data.AddWrite(SYNCHRONOUS, - client_maker_.MakeDataPacket( - 8, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + quic_data.AddWrite( + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 8, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeRstPacket( 9, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); // RTO 3 quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 10, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 10, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 11, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, settings_offset, settings_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 11, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, settings_offset, settings_data)); // RTO 4 quic_data.AddWrite( SYNCHRONOUS, client_maker_.MakeRstPacket( 12, true, GetNthClientInitiatedBidirectionalStreamId(0), quic::QUIC_STREAM_CANCELLED)); quic_data.AddWrite( - SYNCHRONOUS, client_maker_.MakeDataPacket( - 13, quic::QuicUtils::GetHeadersStreamId(version_), true, - false, 0, request_data)); + SYNCHRONOUS, + client_maker_.MakeDataPacket( + 13, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + true, false, 0, request_data)); // RTO 5 quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeConnectionClosePacket( 14, true, quic::QUIC_TOO_MANY_RTOS, @@ -4117,8 +4189,9 @@ TEST_P(QuicNetworkTransactionTest, DoNotUseAlternativeServiceQuicUnsupportedVersion) { - std::string altsvc_header = base::StringPrintf( - "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_ - 1); + std::string altsvc_header = + base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", + version_.transport_version - 1); MockRead http_reads[] = { MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()), MockRead("hello world"), @@ -5032,8 +5105,8 @@ mock_quic_data.AddWrite( SYNCHRONOUS, client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), false, false, - client_header_stream_offset, + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, client_header_stream_offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size()))); client_header_stream_offset += spdy_frame.size(); @@ -5125,8 +5198,8 @@ mock_quic_data.AddWrite( SYNCHRONOUS, client_maker_.MakeDataPacket( - 3, quic::QuicUtils::GetHeadersStreamId(version_), false, false, - client_header_stream_offset, + 3, quic::QuicUtils::GetHeadersStreamId(version_.transport_version), + false, false, client_header_stream_offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size()))); client_header_stream_offset += spdy_frame.size(); @@ -5188,8 +5261,9 @@ EXPECT_EQ("HTTP/1.1 425 TOO_EARLY", response->headers->GetStatusLine()); EXPECT_TRUE(response->was_fetched_via_spdy); EXPECT_TRUE(response->was_alpn_negotiated); - EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), - response->connection_info); + EXPECT_EQ( + QuicHttpStream::ConnectionInfoFromQuicVersion(version_.transport_version), + response->connection_info); } TEST_P(QuicNetworkTransactionTest, @@ -5357,8 +5431,9 @@ EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); EXPECT_TRUE(response->was_fetched_via_spdy); EXPECT_TRUE(response->was_alpn_negotiated); - EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), - response->connection_info); + EXPECT_EQ( + QuicHttpStream::ConnectionInfoFromQuicVersion(version_.transport_version), + response->connection_info); std::string response_data; ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, ReadTransaction(&trans, &response_data)); @@ -5739,7 +5814,7 @@ } TEST_P(QuicNetworkTransactionTest, ConnectionCloseDuringConnect) { - if (version_ >= quic::QUIC_VERSION_47) { + if (version_.transport_version >= quic::QUIC_VERSION_47) { // TODO(nharper): reenable once MakeDummyCHLOPacket() fixed return; } @@ -6218,7 +6293,7 @@ GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset, &server_maker_)); if (client_headers_include_h2_stream_dependency_ && - version_ >= quic::QUIC_VERSION_43) { + version_.transport_version >= quic::QUIC_VERSION_43) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructClientPriorityPacket( client_packet_number++, false, @@ -6312,7 +6387,7 @@ GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset, &server_maker_)); if (client_headers_include_h2_stream_dependency_ && - version_ >= quic::QUIC_VERSION_43) { + version_.transport_version >= quic::QUIC_VERSION_43) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructClientPriorityPacket( client_packet_number++, false, @@ -6388,7 +6463,7 @@ write_packet_index++, &offset)); std::string header = ConstructDataHeader(1); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientRequestHeadersAndDataFramesPacket( @@ -6570,7 +6645,7 @@ &server_header_offset, &server_maker_)); if (client_headers_include_h2_stream_dependency_ && - version_ >= quic::QUIC_VERSION_43) { + version_.transport_version >= quic::QUIC_VERSION_43) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructClientPriorityPacket( client_packet_number++, false, @@ -6724,7 +6799,7 @@ : version_(GetParam().version), client_headers_include_h2_stream_dependency_( GetParam().client_headers_include_h2_stream_dependency), - supported_versions_(quic::test::SupportedTransportVersions(version_)), + supported_versions_(quic::test::SupportedVersions(version_)), destination_type_(GetParam().destination_type), cert_transparency_verifier_(new MultiLogCTVerifier()), ssl_config_service_(new SSLConfigServiceDefaults), @@ -6860,7 +6935,7 @@ quic::QuicStreamId stream_id, QuicTestPacketMaker* maker) { std::string header = ""; - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { quic::HttpEncoder encoder; std::unique_ptr<char[]> buffer; auto header_length = encoder.SerializeDataFrameHeader(5, &buffer); @@ -6940,19 +7015,21 @@ EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); EXPECT_TRUE(response->was_fetched_via_spdy); EXPECT_TRUE(response->was_alpn_negotiated); - EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), + EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion( + version_.transport_version), response->connection_info); EXPECT_EQ(443, response->remote_endpoint.port()); } quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } quic::MockClock clock_; - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const bool client_headers_include_h2_stream_dependency_; - quic::QuicTransportVersionVector supported_versions_; + quic::ParsedQuicVersionVector supported_versions_; DestinationType destination_type_; std::string origin1_; std::string origin2_; @@ -7244,7 +7321,7 @@ GetRequestHeaders("GET", "https", "/pushed.jpg"), &server_header_offset, &server_maker_)); if (client_headers_include_h2_stream_dependency_ && - version_ >= quic::QUIC_VERSION_43) { + version_.transport_version >= quic::QUIC_VERSION_43) { mock_quic_data.AddWrite(SYNCHRONOUS, ConstructClientPriorityPacket( client_packet_number++, false, @@ -7286,7 +7363,7 @@ quic::QUIC_STREAM_CANCELLED, 5, 5, 1)); const char kBody[] = "1"; std::string header3 = ConstructDataHeader(1); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientRequestHeadersAndDataFramesPacket( @@ -7435,7 +7512,7 @@ "Host: mail.example.org\r\n" "Connection: keep-alive\r\n\r\n"; std::string header = ConstructDataHeader(strlen(get_request)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientAckAndDataPacket( @@ -7528,7 +7605,7 @@ spdy::SpdySerializedFrame get_frame = spdy_util.ConstructSpdyGet("https://mail.example.org/", 1, LOWEST); std::string header = ConstructDataHeader(get_frame.size()); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientAckAndDataPacket( @@ -7633,7 +7710,7 @@ "Host: mail.example.org\r\n" "Connection: keep-alive\r\n\r\n"; std::string header = ConstructDataHeader(strlen(get_request_1)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientAckAndDataPacket( @@ -7677,7 +7754,7 @@ "Host: mail.example.org\r\n" "Connection: keep-alive\r\n\r\n"; std::string header4 = ConstructDataHeader(strlen(get_request_2)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientMultipleDataFramesPacket( @@ -7797,7 +7874,7 @@ "Host: mail.example.org\r\n" "Connection: keep-alive\r\n\r\n"; std::string header = ConstructDataHeader(strlen(get_request)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientAckAndDataPacket( @@ -7845,7 +7922,7 @@ spdy::SpdySerializedFrame get_frame = spdy_util.ConstructSpdyGet("https://different.example.org/", 1, LOWEST); std::string header4 = ConstructDataHeader(get_frame.size()); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientAckAndDataPacket( @@ -8070,7 +8147,7 @@ "Host: mail.example.org\r\n" "Connection: keep-alive\r\n\r\n"; std::string header = ConstructDataHeader(strlen(get_request)); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data.AddWrite( SYNCHRONOUS, ConstructClientAckAndDataPacket( @@ -8478,7 +8555,7 @@ TEST_P(QuicNetworkTransactionTest, QuicServerPushUpdatesPriority) { // Only run this test if HTTP/2 stream dependency info is sent by client (sent // in HEADERS frames for requests and PRIORITY frames). - if (version_ < quic::QUIC_VERSION_43 || + if (version_.transport_version < quic::QUIC_VERSION_43 || !client_headers_include_h2_stream_dependency_) { return; }
diff --git a/net/quic/quic_proxy_client_socket_unittest.cc b/net/quic/quic_proxy_client_socket_unittest.cc index 5c7931b..9c1edbe 100644 --- a/net/quic/quic_proxy_client_socket_unittest.cc +++ b/net/quic/quic_proxy_client_socket_unittest.cc
@@ -83,7 +83,7 @@ class QuicProxyClientSocketTest : public ::testing::TestWithParam< - std::tuple<quic::QuicTransportVersion, bool>>, + std::tuple<quic::ParsedQuicVersion, bool>>, public WithScopedTaskEnvironment { protected: static const bool kFin = true; @@ -94,7 +94,7 @@ static size_t GetStreamFrameDataLengthFromPacketLength( quic::QuicByteCount packet_length, - quic::QuicTransportVersion version, + quic::ParsedQuicVersion version, bool include_version, bool include_diversification_nonce, quic::QuicConnectionIdLength connection_id_length, @@ -103,7 +103,8 @@ quic::QuicVariableLengthIntegerLength retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_0; quic::QuicVariableLengthIntegerLength length_length = - quic::QuicVersionHasLongHeaderLengths(version) && include_version + quic::QuicVersionHasLongHeaderLengths(version.transport_version) && + include_version ? quic::VARIABLE_LENGTH_INTEGER_LENGTH_2 : quic::VARIABLE_LENGTH_INTEGER_LENGTH_0; size_t min_data_length = 1; @@ -111,7 +112,7 @@ quic::NullEncrypter(quic::Perspective::IS_CLIENT) .GetCiphertextSize(min_data_length) + quic::QuicPacketCreator::StreamFramePacketOverhead( - version, quic::PACKET_8BYTE_CONNECTION_ID, + version.transport_version, quic::PACKET_8BYTE_CONNECTION_ID, quic::PACKET_0BYTE_CONNECTION_ID, include_version, include_diversification_nonce, packet_number_length, retry_token_length_length, length_length, offset); @@ -122,8 +123,9 @@ QuicProxyClientSocketTest() : version_(std::get<0>(GetParam())), - client_data_stream_id1_(quic::QuicUtils::GetHeadersStreamId(version_) + - quic::QuicUtils::StreamIdDelta(version_)), + client_data_stream_id1_( + quic::QuicUtils::GetHeadersStreamId(version_.transport_version) + + quic::QuicUtils::StreamIdDelta(version_.transport_version)), client_headers_include_h2_stream_dependency_(std::get<1>(GetParam())), crypto_config_(quic::test::crypto_test_utils::ProofVerifierForTesting(), quic::TlsClientHandshaker::CreateSslCtx()), @@ -193,9 +195,7 @@ connection_id_, quic::QuicSocketAddress(quic::QuicSocketAddressImpl(peer_addr_)), helper_.get(), alarm_factory_.get(), writer, true /* owns_writer */, - quic::Perspective::IS_CLIENT, - quic::test::SupportedVersions( - quic::ParsedQuicVersion(quic::PROTOCOL_QUIC_CRYPTO, version_))); + quic::Perspective::IS_CLIENT, quic::test::SupportedVersions(version_)); connection->set_visitor(&visitor_); quic::test::QuicConnectionPeer::SetSendAlgorithm(connection, send_algorithm_); @@ -553,7 +553,7 @@ } std::string ConstructDataHeader(size_t body_len) { - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { return ""; } quic::HttpEncoder encoder; @@ -562,7 +562,7 @@ return std::string(buffer.get(), header_length); } - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; const quic::QuicStreamId client_data_stream_id1_; const bool client_headers_include_h2_stream_dependency_; @@ -855,7 +855,7 @@ mock_quic_data_.AddWrite(SYNCHRONOUS, ConstructConnectRequestPacket(2)); mock_quic_data_.AddRead(ASYNC, ConstructServerConnectReplyPacket(1, !kFin)); mock_quic_data_.AddRead(SYNCHRONOUS, ERR_IO_PENDING); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { std::string header = ConstructDataHeader(kLen1); mock_quic_data_.AddWrite( SYNCHRONOUS, ConstructAckAndMultipleDataFramesPacket( @@ -897,7 +897,7 @@ mock_quic_data_.AddRead(ASYNC, ConstructServerConnectReplyPacket(1, !kFin)); mock_quic_data_.AddRead(SYNCHRONOUS, ERR_IO_PENDING); std::string header = ConstructDataHeader(kLen1); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data_.AddWrite( SYNCHRONOUS, ConstructAckAndDataPacket(write_packet_index++, 1, 1, 1, 0, std::string(kMsg1, kLen1))); @@ -914,7 +914,7 @@ std::string data(numDataPackets * quic::kDefaultMaxPacketSize, 'x'); quic::QuicStreamOffset offset = kLen1 + header.length(); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { numDataPackets++; } size_t total_data_length = 0; @@ -923,7 +923,7 @@ quic::kDefaultMaxPacketSize, version_, !kIncludeVersion, !kIncludeDiversificationNonce, quic::PACKET_8BYTE_CONNECTION_ID, quic::PACKET_1BYTE_PACKET_NUMBER, offset); - if (version_ == quic::QUIC_VERSION_99 && i == 0) { + if (version_.transport_version == quic::QUIC_VERSION_99 && i == 0) { // 3973 is the data frame length from packet length. std::string header2 = ConstructDataHeader(3973); mock_quic_data_.AddWrite( @@ -932,7 +932,8 @@ {header2, std::string(data.c_str(), max_packet_data_length - 7)})); offset += max_packet_data_length - header2.length() - 1; - } else if (version_ == quic::QUIC_VERSION_99 && i == numDataPackets - 1) { + } else if (version_.transport_version == quic::QUIC_VERSION_99 && + i == numDataPackets - 1) { mock_quic_data_.AddWrite( SYNCHRONOUS, ConstructDataPacket(write_packet_index++, offset, std::string(data.c_str(), 7))); @@ -1281,7 +1282,7 @@ ConstructAckPacket(write_packet_index++, 2, 1, 1)); std::string header2 = ConstructDataHeader(kLen2); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { mock_quic_data_.AddWrite( SYNCHRONOUS, ConstructMultipleDataFramesPacket( @@ -1346,7 +1347,7 @@ mock_quic_data_.AddWrite(ASYNC, ERR_IO_PENDING); // Pause std::string header3 = ConstructDataHeader(kLen2); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data_.AddWrite( ASYNC, ConstructDataPacket(4, 0, std::string(kMsg2, kLen2))); mock_quic_data_.AddWrite( @@ -1627,7 +1628,7 @@ ASYNC, ConstructServerRstPacket(2, quic::QUIC_STREAM_CANCELLED, 0)); mock_quic_data_.AddRead(SYNCHRONOUS, ERR_IO_PENDING); std::string header = ConstructDataHeader(kLen2); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data_.AddWrite( ASYNC, ConstructAckAndDataPacket(3, 1, 1, 1, 0, std::string(kMsg2, kLen2))); @@ -1759,7 +1760,7 @@ mock_quic_data_.AddRead( ASYNC, ConstructServerRstPacket(2, quic::QUIC_STREAM_CANCELLED, 0)); mock_quic_data_.AddRead(SYNCHRONOUS, ERR_IO_PENDING); - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { mock_quic_data_.AddWrite( ASYNC, ConstructAckAndDataPacket(3, 1, 1, 1, 0, std::string(kMsg1, kLen1))); @@ -1806,9 +1807,8 @@ INSTANTIATE_TEST_SUITE_P( VersionIncludeStreamDependencySequence, QuicProxyClientSocketTest, - ::testing::Combine( - ::testing::ValuesIn(quic::AllSupportedTransportVersions()), - ::testing::Bool())); + ::testing::Combine(::testing::ValuesIn(quic::AllSupportedVersions()), + ::testing::Bool())); } // namespace test } // namespace net
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc index 52f94f4..00821bda 100644 --- a/net/quic/quic_stream_factory_test.cc +++ b/net/quic/quic_stream_factory_test.cc
@@ -118,20 +118,20 @@ // and enable_connection_racting. struct TestParams { friend std::ostream& operator<<(std::ostream& os, const TestParams& p) { - os << "{ version: " << QuicVersionToString(p.version) + os << "{ version: " << ParsedQuicVersionToString(p.version) << ", client_headers_include_h2_stream_dependency: " << p.client_headers_include_h2_stream_dependency << " }"; return os; } - quic::QuicTransportVersion version; + quic::ParsedQuicVersion version; bool client_headers_include_h2_stream_dependency; }; std::vector<TestParams> GetTestParams() { std::vector<TestParams> params; - quic::QuicTransportVersionVector all_supported_versions = - quic::AllSupportedTransportVersions(); + quic::ParsedQuicVersionVector all_supported_versions = + quic::AllSupportedVersions(); for (const auto& version : all_supported_versions) { params.push_back(TestParams{version, false}); params.push_back(TestParams{version, true}); @@ -144,7 +144,7 @@ struct PoolingTestParams { friend std::ostream& operator<<(std::ostream& os, const PoolingTestParams& p) { - os << "{ version: " << QuicVersionToString(p.version) + os << "{ version: " << ParsedQuicVersionToString(p.version) << ", destination_type: "; switch (p.destination_type) { case SAME_AS_FIRST: @@ -163,16 +163,16 @@ return os; } - quic::QuicTransportVersion version; + quic::ParsedQuicVersion version; DestinationType destination_type; bool client_headers_include_h2_stream_dependency; }; std::vector<PoolingTestParams> GetPoolingTestParams() { std::vector<PoolingTestParams> params; - quic::QuicTransportVersionVector all_supported_versions = - quic::AllSupportedTransportVersions(); - for (const quic::QuicTransportVersion version : all_supported_versions) { + quic::ParsedQuicVersionVector all_supported_versions = + quic::AllSupportedVersions(); + for (const quic::ParsedQuicVersion version : all_supported_versions) { params.push_back(PoolingTestParams{version, SAME_AS_FIRST, false}); params.push_back(PoolingTestParams{version, SAME_AS_FIRST, true}); params.push_back(PoolingTestParams{version, SAME_AS_SECOND, false}); @@ -219,7 +219,7 @@ class QuicStreamFactoryTestBase : public WithScopedTaskEnvironment { protected: - QuicStreamFactoryTestBase(quic::QuicTransportVersion version, + QuicStreamFactoryTestBase(quic::ParsedQuicVersion version, bool client_headers_include_h2_stream_dependency) : host_resolver_(new MockHostResolver), ssl_config_service_(new MockSSLConfigService), @@ -386,12 +386,12 @@ QuicStreamRequest request(factory_.get()); GURL url("https://" + destination.host() + "/"); - EXPECT_EQ( - ERR_IO_PENDING, - request.Request( - destination, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(ERR_IO_PENDING, + request.Request( + destination, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); std::unique_ptr<HttpStream> stream = CreateStream(&request); @@ -547,8 +547,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -735,7 +735,8 @@ EXPECT_EQ(ERR_IO_PENDING, request.Request( HostPortPair(quic_server_id.host(), quic_server_id.port()), - version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + version_.transport_version, privacy_mode_, DEFAULT_PRIORITY, + SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -770,7 +771,8 @@ EXPECT_EQ(ERR_IO_PENDING, request2.Request( HostPortPair(quic_server_id2.host(), quic_server_id2.port()), - version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + version_.transport_version, privacy_mode_, DEFAULT_PRIORITY, + SocketTag(), /*cert_verify_flags=*/0, GURL("https://mail.example.org/"), net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -797,11 +799,13 @@ } quic::QuicStreamId GetNthClientInitiatedBidirectionalStreamId(int n) { - return quic::test::GetNthClientInitiatedBidirectionalStreamId(version_, n); + return quic::test::GetNthClientInitiatedBidirectionalStreamId( + version_.transport_version, n); } quic::QuicStreamId GetNthServerInitiatedUnidirectionalStreamId(int n) { - return quic::test::GetNthServerInitiatedUnidirectionalStreamId(version_, n); + return quic::test::GetNthServerInitiatedUnidirectionalStreamId( + version_.transport_version, n); } void OnFailedOnDefaultNetwork(int rv) { failed_on_default_network_ = true; } @@ -849,7 +853,7 @@ quic::test::MockRandom random_generator_; quic::MockClock clock_; scoped_refptr<TestTaskRunner> runner_; - const quic::QuicTransportVersion version_; + const quic::ParsedQuicVersion version_; QuicTestPacketMaker client_maker_; QuicTestPacketMaker server_maker_; HttpServerPropertiesImpl http_server_properties_; @@ -904,8 +908,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -916,8 +920,8 @@ EXPECT_EQ(DEFAULT_PRIORITY, host_resolver_->last_request_priority()); QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -930,8 +934,8 @@ // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result // in streams on different sessions. QuicStreamRequest request3(factory_.get()); - EXPECT_EQ(OK, request3.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request3.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -960,8 +964,8 @@ "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -986,8 +990,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1014,8 +1018,8 @@ auto request = std::make_unique<QuicStreamRequest>(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request->Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); request.reset(); @@ -1044,8 +1048,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1085,8 +1089,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_THAT(request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback()), IsOk()); @@ -1125,8 +1129,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1158,8 +1162,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1191,8 +1195,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1219,8 +1223,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1251,8 +1255,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1296,8 +1300,8 @@ host_resolver_->rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -1307,11 +1311,12 @@ TestCompletionCallback callback; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback.callback())); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -1360,7 +1365,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + server2, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback.callback())); EXPECT_EQ(OK, callback.WaitForResult()); @@ -1394,8 +1400,8 @@ host_resolver_->rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -1405,11 +1411,12 @@ TestCompletionCallback callback; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback.callback())); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -1419,11 +1426,12 @@ TestCompletionCallback callback3; QuicStreamRequest request3(factory_.get()); - EXPECT_EQ(OK, - request3.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback3.callback())); + EXPECT_EQ(OK, request3.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback3.callback())); std::unique_ptr<HttpStream> stream3 = CreateStream(&request3); EXPECT_TRUE(stream3.get()); @@ -1454,21 +1462,23 @@ host_resolver_->rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, - request.Request( - server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request.Request(server1, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream = CreateStream(&request); EXPECT_TRUE(stream.get()); TestCompletionCallback callback; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -1502,21 +1512,23 @@ host_resolver_->rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, - request.Request( - server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request.Request(server1, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream = CreateStream(&request); EXPECT_TRUE(stream.get()); TestCompletionCallback callback; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -1561,21 +1573,23 @@ host_resolver_->rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, - request.Request( - server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request.Request(server1, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream = CreateStream(&request); EXPECT_TRUE(stream.get()); TestCompletionCallback callback; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -1605,8 +1619,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1627,8 +1641,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -1657,7 +1671,7 @@ quic::QuicStreamId stream_id = GetNthClientInitiatedBidirectionalStreamId(0); MockQuicData socket_data; socket_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket()); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { socket_data.AddWrite(SYNCHRONOUS, client_maker_.MakeStreamsBlockedPacket( 2, true, 52, /*unidirectional=*/false)); @@ -1691,7 +1705,8 @@ for (size_t i = 0; i < quic::kDefaultMaxStreamsPerConnection / 2; i++) { QuicStreamRequest request(factory_.get()); int rv = request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback()); if (i == 0) { @@ -1709,8 +1724,8 @@ } QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -1750,8 +1765,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1771,8 +1786,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1792,8 +1807,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); } @@ -1801,8 +1816,8 @@ base::RunLoop().RunUntilIdle(); QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -1840,8 +1855,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1865,8 +1880,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -1901,8 +1916,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult()); @@ -1922,8 +1937,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_FALSE(HasActiveSession(host_port_pair_)); @@ -1967,8 +1982,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); // Check no active session, or active jobs left for this server. @@ -1988,8 +2003,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_FALSE(HasActiveSession(host_port_pair_)); @@ -2037,8 +2052,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -2072,8 +2087,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -2130,8 +2145,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2176,8 +2191,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2215,8 +2230,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -2238,8 +2253,8 @@ // Attempting a new request to the same origin uses the same connection. QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -2316,8 +2331,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2495,8 +2510,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2639,8 +2654,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2756,8 +2771,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2821,8 +2836,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2913,8 +2928,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -2977,8 +2992,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3066,8 +3081,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3134,8 +3149,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3207,8 +3222,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3326,8 +3341,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3489,8 +3504,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3663,8 +3678,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3801,8 +3816,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cerf_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3842,8 +3857,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -3918,8 +3933,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4060,8 +4075,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4217,8 +4232,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4356,21 +4371,23 @@ // Create request and QuicHttpStream to create session1. QuicStreamRequest request1(factory_.get()); - EXPECT_EQ(OK, - request1.Request( - server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request1.Request(server1, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream1 = CreateStream(&request1); EXPECT_TRUE(stream1.get()); // Create request and QuicHttpStream to create session2. QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback_.callback())); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -4481,8 +4498,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4595,8 +4612,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4661,8 +4678,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4763,8 +4780,8 @@ QuicStreamRequest request1(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request1.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -4783,8 +4800,8 @@ // Request #2 returns synchronously because it pools to existing session. TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -4900,8 +4917,8 @@ QuicStreamRequest request1(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request1.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -5022,8 +5039,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -5083,8 +5100,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -5205,8 +5222,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -5322,8 +5339,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult()); @@ -5343,8 +5360,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_FALSE(HasActiveSession(host_port_pair_)); @@ -5417,8 +5434,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); // Ensure that the session is alive but not active. @@ -5487,8 +5504,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -5584,8 +5601,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -5721,8 +5738,8 @@ QuicStreamRequest request1(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request1.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -5741,8 +5758,8 @@ // Second request returns synchronously because it pools to existing session. TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -5857,8 +5874,8 @@ QuicStreamRequest request1(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request1.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -5877,8 +5894,8 @@ // Second request returns synchronously because it pools to existing session. TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -6004,8 +6021,8 @@ QuicStreamRequest request1(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request1.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -6024,8 +6041,8 @@ // Second request returns synchronously because it pools to existing session. TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -6137,8 +6154,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -6224,8 +6241,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -6350,8 +6367,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -6445,8 +6462,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); // Deliver the network notification, which should cause the connection to be @@ -6484,8 +6501,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -6618,8 +6635,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -6758,8 +6775,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -6889,8 +6906,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -6993,8 +7010,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -7107,8 +7124,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -7222,8 +7239,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -7367,8 +7384,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -7460,8 +7477,8 @@ ->NotifyNetworkMadeDefault(kNewNetworkForTests); QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -7546,8 +7563,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -7660,8 +7677,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); @@ -7738,8 +7755,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -7890,8 +7907,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -7948,8 +7965,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -7971,8 +7988,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8089,8 +8106,8 @@ "192.168.0.1", ""); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8140,8 +8157,8 @@ EXPECT_EQ(quic::QuicTime::Delta::FromSeconds(quic::kPingTimeoutSecs), QuicStreamFactoryPeer::GetPingTimeout(factory_.get())); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8178,11 +8195,12 @@ DVLOG(1) << "Create 2nd session and timeout with open stream"; TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, - request2.Request( - server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback2.callback())); + EXPECT_EQ(OK, request2.Request(server2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2_, net_log_, + &net_error_details_, + failed_on_default_network_callback_, + callback2.callback())); QuicChromiumClientSession* session2 = GetActiveSession(server2); EXPECT_EQ(quic::QuicTime::Delta::FromSeconds(10), session2->connection()->ping_timeout()); @@ -8251,8 +8269,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8298,8 +8316,8 @@ "StartReading"); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8347,8 +8365,8 @@ "StartReading"); QuicStreamRequest request(factory_.get()); - EXPECT_EQ(OK, request.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8383,8 +8401,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8404,8 +8422,8 @@ ->promised_by_url())[kDefaultUrl] = &promised; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(host_port_pair_, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(host_port_pair_, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8437,8 +8455,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8465,8 +8483,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, PRIVACY_MODE_ENABLED, - DEFAULT_PRIORITY, SocketTag(), + host_port_pair_, version_.transport_version, + PRIVACY_MODE_ENABLED, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8500,12 +8518,12 @@ socket_data.AddSocketDataToFactory(socket_factory_.get()); QuicStreamRequest request1(factory_.get()); - EXPECT_EQ( - ERR_IO_PENDING, - request1.Request( - destination1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(ERR_IO_PENDING, + request1.Request( + destination1, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); std::unique_ptr<HttpStream> stream1 = CreateStream(&request1); EXPECT_TRUE(stream1.get()); @@ -8514,8 +8532,8 @@ // Second request returns synchronously because it pools to existing session. TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(destination2, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(destination2, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8621,12 +8639,12 @@ AddHangingSocketData(); QuicStreamRequest request(factory_.get()); - EXPECT_EQ( - ERR_IO_PENDING, - request.Request( - destination, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(ERR_IO_PENDING, + request.Request( + destination, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED)); @@ -8666,12 +8684,12 @@ sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data)); QuicStreamRequest request1(factory_.get()); - EXPECT_EQ( - ERR_IO_PENDING, - request1.Request( - destination, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(ERR_IO_PENDING, + request1.Request( + destination, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); std::unique_ptr<HttpStream> stream1 = CreateStream(&request1); @@ -8681,8 +8699,8 @@ // Second request returns synchronously because it pools to existing session. TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ(OK, request2.Request(destination, version_, privacy_mode_, - DEFAULT_PRIORITY, SocketTag(), + EXPECT_EQ(OK, request2.Request(destination, version_.transport_version, + privacy_mode_, DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_, failed_on_default_network_callback_, @@ -8747,8 +8765,8 @@ QuicStreamRequest request1(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request1.Request( - destination, version_, PRIVACY_MODE_DISABLED, DEFAULT_PRIORITY, - SocketTag(), + destination, version_.transport_version, PRIVACY_MODE_DISABLED, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(OK, callback_.WaitForResult()); @@ -8760,8 +8778,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - destination, version_, PRIVACY_MODE_ENABLED, DEFAULT_PRIORITY, - SocketTag(), + destination, version_.transport_version, PRIVACY_MODE_ENABLED, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_, failed_on_default_network_callback_, callback2.callback())); EXPECT_EQ(OK, callback2.WaitForResult()); @@ -8832,12 +8850,12 @@ sequenced_socket_data_vector_.push_back(std::move(sequenced_socket_data1)); QuicStreamRequest request1(factory_.get()); - EXPECT_EQ( - ERR_IO_PENDING, - request1.Request( - destination, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback_.callback())); + EXPECT_EQ(ERR_IO_PENDING, + request1.Request( + destination, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback_.callback())); EXPECT_THAT(callback_.WaitForResult(), IsOk()); std::unique_ptr<HttpStream> stream1 = CreateStream(&request1); EXPECT_TRUE(stream1.get()); @@ -8845,12 +8863,12 @@ TestCompletionCallback callback2; QuicStreamRequest request2(factory_.get()); - EXPECT_EQ( - ERR_IO_PENDING, - request2.Request( - destination, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(), - /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_, - failed_on_default_network_callback_, callback2.callback())); + EXPECT_EQ(ERR_IO_PENDING, + request2.Request( + destination, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), + /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_, + failed_on_default_network_callback_, callback2.callback())); EXPECT_THAT(callback2.WaitForResult(), IsOk()); std::unique_ptr<HttpStream> stream2 = CreateStream(&request2); EXPECT_TRUE(stream2.get()); @@ -8958,8 +8976,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, MAXIMUM_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + MAXIMUM_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8986,8 +9004,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, MAXIMUM_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + MAXIMUM_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -8997,8 +9015,8 @@ QuicStreamRequest request2(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_EQ(DEFAULT_PRIORITY, host_resolver_->last_request_priority()); @@ -9042,8 +9060,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9096,8 +9114,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9147,8 +9165,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9185,8 +9203,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9219,8 +9237,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_NAME_NOT_RESOLVED, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9245,8 +9263,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9298,8 +9316,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_THAT(request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback()), IsOk()); @@ -9336,8 +9354,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); TestCompletionCallback host_resolution_callback; @@ -9396,8 +9414,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9458,8 +9476,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9526,8 +9544,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9598,8 +9616,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9670,8 +9688,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9746,8 +9764,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); // Finish dns resolution, but need to wait for stale connection. @@ -9790,8 +9808,8 @@ EXPECT_EQ(ERR_NAME_NOT_RESOLVED, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); } @@ -9815,8 +9833,8 @@ EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9862,8 +9880,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -9917,8 +9935,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); EXPECT_FALSE(HasLiveSession(host_port_pair_)); @@ -9966,8 +9984,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -10030,8 +10048,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -10084,8 +10102,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -10137,8 +10155,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -10172,8 +10190,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); @@ -10224,8 +10242,8 @@ QuicStreamRequest request(factory_.get()); EXPECT_EQ(ERR_IO_PENDING, request.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, - SocketTag(), + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, SocketTag(), /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback())); base::RunLoop().RunUntilIdle(); @@ -10235,8 +10253,9 @@ // The pending task is scheduled for handshake timeout retransmission, // which is 2 * 400ms for v99 and 1.5 * 400ms for others. - int handshake_timeout = - version_ == quic::QUIC_VERSION_99 ? 2 * kInitialRtt : 1.5 * kInitialRtt; + int handshake_timeout = version_.transport_version == quic::QUIC_VERSION_99 + ? 2 * kInitialRtt + : 1.5 * kInitialRtt; EXPECT_EQ(base::TimeDelta::FromMilliseconds(handshake_timeout), task_runner->NextPendingTaskDelay()); @@ -10289,7 +10308,8 @@ // Request a stream with |tag1|. QuicStreamRequest request1(factory_.get()); int rv = request1.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, tag1, + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, tag1, /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback()); EXPECT_THAT(callback_.GetResult(rv), IsOk()); @@ -10304,7 +10324,8 @@ // Request a stream with |tag1| and verify underlying session is reused. QuicStreamRequest request2(factory_.get()); rv = request2.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, tag1, + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, tag1, /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback()); EXPECT_THAT(callback_.GetResult(rv), IsOk()); @@ -10317,7 +10338,8 @@ // Request a stream with |tag2| and verify a new session is created. QuicStreamRequest request3(factory_.get()); rv = request3.Request( - host_port_pair_, version_, privacy_mode_, DEFAULT_PRIORITY, tag2, + host_port_pair_, version_.transport_version, privacy_mode_, + DEFAULT_PRIORITY, tag2, /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_, failed_on_default_network_callback_, callback_.callback()); EXPECT_THAT(callback_.GetResult(rv), IsOk());
diff --git a/net/quic/quic_test_packet_maker.cc b/net/quic/quic_test_packet_maker.cc index cd20f7ae..cd107c7 100644 --- a/net/quic/quic_test_packet_maker.cc +++ b/net/quic/quic_test_packet_maker.cc
@@ -28,7 +28,7 @@ } // namespace QuicTestPacketMaker::QuicTestPacketMaker( - quic::QuicTransportVersion version, + quic::ParsedQuicVersion version, quic::QuicConnectionId connection_id, quic::MockClock* clock, const std::string& host, @@ -45,7 +45,7 @@ long_header_type_(quic::INVALID_PACKET_TYPE), client_headers_include_h2_stream_dependency_( client_headers_include_h2_stream_dependency && - version >= quic::QUIC_VERSION_43) { + version.transport_version >= quic::QUIC_VERSION_43) { DCHECK(!(perspective_ == quic::Perspective::IS_SERVER && client_headers_include_h2_stream_dependency_)); } @@ -70,22 +70,22 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } header.length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_2; } - quic::QuicFramer framer(quic::test::SupportedVersions(quic::ParsedQuicVersion( - quic::PROTOCOL_QUIC_CRYPTO, version_)), + quic::QuicFramer framer(quic::test::SupportedVersions(version_), clock_->Now(), perspective_, quic::kQuicDefaultConnectionIdLength); size_t max_plaintext_size = framer.GetMaxPlaintextSize(quic::kDefaultMaxPacketSize); char buffer[quic::kDefaultMaxPacketSize]; size_t length; - if (version_ != quic::QUIC_VERSION_99) { + if (version_.transport_version != quic::QUIC_VERSION_99) { length = framer.BuildConnectivityProbingPacket( header, buffer, max_plaintext_size, encryption_level_); } else if (perspective_ == quic::Perspective::IS_CLIENT) { @@ -125,7 +125,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -149,10 +150,10 @@ quic::QuicCryptoFrame crypto_frame; quic::test::SimpleDataProducer producer; quic::QuicStreamFrameDataProducer* producer_p = nullptr; - if (!QuicVersionUsesCryptoFrames(version_)) { - quic::QuicStreamFrame frame(quic::QuicUtils::GetCryptoStreamId(version_), - /*fin=*/false, /*offset=*/0, - data.AsStringPiece()); + if (!QuicVersionUsesCryptoFrames(version_.transport_version)) { + quic::QuicStreamFrame frame( + quic::QuicUtils::GetCryptoStreamId(version_.transport_version), + /*fin=*/false, /*offset=*/0, data.AsStringPiece()); frames.push_back(quic::QuicFrame(frame)); } else { crypto_frame = @@ -188,7 +189,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -242,7 +244,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -258,7 +261,8 @@ // The STOP_SENDING frame must be outside of the if (version==99) so that it // stays in scope until the packet is built. quic::QuicStopSendingFrame stop(1, stream_id, error_code); - if (include_stop_sending_if_v99 && version_ == quic::QUIC_VERSION_99) { + if (include_stop_sending_if_v99 && + version_.transport_version == quic::QUIC_VERSION_99) { frames.push_back(quic::QuicFrame(&stop)); DVLOG(1) << "Adding frame: " << frames.back(); } @@ -282,7 +286,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -310,7 +315,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -348,7 +354,8 @@ *offset += spdy_frame.size(); } quic::QuicStreamFrame headers_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, header_offset, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + header_offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); quic::QuicFrames frames; @@ -358,7 +365,7 @@ // The STOP_SENDING frame must be outside of the if (version==99) so that it // stays in scope until the packet is built. quic::QuicStopSendingFrame stop(1, rst_stream_id, rst_error_code); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { frames.push_back(quic::QuicFrame(&stop)); DVLOG(1) << "Adding frame: " << frames.back(); } @@ -408,7 +415,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -436,7 +444,8 @@ // The STOP_SENDING frame must be outside of the if (version==99) so that it // stays in scope until the packet is built. quic::QuicStopSendingFrame stop(1, stream_id, error_code); - if (version_ == quic::QUIC_VERSION_99 && include_stop_sending_if_v99) { + if (version_.transport_version == quic::QUIC_VERSION_99 && + include_stop_sending_if_v99) { frames.push_back(quic::QuicFrame(&stop)); DVLOG(1) << "Adding frame: " << frames.back(); } @@ -467,7 +476,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -483,7 +493,7 @@ // stays in scope until the packet is built. quic::QuicStopSendingFrame stop( 1, stream_id, static_cast<quic::QuicApplicationErrorCode>(error_code)); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { frames.push_back(quic::QuicFrame(&stop)); DVLOG(1) << "Adding frame: " << frames.back(); } @@ -504,7 +514,7 @@ quic::QuicConnectionCloseFrame close; close.quic_error_code = quic_error; close.error_details = quic_error_details; - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { close.close_type = quic::IETF_QUIC_TRANSPORT_CONNECTION_CLOSE; } @@ -535,7 +545,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -559,7 +570,7 @@ quic::QuicConnectionCloseFrame close; close.quic_error_code = quic_error; close.error_details = quic_error_details; - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { close.close_type = quic::IETF_QUIC_TRANSPORT_CONNECTION_CLOSE; } @@ -586,7 +597,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -596,7 +608,7 @@ quic::QuicConnectionCloseFrame close; close.quic_error_code = quic_error; close.error_details = quic_error_details; - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { close.close_type = quic::IETF_QUIC_TRANSPORT_CONNECTION_CLOSE; } @@ -618,7 +630,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(num); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -685,7 +698,8 @@ header.packet_number_length = GetPacketNumberLength(); header.packet_number = quic::QuicPacketNumber(packet_number); - if (quic::QuicVersionHasLongHeaderLengths(version_) && header.version_flag) { + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && + header.version_flag) { if (long_header_type_ == quic::INITIAL) { header.retry_token_length_length = quic::VARIABLE_LENGTH_INTEGER_LENGTH_1; } @@ -703,8 +717,7 @@ ack.packets.AddRange(quic::QuicPacketNumber(first_received), quic::QuicPacketNumber(largest_received + 1)); } - quic::QuicFramer framer(quic::test::SupportedVersions(quic::ParsedQuicVersion( - quic::PROTOCOL_QUIC_CRYPTO, version_)), + quic::QuicFramer framer(quic::test::SupportedVersions(version_), clock_->Now(), perspective_, quic::kQuicDefaultConnectionIdLength); quic::QuicFrames frames; @@ -854,7 +867,8 @@ quic::QuicStreamOffset header_offset = header_stream_offset == nullptr ? 0 : *header_stream_offset; quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, header_offset, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + header_offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); frames.push_back(quic::QuicFrame(frame)); DVLOG(1) << "Adding frame: " << frames.back(); @@ -934,14 +948,14 @@ if (offset != nullptr) { quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, *offset, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + *offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); *offset += spdy_frame.size(); return MakePacket(header_, quic::QuicFrame(frame)); } else { quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, 0, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + 0, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); return MakePacket(header_, quic::QuicFrame(frame)); } @@ -971,7 +985,8 @@ *header_stream_offset += spdy_frame.size(); } quic::QuicStreamFrame headers_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, header_offset, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + header_offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); quic::QuicRstStreamFrame rst_frame(1, stream_id, error_code, bytes_written); @@ -985,7 +1000,7 @@ // The STOP_SENDING frame must be outside of the if (version==99) so that it // stays in scope until the packet is built. quic::QuicStopSendingFrame stop(1, stream_id, error_code); - if (version_ == quic::QUIC_VERSION_99) { + if (version_.transport_version == quic::QUIC_VERSION_99) { frames.push_back(quic::QuicFrame(&stop)); DVLOG(1) << "Adding frame: " << frames.back(); } @@ -1056,14 +1071,14 @@ } if (offset != nullptr) { quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, *offset, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + *offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); *offset += spdy_frame.size(); return MakePacket(header_, quic::QuicFrame(frame)); } else { quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, 0, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + 0, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); return MakePacket(header_, quic::QuicFrame(frame)); } } @@ -1081,8 +1096,8 @@ spdy_request_framer_.SerializeFrame(spdy_data)); InitializeHeader(packet_number, should_include_version); quic::QuicStreamFrame quic_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, *offset, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + *offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); *offset += spdy_frame.size(); return MakePacket(header_, quic::QuicFrame(quic_frame)); } @@ -1109,14 +1124,14 @@ } if (offset != nullptr) { quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, *offset, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + *offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); *offset += spdy_frame.size(); return MakePacket(header_, quic::QuicFrame(frame)); } else { quic::QuicStreamFrame frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, 0, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + 0, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); return MakePacket(header_, quic::QuicFrame(frame)); } } @@ -1200,8 +1215,7 @@ const quic::QuicPacketHeader& header, const quic::QuicFrames& frames, quic::QuicStreamFrameDataProducer* data_producer) { - quic::QuicFramer framer(quic::test::SupportedVersions(quic::ParsedQuicVersion( - quic::PROTOCOL_QUIC_CRYPTO, version_)), + quic::QuicFramer framer(quic::test::SupportedVersions(version_), clock_->Now(), perspective_, quic::kQuicDefaultConnectionIdLength); if (data_producer != nullptr) { @@ -1232,7 +1246,7 @@ header_.long_packet_type = long_header_type_; header_.packet_number_length = GetPacketNumberLength(); header_.packet_number = quic::QuicPacketNumber(packet_number); - if (quic::QuicVersionHasLongHeaderLengths(version_) && + if (quic::QuicVersionHasLongHeaderLengths(version_.transport_version) && should_include_version) { if (long_header_type_ == quic::INITIAL) { header_.retry_token_length_length = @@ -1264,13 +1278,13 @@ *stream_data = std::string(spdy_frame.data(), spdy_frame.size()); if (offset != nullptr) { quic::QuicStreamFrame quic_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, *offset, - quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + *offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); *offset += spdy_frame.size(); return MakePacket(header_, quic::QuicFrame(quic_frame)); } quic::QuicStreamFrame quic_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, 0, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, 0, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); return MakePacket(header_, quic::QuicFrame(quic_frame)); } @@ -1297,7 +1311,8 @@ *offset += spdy_frame.size(); } quic::QuicStreamFrame quic_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, header_offset, + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + header_offset, quic::QuicStringPiece(spdy_frame.data(), spdy_frame.size())); DVLOG(1) << "Adding frame: " << quic::QuicFrame(quic_frame); InitializeHeader(packet_number, should_include_version); @@ -1344,8 +1359,8 @@ spdy::SpdySerializedFrame* spdy_frame = spdy_frames.back().get(); quic::QuicStreamFrame stream_frame( - quic::QuicUtils::GetHeadersStreamId(version_), false, *offset, - quic::QuicStringPiece(spdy_frame->data(), spdy_frame->size())); + quic::QuicUtils::GetHeadersStreamId(version_.transport_version), false, + *offset, quic::QuicStringPiece(spdy_frame->data(), spdy_frame->size())); *offset += spdy_frame->size(); frames.push_back(quic::QuicFrame(stream_frame)); @@ -1375,7 +1390,7 @@ } bool QuicTestPacketMaker::ShouldIncludeVersion(bool include_version) const { - if (version_ > quic::QUIC_VERSION_43) { + if (version_.transport_version > quic::QUIC_VERSION_43) { return encryption_level_ < quic::ENCRYPTION_FORWARD_SECURE; } return include_version; @@ -1383,9 +1398,9 @@ quic::QuicPacketNumberLength QuicTestPacketMaker::GetPacketNumberLength() const { - if (version_ > quic::QUIC_VERSION_43 && + if (version_.transport_version > quic::QUIC_VERSION_43 && encryption_level_ < quic::ENCRYPTION_FORWARD_SECURE && - version_ != quic::QUIC_VERSION_99) { + version_.transport_version != quic::QUIC_VERSION_99) { return quic::PACKET_4BYTE_PACKET_NUMBER; } return quic::PACKET_1BYTE_PACKET_NUMBER; @@ -1394,7 +1409,7 @@ quic::QuicConnectionIdIncluded QuicTestPacketMaker::HasDestinationConnectionId() const { if (perspective_ == quic::Perspective::IS_SERVER && - version_ > quic::QUIC_VERSION_43) { + version_.transport_version > quic::QUIC_VERSION_43) { return quic::CONNECTION_ID_ABSENT; } return quic::CONNECTION_ID_PRESENT; @@ -1403,7 +1418,7 @@ quic::QuicConnectionIdIncluded QuicTestPacketMaker::HasSourceConnectionId() const { if (perspective_ == quic::Perspective::IS_SERVER && - version_ > quic::QUIC_VERSION_43 && + version_.transport_version > quic::QUIC_VERSION_43 && encryption_level_ < quic::ENCRYPTION_FORWARD_SECURE) { return quic::CONNECTION_ID_PRESENT; }
diff --git a/net/quic/quic_test_packet_maker.h b/net/quic/quic_test_packet_maker.h index 9e1e880e..9569b53 100644 --- a/net/quic/quic_test_packet_maker.h +++ b/net/quic/quic_test_packet_maker.h
@@ -40,7 +40,7 @@ // stream id set to the |parent_stream_id| param of MakeRequestHeaders...(). // Otherwise, headers are constructed with the exclusive flag set to false and // the parent stream ID set to 0 (ignoring the |parent_stream_id| param). - QuicTestPacketMaker(quic::QuicTransportVersion version, + QuicTestPacketMaker(quic::ParsedQuicVersion version, quic::QuicConnectionId connection_id, quic::MockClock* clock, const std::string& host, @@ -410,7 +410,7 @@ quic::QuicConnectionIdIncluded HasDestinationConnectionId() const; quic::QuicConnectionIdIncluded HasSourceConnectionId() const; - quic::QuicTransportVersion version_; + quic::ParsedQuicVersion version_; quic::QuicConnectionId connection_id_; quic::MockClock* clock_; // Owned by QuicStreamFactory. std::string host_;
diff --git a/net/socket/connect_job.cc b/net/socket/connect_job.cc index 7419124..97756b1 100644 --- a/net/socket/connect_job.cc +++ b/net/socket/connect_job.cc
@@ -30,7 +30,7 @@ HttpAuthCache* http_auth_cache, HttpAuthHandlerFactory* http_auth_handler_factory, SpdySessionPool* spdy_session_pool, - const quic::QuicTransportVersionVector* quic_supported_versions, + const quic::ParsedQuicVersionVector* quic_supported_versions, QuicStreamFactory* quic_stream_factory, ProxyDelegate* proxy_delegate, const HttpUserAgentSettings* http_user_agent_settings,
diff --git a/net/socket/connect_job.h b/net/socket/connect_job.h index 2ce8d90..ced8ed3 100644 --- a/net/socket/connect_job.h +++ b/net/socket/connect_job.h
@@ -63,7 +63,7 @@ HttpAuthCache* http_auth_cache, HttpAuthHandlerFactory* http_auth_handler_factory, SpdySessionPool* spdy_session_pool, - const quic::QuicTransportVersionVector* quic_supported_versions, + const quic::ParsedQuicVersionVector* quic_supported_versions, QuicStreamFactory* quic_stream_factory, ProxyDelegate* proxy_delegate, const HttpUserAgentSettings* http_user_agent_settings, @@ -83,7 +83,7 @@ HttpAuthCache* http_auth_cache; HttpAuthHandlerFactory* http_auth_handler_factory; SpdySessionPool* spdy_session_pool; - const quic::QuicTransportVersionVector* quic_supported_versions; + const quic::ParsedQuicVersionVector* quic_supported_versions; QuicStreamFactory* quic_stream_factory; ProxyDelegate* proxy_delegate; const HttpUserAgentSettings* http_user_agent_settings;
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index ff1a81c..de872e5 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc
@@ -883,7 +883,7 @@ HttpServerProperties* http_server_properties, TransportSecurityState* transport_security_state, SSLConfigService* ssl_config_service, - const quic::QuicTransportVersionVector& quic_supported_versions, + const quic::ParsedQuicVersionVector& quic_supported_versions, bool enable_sending_initial_data, bool enable_ping_based_connection_checking, bool support_ietf_format_quic_altsvc, @@ -3393,7 +3393,7 @@ continue; // Check if QUIC version is supported. Filter supported QUIC versions. - quic::QuicTransportVersionVector advertised_versions; + quic::ParsedQuicVersionVector advertised_versions; if (protocol == kProtoQUIC && !altsvc.version.empty()) { advertised_versions = FilterSupportedAltSvcVersions( altsvc, quic_supported_versions_, support_ietf_format_quic_altsvc_);
diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h index b9da335..4a1a740 100644 --- a/net/spdy/spdy_session.h +++ b/net/spdy/spdy_session.h
@@ -315,7 +315,7 @@ HttpServerProperties* http_server_properties, TransportSecurityState* transport_security_state, SSLConfigService* ssl_config_service, - const quic::QuicTransportVersionVector& quic_supported_versions, + const quic::ParsedQuicVersionVector& quic_supported_versions, bool enable_sending_initial_data, bool enable_ping_based_connection_checking, bool support_ietf_format_quic_altsvc, @@ -1156,7 +1156,7 @@ NetLogWithSource net_log_; // Versions of QUIC which may be used. - const quic::QuicTransportVersionVector quic_supported_versions_; + const quic::ParsedQuicVersionVector quic_supported_versions_; // Outside of tests, these should always be true. const bool enable_sending_initial_data_;
diff --git a/net/spdy/spdy_session_pool.cc b/net/spdy/spdy_session_pool.cc index 8cc2dbd..97d484d 100644 --- a/net/spdy/spdy_session_pool.cc +++ b/net/spdy/spdy_session_pool.cc
@@ -81,7 +81,7 @@ SSLConfigService* ssl_config_service, HttpServerProperties* http_server_properties, TransportSecurityState* transport_security_state, - const quic::QuicTransportVersionVector& quic_supported_versions, + const quic::ParsedQuicVersionVector& quic_supported_versions, bool enable_ping_based_connection_checking, bool support_ietf_format_quic_altsvc, size_t session_max_recv_window_size,
diff --git a/net/spdy/spdy_session_pool.h b/net/spdy/spdy_session_pool.h index 9d9476ec..143d5645 100644 --- a/net/spdy/spdy_session_pool.h +++ b/net/spdy/spdy_session_pool.h
@@ -133,19 +133,18 @@ DISALLOW_COPY_AND_ASSIGN(SpdySessionRequest); }; - SpdySessionPool( - HostResolver* host_resolver, - SSLConfigService* ssl_config_service, - HttpServerProperties* http_server_properties, - TransportSecurityState* transport_security_state, - const quic::QuicTransportVersionVector& quic_supported_versions, - bool enable_ping_based_connection_checking, - bool support_ietf_format_quic_altsvc, - size_t session_max_recv_window_size, - const spdy::SettingsMap& initial_settings, - const base::Optional<GreasedHttp2Frame>& greased_http2_frame, - SpdySessionPool::TimeFunc time_func, - NetworkQualityEstimator* network_quality_estimator); + SpdySessionPool(HostResolver* host_resolver, + SSLConfigService* ssl_config_service, + HttpServerProperties* http_server_properties, + TransportSecurityState* transport_security_state, + const quic::ParsedQuicVersionVector& quic_supported_versions, + bool enable_ping_based_connection_checking, + bool support_ietf_format_quic_altsvc, + size_t session_max_recv_window_size, + const spdy::SettingsMap& initial_settings, + const base::Optional<GreasedHttp2Frame>& greased_http2_frame, + SpdySessionPool::TimeFunc time_func, + NetworkQualityEstimator* network_quality_estimator); ~SpdySessionPool() override; // In the functions below, a session is "available" if this pool has @@ -419,7 +418,7 @@ HostResolver* const resolver_; // Versions of QUIC which may be used. - const quic::QuicTransportVersionVector quic_supported_versions_; + const quic::ParsedQuicVersionVector quic_supported_versions_; // Defaults to true. May be controlled via SpdySessionPoolPeer for tests. bool enable_sending_initial_data_;
diff --git a/net/url_request/url_request_quic_perftest.cc b/net/url_request/url_request_quic_perftest.cc index 736c26a..4941e92 100644 --- a/net/url_request/url_request_quic_perftest.cc +++ b/net/url_request/url_request_quic_perftest.cc
@@ -67,9 +67,11 @@ std::unique_ptr<test_server::BasicHttpResponse> http_response( new test_server::BasicHttpResponse()); http_response->AddCustomHeader( - "Alt-Svc", base::StringPrintf( - "quic=\"%s:%d\"; v=\"%u\"", kAltSvcHost, kAltSvcPort, - HttpNetworkSession::Params().quic_supported_versions[0])); + "Alt-Svc", + base::StringPrintf("quic=\"%s:%d\"; v=\"%u\"", kAltSvcHost, kAltSvcPort, + HttpNetworkSession::Params() + .quic_supported_versions[0] + .transport_version)); http_response->set_code(HTTP_OK); http_response->set_content(kHelloOriginResponse); http_response->set_content_type("text/plain");
diff --git a/remoting/signaling/BUILD.gn b/remoting/signaling/BUILD.gn index a659345..6f92899 100644 --- a/remoting/signaling/BUILD.gn +++ b/remoting/signaling/BUILD.gn
@@ -63,7 +63,7 @@ "//base", "//crypto", "//google_apis", - "//jingle:jingle_glue", + "//jingle:webrtc_glue", "//net", "//remoting/base", "//remoting/base/grpc_support",
diff --git a/services/network/BUILD.gn b/services/network/BUILD.gn index 181c75b..d93471a 100644 --- a/services/network/BUILD.gn +++ b/services/network/BUILD.gn
@@ -215,7 +215,7 @@ "//components/network_session_configurator/common", "//components/os_crypt", "//components/prefs", - "//jingle:jingle_fake_socket", + "//jingle:fake_ssl_socket", "//mojo/core/embedder", "//mojo/public/cpp/bindings", "//mojo/public/cpp/system", @@ -369,7 +369,7 @@ "//components/prefs:test_support", "//components/variations:test_support", "//crypto:test_support", - "//jingle:jingle_fake_socket", + "//jingle:fake_ssl_socket", "//mojo/core/embedder", "//mojo/public/cpp/bindings", "//mojo/public/cpp/system",
diff --git a/services/service_manager/sandbox/BUILD.gn b/services/service_manager/sandbox/BUILD.gn index 260239a4..3e07753 100644 --- a/services/service_manager/sandbox/BUILD.gn +++ b/services/service_manager/sandbox/BUILD.gn
@@ -110,6 +110,7 @@ deps += [ "//third_party/fuchsia-sdk/sdk:fonts", "//third_party/fuchsia-sdk/sdk:mediacodec", + "//third_party/fuchsia-sdk/sdk:sysmem", "//third_party/fuchsia-sdk/sdk:ui_scenic", ] }
diff --git a/services/service_manager/sandbox/fuchsia/sandbox_policy_fuchsia.cc b/services/service_manager/sandbox/fuchsia/sandbox_policy_fuchsia.cc index 53ea196a..3b621b0 100644 --- a/services/service_manager/sandbox/fuchsia/sandbox_policy_fuchsia.cc +++ b/services/service_manager/sandbox/fuchsia/sandbox_policy_fuchsia.cc
@@ -10,6 +10,7 @@ #include <fuchsia/fonts/cpp/fidl.h> #include <fuchsia/mediacodec/cpp/fidl.h> +#include <fuchsia/sysmem/cpp/fidl.h> #include <fuchsia/ui/scenic/cpp/fidl.h> #include <memory> #include <utility> @@ -69,9 +70,9 @@ }, { SANDBOX_TYPE_GPU, - base::make_span( - (const char* const[]){fuchsia::ui::scenic::Scenic::Name_, - "fuchsia.vulkan.loader.Loader"}), + base::make_span((const char* const[]){ + fuchsia::ui::scenic::Scenic::Name_, + fuchsia::sysmem::Allocator::Name_, "fuchsia.vulkan.loader.Loader"}), kProvideVulkanResources, }, };
diff --git a/services/service_manager/sandbox/mac/gpu_v2.sb b/services/service_manager/sandbox/mac/gpu_v2.sb index 7035890..3db67c8 100644 --- a/services/service_manager/sandbox/mac/gpu_v2.sb +++ b/services/service_manager/sandbox/mac/gpu_v2.sb
@@ -80,3 +80,7 @@ (subpath "/Library/Video/Plug-Ins") (subpath "/System/Library/Video/Plug-Ins") ) + +; A temporary test to diagnose a hang. +(if (string=? (param bundle-id) "com.google.Chrome.canary") + (allow mach-lookup))
diff --git a/testing/buildbot/chromium.chrome.json b/testing/buildbot/chromium.chrome.json index ad59c2f..c1a9788f 100644 --- a/testing/buildbot/chromium.chrome.json +++ b/testing/buildbot/chromium.chrome.json
@@ -21,6 +21,10 @@ "gtest_tests": [ { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -34,6 +38,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -47,6 +55,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -60,6 +72,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -73,6 +89,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -86,6 +106,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -99,6 +123,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -112,6 +140,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -125,6 +157,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -138,6 +174,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -151,6 +191,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -164,6 +208,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -178,6 +226,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -191,6 +243,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -204,6 +260,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -221,6 +281,10 @@ "--enable-features=VizDisplayCompositor" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -240,6 +304,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -254,6 +322,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -270,6 +342,10 @@ "--gtest_filter=-*UsingRealWebcam*" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -283,6 +359,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -296,6 +376,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -309,6 +393,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -322,6 +410,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -335,6 +427,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -348,6 +444,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -361,6 +461,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -374,6 +478,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -387,6 +495,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -400,6 +512,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -418,6 +534,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -435,6 +555,10 @@ "--enable-features=VizDisplayCompositor" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -450,6 +574,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -466,6 +594,10 @@ "--enable-features=VizDisplayCompositor" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -480,6 +612,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -493,6 +629,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -506,6 +646,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -519,6 +663,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -532,6 +680,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -545,6 +697,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -558,6 +714,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -571,6 +731,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -584,6 +748,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -597,6 +765,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -610,6 +782,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -623,6 +799,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -636,6 +816,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -649,6 +833,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -662,6 +850,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -675,6 +867,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -689,6 +885,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -702,6 +902,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -715,6 +919,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -728,6 +936,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -741,6 +953,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -754,6 +970,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -767,6 +987,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -780,6 +1004,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -793,6 +1021,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -806,6 +1038,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -819,6 +1055,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -832,6 +1072,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -845,6 +1089,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -858,6 +1106,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -871,6 +1123,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -884,6 +1140,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -897,6 +1157,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -913,6 +1177,10 @@ "--ozone-platform=headless" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -926,6 +1194,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -939,6 +1211,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -952,6 +1228,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -965,6 +1245,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -978,6 +1262,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -991,6 +1279,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1004,6 +1296,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1017,6 +1313,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1030,6 +1330,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1043,6 +1347,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1056,6 +1364,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1069,6 +1381,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1082,6 +1398,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1095,6 +1415,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1108,6 +1432,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1121,6 +1449,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1134,6 +1466,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1147,6 +1483,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1160,6 +1500,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1173,6 +1517,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1186,6 +1534,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1199,6 +1551,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1212,6 +1568,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1225,6 +1585,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1238,6 +1602,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1251,6 +1619,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1264,6 +1636,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1277,6 +1653,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.chromiumos.json b/testing/buildbot/chromium.chromiumos.json index 3d4dfdb0..99f3df62 100644 --- a/testing/buildbot/chromium.chromiumos.json +++ b/testing/buildbot/chromium.chromiumos.json
@@ -20,6 +20,10 @@ "args": [ "--ozone-platform=headless" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -33,6 +37,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -46,6 +54,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -63,6 +75,10 @@ "--test-launcher-jobs=1", "--gtest_filter=-*UsingRealWebcam_CaptureMjpeg*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -76,6 +92,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -89,6 +109,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -103,6 +127,10 @@ "test": "chrome_all_tast_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -116,6 +144,10 @@ "test": "cros_vm_sanity_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -129,6 +161,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -142,6 +178,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -159,6 +199,10 @@ "--dbus-stub", "--gtest_filter=SplitViewTest.SplitViewResize" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -172,6 +216,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -185,6 +233,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -198,6 +250,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -214,6 +270,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/chromeos.media_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -227,6 +287,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -240,6 +304,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -256,6 +324,10 @@ "args": [ "--vpython-dir=../../vpython_dir_linux_amd64" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -280,6 +352,10 @@ "args": [ "--ozone-platform=headless" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -293,6 +369,10 @@ "test": "ozone_gl_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -306,6 +386,10 @@ "test": "ozone_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -319,6 +403,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -332,6 +420,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -345,6 +437,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -358,6 +454,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -432,6 +532,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/chromeos.base_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -448,6 +552,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -465,6 +573,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -485,6 +597,10 @@ "linux-chromeos-dbg": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -496,6 +612,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -507,6 +627,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -518,6 +642,10 @@ "test": "app_list_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -529,6 +657,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -540,6 +672,10 @@ "test": "ash_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -551,6 +687,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -562,6 +702,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -573,6 +717,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -584,6 +732,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -595,6 +747,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -606,6 +762,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -618,6 +778,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -629,6 +793,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -640,6 +808,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -655,6 +827,10 @@ "args": [ "--disable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "non_network_service_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -671,6 +847,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -688,6 +868,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -700,6 +884,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -714,6 +902,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -725,6 +917,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -736,6 +932,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -747,6 +947,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -758,6 +962,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -769,6 +977,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -780,6 +992,10 @@ "test": "chromeos_components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -791,6 +1007,10 @@ "test": "chromeos_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -805,6 +1025,10 @@ "args": [ "--disable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "non_network_service_components_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -817,6 +1041,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -828,6 +1056,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -839,6 +1071,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -854,6 +1090,10 @@ "args": [ "--disable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "non_network_service_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -870,6 +1110,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -885,6 +1129,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -898,6 +1146,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -912,6 +1164,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -924,6 +1180,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -935,6 +1195,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -946,6 +1210,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -957,6 +1225,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -968,6 +1240,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -979,6 +1255,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -990,6 +1270,10 @@ "test": "exo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1004,6 +1288,10 @@ "args": [ "--disable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "non_network_service_extensions_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1016,6 +1304,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1027,6 +1319,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1038,6 +1334,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1049,6 +1349,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1060,6 +1364,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1071,6 +1379,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1082,6 +1394,10 @@ "test": "gl_unittests_ozone" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1093,6 +1409,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1104,6 +1424,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1119,6 +1443,10 @@ "args": [ "--disable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "non_network_service_interactive_ui_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1132,6 +1460,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1143,6 +1475,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1154,6 +1490,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1165,6 +1505,10 @@ "test": "keyboard_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1176,6 +1520,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1187,6 +1535,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1198,6 +1550,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1209,6 +1565,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1220,6 +1580,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1231,6 +1595,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1242,6 +1610,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1253,6 +1625,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1264,6 +1640,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1275,6 +1655,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1286,6 +1670,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1297,6 +1685,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1308,6 +1700,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1323,6 +1719,10 @@ "args": [ "--ozone-platform=headless" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1334,6 +1734,10 @@ "test": "ozone_gl_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1345,6 +1749,10 @@ "test": "ozone_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1356,6 +1764,10 @@ "test": "ozone_x11_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1367,6 +1779,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1378,6 +1794,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1389,6 +1809,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1400,6 +1824,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1411,6 +1839,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1422,6 +1854,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1433,6 +1869,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1444,6 +1884,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1455,6 +1899,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1466,6 +1914,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1477,6 +1929,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1488,6 +1944,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1499,6 +1959,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1513,6 +1977,10 @@ "args": [ "--disable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "non_network_service_sync_integration_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1525,6 +1993,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1536,6 +2008,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1547,6 +2023,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1558,6 +2038,10 @@ "test": "ui_chromeos_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1569,6 +2053,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1580,6 +2068,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1592,6 +2084,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1603,6 +2099,10 @@ "test": "usage_time_limit_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1614,6 +2114,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1625,6 +2129,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1636,6 +2144,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1654,6 +2166,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1665,6 +2181,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1676,6 +2196,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1687,6 +2211,10 @@ "test": "app_list_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1698,6 +2226,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1709,6 +2241,10 @@ "test": "ash_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1720,6 +2256,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1731,6 +2271,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1742,6 +2286,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1753,6 +2301,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1764,6 +2316,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1775,6 +2331,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1787,6 +2347,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1798,6 +2362,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1809,6 +2377,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1824,6 +2396,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1841,6 +2417,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1853,6 +2433,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1867,6 +2451,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1878,6 +2466,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1889,6 +2481,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1900,6 +2496,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1911,6 +2511,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1922,6 +2526,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1933,6 +2541,10 @@ "test": "chromeos_components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1944,6 +2556,10 @@ "test": "chromeos_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1955,6 +2571,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1966,6 +2586,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1977,6 +2601,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1993,6 +2621,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -2008,6 +2640,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -2021,6 +2657,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2035,6 +2675,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -2047,6 +2691,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2058,6 +2706,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2069,6 +2721,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2080,6 +2736,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2091,6 +2751,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2102,6 +2766,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2113,6 +2781,10 @@ "test": "exo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2124,6 +2796,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2135,6 +2811,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2146,6 +2826,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2157,6 +2841,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2168,6 +2856,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2179,6 +2871,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2190,6 +2886,10 @@ "test": "gl_unittests_ozone" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2201,6 +2901,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2212,6 +2916,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2224,6 +2932,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2235,6 +2947,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2246,6 +2962,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2257,6 +2977,10 @@ "test": "keyboard_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2268,6 +2992,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2279,6 +3007,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2290,6 +3022,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2301,6 +3037,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2312,6 +3052,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2323,6 +3067,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2334,6 +3082,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2345,6 +3097,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2356,6 +3112,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2367,6 +3127,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2378,6 +3142,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2389,6 +3157,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2400,6 +3172,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2414,6 +3190,10 @@ "args": [ "--ozone-platform=headless" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2425,6 +3205,10 @@ "test": "ozone_gl_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2436,6 +3220,10 @@ "test": "ozone_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2447,6 +3235,10 @@ "test": "ozone_x11_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2458,6 +3250,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2469,6 +3265,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2480,6 +3280,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2491,6 +3295,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2502,6 +3310,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2513,6 +3325,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2524,6 +3340,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2535,6 +3355,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2546,6 +3370,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2557,6 +3385,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2568,6 +3400,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2579,6 +3415,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2590,6 +3430,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2601,6 +3445,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2612,6 +3460,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2623,6 +3475,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2634,6 +3490,10 @@ "test": "ui_chromeos_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2645,6 +3505,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2656,6 +3520,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2668,6 +3536,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2679,6 +3551,10 @@ "test": "usage_time_limit_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2690,6 +3566,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2701,6 +3581,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2712,6 +3596,10 @@ "test": "wayland_client_perftests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2723,6 +3611,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.clang.json b/testing/buildbot/chromium.clang.json index 7cde0fd..2395cc47 100644 --- a/testing/buildbot/chromium.clang.json +++ b/testing/buildbot/chromium.clang.json
@@ -4,6 +4,10 @@ "CFI Linux ToT": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15,6 +19,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26,6 +34,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -37,6 +49,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -48,6 +64,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -59,6 +79,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -70,6 +94,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -81,6 +109,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -92,6 +124,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -103,6 +139,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -115,6 +155,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -126,6 +170,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -137,6 +185,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -153,6 +205,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -165,6 +221,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -179,6 +239,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -190,6 +254,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -201,6 +269,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -212,6 +284,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -223,6 +299,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -234,6 +314,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -245,6 +329,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -256,6 +344,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -267,6 +359,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -283,6 +379,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -295,6 +395,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -306,6 +410,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -317,6 +425,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -328,6 +440,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -339,6 +455,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -350,6 +470,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -361,6 +485,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -372,6 +500,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -383,6 +515,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -394,6 +530,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -405,6 +545,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -416,6 +560,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -427,6 +575,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -438,6 +590,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -453,6 +609,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -467,6 +627,10 @@ "use_xvfb": false }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -478,6 +642,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -489,6 +657,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -500,6 +672,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -511,6 +687,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -523,6 +703,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -534,6 +718,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -545,6 +733,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -556,6 +748,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -567,6 +763,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -578,6 +778,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -589,6 +793,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -600,6 +808,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -611,6 +823,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -622,6 +838,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -633,6 +853,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -644,6 +868,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -655,6 +883,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -666,6 +898,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -677,6 +913,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -688,6 +928,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -699,6 +943,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -710,6 +958,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -721,6 +973,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -732,6 +988,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -743,6 +1003,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -754,6 +1018,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -765,6 +1033,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -776,6 +1048,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -787,6 +1063,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -798,6 +1078,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -809,6 +1093,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -820,6 +1108,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -831,6 +1123,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -842,6 +1138,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -853,6 +1153,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -864,6 +1168,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -875,6 +1183,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -886,6 +1198,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -897,6 +1213,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -908,6 +1228,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -919,6 +1243,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -930,6 +1258,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -941,6 +1273,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -952,6 +1288,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -963,6 +1303,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -978,6 +1322,10 @@ "CrWinAsan": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -990,6 +1338,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1002,6 +1354,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1014,6 +1370,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1026,6 +1386,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1038,6 +1402,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1050,6 +1418,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1062,6 +1434,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1074,6 +1450,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1086,6 +1466,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1099,6 +1483,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1111,6 +1499,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1123,6 +1515,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1140,6 +1536,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1153,6 +1553,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1168,6 +1572,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1180,6 +1588,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1192,6 +1604,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1204,6 +1620,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1216,6 +1636,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1228,6 +1652,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1240,6 +1668,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1252,6 +1684,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1264,6 +1700,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1276,6 +1716,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1288,6 +1732,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1300,6 +1748,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1317,6 +1769,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1330,6 +1786,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1342,6 +1802,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1354,6 +1818,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1366,6 +1834,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1378,6 +1850,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1390,6 +1866,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1402,6 +1882,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1414,6 +1898,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1426,6 +1914,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1438,6 +1930,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1450,6 +1946,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1462,6 +1962,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1474,6 +1978,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1486,6 +1994,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1498,6 +2010,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1510,6 +2026,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1522,6 +2042,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1534,6 +2058,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1546,6 +2074,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1558,6 +2090,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1570,6 +2106,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1582,6 +2122,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1594,6 +2138,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1607,6 +2155,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1620,6 +2172,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1632,6 +2188,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1644,6 +2204,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1656,6 +2220,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1668,6 +2236,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1680,6 +2252,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1692,6 +2268,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1704,6 +2284,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1716,6 +2300,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1728,6 +2316,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1740,6 +2332,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1752,6 +2348,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1764,6 +2364,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1776,6 +2380,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1788,6 +2396,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1800,6 +2412,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1812,6 +2428,10 @@ "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1824,6 +2444,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1836,6 +2460,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1848,6 +2476,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1860,6 +2492,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1872,6 +2508,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1885,6 +2525,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1897,6 +2541,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1909,6 +2557,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1921,6 +2573,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1933,6 +2589,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1946,6 +2606,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1958,6 +2622,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1970,6 +2638,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1982,6 +2654,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1994,6 +2670,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2006,6 +2686,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2018,6 +2702,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2030,6 +2718,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2042,6 +2734,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2054,6 +2750,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2066,6 +2766,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2078,6 +2782,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2090,6 +2798,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2102,6 +2814,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2114,6 +2830,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2126,6 +2846,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2138,6 +2862,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2150,6 +2878,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2166,6 +2898,10 @@ "CrWinAsan(dll)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2178,6 +2914,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2190,6 +2930,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2202,6 +2946,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2214,6 +2962,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2226,6 +2978,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2238,6 +2994,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2250,6 +3010,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2262,6 +3026,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2274,6 +3042,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2287,6 +3059,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2299,6 +3075,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2311,6 +3091,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2326,6 +3110,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2338,6 +3126,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2350,6 +3142,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2362,6 +3158,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2374,6 +3174,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2386,6 +3190,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2398,6 +3206,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2410,6 +3222,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2422,6 +3238,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2434,6 +3254,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2446,6 +3270,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2462,6 +3290,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -2475,6 +3307,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2487,6 +3323,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2499,6 +3339,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2511,6 +3355,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2523,6 +3371,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2535,6 +3387,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2547,6 +3403,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2559,6 +3419,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2571,6 +3435,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2583,6 +3451,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2595,6 +3467,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2607,6 +3483,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2619,6 +3499,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2631,6 +3515,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2643,6 +3531,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2655,6 +3547,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2667,6 +3563,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2679,6 +3579,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2691,6 +3595,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2703,6 +3611,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2715,6 +3627,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2728,6 +3644,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2740,6 +3660,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2752,6 +3676,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2764,6 +3692,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2776,6 +3708,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2788,6 +3724,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2800,6 +3740,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2812,6 +3756,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2824,6 +3772,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2836,6 +3788,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2848,6 +3804,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2860,6 +3820,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2872,6 +3836,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2884,6 +3852,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2896,6 +3868,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2908,6 +3884,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2920,6 +3900,10 @@ "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2932,6 +3916,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2944,6 +3932,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2956,6 +3948,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2968,6 +3964,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2980,6 +3980,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2993,6 +3997,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3005,6 +4013,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3017,6 +4029,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3029,6 +4045,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3041,6 +4061,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3054,6 +4078,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3066,6 +4094,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3078,6 +4110,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3090,6 +4126,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3102,6 +4142,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3114,6 +4158,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3126,6 +4174,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3138,6 +4190,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3150,6 +4206,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3162,6 +4222,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3174,6 +4238,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3186,6 +4254,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3198,6 +4270,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3210,6 +4286,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3222,6 +4302,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3234,6 +4318,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3246,6 +4334,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5909,6 +7001,10 @@ "args": [ "--tool=asan" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -8527,6 +9623,10 @@ "ToTLinux": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8538,6 +9638,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8549,6 +9653,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8560,6 +9668,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8571,6 +9683,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8582,6 +9698,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8593,6 +9713,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8604,6 +9728,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8615,6 +9743,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8626,6 +9758,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -8638,6 +9774,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8649,6 +9789,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8660,6 +9804,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8676,6 +9824,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -8688,6 +9840,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8702,6 +9858,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8713,6 +9873,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8724,6 +9888,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8735,6 +9903,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8746,6 +9918,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8757,6 +9933,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8768,6 +9948,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8779,6 +9963,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8790,6 +9978,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8806,6 +9998,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -8822,6 +10018,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -8834,6 +10034,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8845,6 +10049,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8856,6 +10064,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8867,6 +10079,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8878,6 +10094,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8889,6 +10109,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8900,6 +10124,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8911,6 +10139,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8922,6 +10154,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8933,6 +10169,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8944,6 +10184,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8955,6 +10199,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8966,6 +10214,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8977,6 +10229,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8988,6 +10244,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8999,6 +10259,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9010,6 +10274,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9021,6 +10289,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9032,6 +10304,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9044,6 +10320,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9055,6 +10335,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9066,6 +10350,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9077,6 +10365,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9088,6 +10380,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9099,6 +10395,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9110,6 +10410,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9121,6 +10425,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9132,6 +10440,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9143,6 +10455,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9154,6 +10470,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9165,6 +10485,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9176,6 +10500,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9187,6 +10515,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9198,6 +10530,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9209,6 +10545,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9220,6 +10560,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9231,6 +10575,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9242,6 +10590,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9253,6 +10605,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9264,6 +10620,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9275,6 +10635,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9286,6 +10650,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9297,6 +10665,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9308,6 +10680,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9319,6 +10695,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9330,6 +10710,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9341,6 +10725,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9352,6 +10740,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9363,6 +10755,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9374,6 +10770,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9385,6 +10785,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9396,6 +10800,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9407,6 +10815,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9418,6 +10830,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9429,6 +10845,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9440,6 +10860,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9451,6 +10875,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9462,6 +10890,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9473,6 +10905,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9484,6 +10920,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9495,6 +10935,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9522,6 +10966,10 @@ "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": [ @@ -9536,6 +10984,10 @@ "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": [ @@ -9550,6 +11002,10 @@ "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": [ @@ -9564,6 +11020,10 @@ "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": [ @@ -9578,6 +11038,10 @@ "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": [ @@ -9592,6 +11056,10 @@ "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": [ @@ -9606,6 +11074,10 @@ "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": [ @@ -9620,6 +11092,10 @@ "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": [ @@ -9634,6 +11110,10 @@ "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": [ @@ -9648,6 +11128,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9663,6 +11147,10 @@ "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": [ @@ -9677,6 +11165,10 @@ "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": [ @@ -9691,6 +11183,10 @@ "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": [ @@ -9708,6 +11204,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9723,6 +11223,10 @@ "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": [ @@ -9738,6 +11242,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--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": [ @@ -9752,6 +11260,10 @@ "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": [ @@ -9766,6 +11278,10 @@ "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": [ @@ -9780,6 +11296,10 @@ "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": [ @@ -9794,6 +11314,10 @@ "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": [ @@ -9808,6 +11332,10 @@ "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": [ @@ -9822,6 +11350,10 @@ "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": [ @@ -9836,6 +11368,10 @@ "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": [ @@ -9850,6 +11386,10 @@ "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": [ @@ -9867,6 +11407,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -9884,6 +11428,10 @@ "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -9899,6 +11447,10 @@ "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": [ @@ -9913,6 +11465,10 @@ "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": [ @@ -9927,6 +11483,10 @@ "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": [ @@ -9941,6 +11501,10 @@ "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": [ @@ -9955,6 +11519,10 @@ "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": [ @@ -9969,6 +11537,10 @@ "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": [ @@ -9983,6 +11555,10 @@ "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": [ @@ -9997,6 +11573,10 @@ "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": [ @@ -10011,6 +11591,10 @@ "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": [ @@ -10025,6 +11609,10 @@ "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": [ @@ -10039,6 +11627,10 @@ "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": [ @@ -10053,6 +11645,10 @@ "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": [ @@ -10067,6 +11663,10 @@ "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": [ @@ -10081,6 +11681,10 @@ "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": [ @@ -10095,6 +11699,10 @@ "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": [ @@ -10109,6 +11717,10 @@ "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": [ @@ -10123,6 +11735,10 @@ "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": [ @@ -10137,6 +11753,10 @@ "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": [ @@ -10152,6 +11772,10 @@ "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": [ @@ -10166,6 +11790,10 @@ "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": [ @@ -10180,6 +11808,10 @@ "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": [ @@ -10194,6 +11826,10 @@ "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": [ @@ -10208,6 +11844,10 @@ "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": [ @@ -10222,6 +11862,10 @@ "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": [ @@ -10236,6 +11880,10 @@ "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": [ @@ -10250,6 +11898,10 @@ "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": [ @@ -10264,6 +11916,10 @@ "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": [ @@ -10278,6 +11934,10 @@ "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": [ @@ -10292,6 +11952,10 @@ "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": [ @@ -10306,6 +11970,10 @@ "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": [ @@ -10320,6 +11988,10 @@ "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": [ @@ -10334,6 +12006,10 @@ "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": [ @@ -10348,6 +12024,10 @@ "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": [ @@ -10362,6 +12042,10 @@ "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": [ @@ -10377,6 +12061,10 @@ "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": [ @@ -10391,6 +12079,10 @@ "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": [ @@ -10405,6 +12097,10 @@ "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": [ @@ -10419,6 +12115,10 @@ "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": [ @@ -10433,6 +12133,10 @@ "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": [ @@ -10447,6 +12151,10 @@ "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": [ @@ -10461,6 +12169,10 @@ "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": [ @@ -10475,6 +12187,10 @@ "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": [ @@ -10489,6 +12205,10 @@ "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": [ @@ -10503,6 +12223,10 @@ "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": [ @@ -10517,6 +12241,10 @@ "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": [ @@ -10531,6 +12259,10 @@ "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": [ @@ -10545,6 +12277,10 @@ "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": [ @@ -10559,6 +12295,10 @@ "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": [ @@ -10573,6 +12313,10 @@ "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": [ @@ -10587,6 +12331,10 @@ "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": [ @@ -10601,6 +12349,10 @@ "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": [ @@ -10615,6 +12367,10 @@ "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": [ @@ -10630,6 +12386,10 @@ "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": [ @@ -10644,6 +12404,10 @@ "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": [ @@ -10658,6 +12422,10 @@ "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": [ @@ -10672,6 +12440,10 @@ "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": [ @@ -10686,6 +12458,10 @@ "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": [ @@ -10700,6 +12476,10 @@ "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": [ @@ -10714,6 +12494,10 @@ "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": [ @@ -10728,6 +12512,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10747,6 +12535,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10758,6 +12550,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10769,6 +12565,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10780,6 +12580,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10791,6 +12595,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10802,6 +12610,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10813,6 +12625,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10824,6 +12640,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10835,6 +12655,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10846,6 +12670,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10858,6 +12686,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10869,6 +12701,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10880,6 +12716,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10896,6 +12736,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10908,6 +12752,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10922,6 +12770,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10933,6 +12785,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10944,6 +12800,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10955,6 +12815,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10966,6 +12830,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10977,6 +12845,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10988,6 +12860,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10999,6 +12875,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11010,6 +12890,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11026,6 +12910,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -11042,6 +12930,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -11054,6 +12946,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11065,6 +12961,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11076,6 +12976,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11087,6 +12991,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11098,6 +13006,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11109,6 +13021,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11120,6 +13036,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11131,6 +13051,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11142,6 +13066,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11153,6 +13081,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11164,6 +13096,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11175,6 +13111,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11186,6 +13126,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11197,6 +13141,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11208,6 +13156,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11219,6 +13171,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11230,6 +13186,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11241,6 +13201,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11252,6 +13216,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11264,6 +13232,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11275,6 +13247,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11286,6 +13262,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11297,6 +13277,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11308,6 +13292,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11319,6 +13307,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11330,6 +13322,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11341,6 +13337,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11352,6 +13352,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11363,6 +13367,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11374,6 +13382,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11385,6 +13397,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11396,6 +13412,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11407,6 +13427,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11418,6 +13442,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11429,6 +13457,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11440,6 +13472,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11451,6 +13487,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11462,6 +13502,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11473,6 +13517,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11484,6 +13532,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11495,6 +13547,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11506,6 +13562,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11517,6 +13577,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11528,6 +13592,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11539,6 +13607,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11550,6 +13622,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11561,6 +13637,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11572,6 +13652,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11583,6 +13667,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11594,6 +13682,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11605,6 +13697,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11616,6 +13712,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11627,6 +13727,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11638,6 +13742,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11649,6 +13757,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11660,6 +13772,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11671,6 +13787,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11682,6 +13802,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11693,6 +13817,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11704,6 +13832,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -11720,6 +13852,10 @@ "ToTLinuxOfficial": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11731,6 +13867,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11742,6 +13882,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11753,6 +13897,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11764,6 +13912,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11775,6 +13927,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11786,6 +13942,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11797,6 +13957,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11808,6 +13972,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11819,6 +13987,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -11831,6 +14003,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11842,6 +14018,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11853,6 +14033,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11869,6 +14053,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -11881,6 +14069,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11895,6 +14087,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11906,6 +14102,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11917,6 +14117,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11928,6 +14132,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11939,6 +14147,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11950,6 +14162,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11961,6 +14177,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11972,6 +14192,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11983,6 +14207,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11999,6 +14227,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -12015,6 +14247,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -12027,6 +14263,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12038,6 +14278,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12049,6 +14293,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12060,6 +14308,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12071,6 +14323,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12082,6 +14338,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12093,6 +14353,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12104,6 +14368,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12115,6 +14383,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12126,6 +14398,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12137,6 +14413,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12148,6 +14428,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12159,6 +14443,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12170,6 +14458,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12181,6 +14473,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12192,6 +14488,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12203,6 +14503,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12214,6 +14518,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12225,6 +14533,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12237,6 +14549,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12248,6 +14564,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12259,6 +14579,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12270,6 +14594,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12281,6 +14609,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12292,6 +14624,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12303,6 +14639,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12314,6 +14654,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12325,6 +14669,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12336,6 +14684,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12347,6 +14699,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12358,6 +14714,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12369,6 +14729,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12380,6 +14744,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12391,6 +14759,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12402,6 +14774,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12413,6 +14789,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12424,6 +14804,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12435,6 +14819,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12446,6 +14834,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12457,6 +14849,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12468,6 +14864,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12479,6 +14879,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12490,6 +14894,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12501,6 +14909,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12512,6 +14924,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12523,6 +14939,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12534,6 +14954,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12545,6 +14969,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12556,6 +14984,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12567,6 +14999,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12578,6 +15014,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12589,6 +15029,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12600,6 +15044,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12611,6 +15059,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12622,6 +15074,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12633,6 +15089,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12644,6 +15104,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12655,6 +15119,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12666,6 +15134,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12677,6 +15149,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12688,6 +15164,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -12707,6 +15187,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12718,6 +15202,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12729,6 +15217,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12740,6 +15232,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12751,6 +15247,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12762,6 +15262,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12773,6 +15277,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12784,6 +15292,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12795,6 +15307,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12806,6 +15322,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -12818,6 +15338,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12829,6 +15353,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12844,6 +15372,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -12856,6 +15388,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12870,6 +15406,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12881,6 +15421,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12892,6 +15436,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12903,6 +15451,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12914,6 +15466,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12925,6 +15481,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12936,6 +15496,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12947,6 +15511,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12958,6 +15526,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12974,6 +15546,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -12990,6 +15566,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -13002,6 +15582,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13013,6 +15597,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13024,6 +15612,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13035,6 +15627,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13046,6 +15642,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13057,6 +15657,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13068,6 +15672,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13079,6 +15687,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13090,6 +15702,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13101,6 +15717,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13112,6 +15732,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13123,6 +15747,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13134,6 +15762,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13145,6 +15777,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13156,6 +15792,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13167,6 +15807,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13178,6 +15822,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13189,6 +15837,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13200,6 +15852,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13212,6 +15868,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13223,6 +15883,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13234,6 +15898,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13245,6 +15913,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13256,6 +15928,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13267,6 +15943,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13278,6 +15958,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13289,6 +15973,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13300,6 +15988,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13311,6 +16003,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13322,6 +16018,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13333,6 +16033,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13344,6 +16048,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13355,6 +16063,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13366,6 +16078,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13377,6 +16093,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13389,6 +16109,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13400,6 +16124,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13411,6 +16139,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13422,6 +16154,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13433,6 +16169,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13444,6 +16184,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13455,6 +16199,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13466,6 +16214,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13477,6 +16229,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13488,6 +16244,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13499,6 +16259,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13510,6 +16274,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13521,6 +16289,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13532,6 +16304,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13544,6 +16320,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13555,6 +16335,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13566,6 +16350,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13577,6 +16365,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13588,6 +16380,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13599,6 +16395,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13610,6 +16410,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13621,6 +16425,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13632,6 +16440,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13643,6 +16455,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13654,6 +16470,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13665,6 +16485,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -13681,6 +16505,10 @@ "ToTLinuxThinLTO": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13692,6 +16520,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13703,6 +16535,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13714,6 +16550,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13725,6 +16565,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13736,6 +16580,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13747,6 +16595,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13758,6 +16610,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13769,6 +16625,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13780,6 +16640,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -13792,6 +16656,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13803,6 +16671,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13814,6 +16686,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13830,6 +16706,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -13842,6 +16722,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13856,6 +16740,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13867,6 +16755,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13878,6 +16770,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13889,6 +16785,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13900,6 +16800,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13911,6 +16815,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13922,6 +16830,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13933,6 +16845,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13944,6 +16860,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13960,6 +16880,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -13976,6 +16900,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -13988,6 +16916,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13999,6 +16931,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14010,6 +16946,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14021,6 +16961,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14032,6 +16976,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14043,6 +16991,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14054,6 +17006,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14065,6 +17021,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14076,6 +17036,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14087,6 +17051,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14098,6 +17066,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14109,6 +17081,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14120,6 +17096,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14131,6 +17111,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14142,6 +17126,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14153,6 +17141,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14164,6 +17156,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14175,6 +17171,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14186,6 +17186,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14198,6 +17202,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14209,6 +17217,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14220,6 +17232,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14231,6 +17247,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14242,6 +17262,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14253,6 +17277,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14264,6 +17292,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14275,6 +17307,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14286,6 +17322,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14297,6 +17337,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14308,6 +17352,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14319,6 +17367,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14330,6 +17382,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14341,6 +17397,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14352,6 +17412,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14363,6 +17427,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14374,6 +17442,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14385,6 +17457,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14396,6 +17472,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14407,6 +17487,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14418,6 +17502,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14429,6 +17517,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14440,6 +17532,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14451,6 +17547,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14462,6 +17562,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14473,6 +17577,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14484,6 +17592,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14495,6 +17607,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14506,6 +17622,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14517,6 +17637,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14528,6 +17652,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14539,6 +17667,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14550,6 +17682,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14561,6 +17697,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14572,6 +17712,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14583,6 +17727,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14594,6 +17742,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14605,6 +17757,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14616,6 +17772,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14627,6 +17787,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14638,6 +17802,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14649,6 +17817,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -14668,6 +17840,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14679,6 +17855,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14690,6 +17870,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14701,6 +17885,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14712,6 +17900,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14723,6 +17915,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14734,6 +17930,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14745,6 +17945,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14756,6 +17960,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14767,6 +17975,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -14779,6 +17991,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14790,6 +18006,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14801,6 +18021,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14817,6 +18041,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -14829,6 +18057,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14843,6 +18075,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14854,6 +18090,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14865,6 +18105,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14876,6 +18120,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14887,6 +18135,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14898,6 +18150,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14909,6 +18165,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14920,6 +18180,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14931,6 +18195,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14947,6 +18215,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -14963,6 +18235,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -14975,6 +18251,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14986,6 +18266,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14997,6 +18281,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15008,6 +18296,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15019,6 +18311,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15030,6 +18326,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15041,6 +18341,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15052,6 +18356,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15063,6 +18371,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15074,6 +18386,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15085,6 +18401,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15096,6 +18416,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15107,6 +18431,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15118,6 +18446,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15129,6 +18461,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15140,6 +18476,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15151,6 +18491,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15162,6 +18506,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15173,6 +18521,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15185,6 +18537,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15196,6 +18552,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15207,6 +18567,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15218,6 +18582,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15229,6 +18597,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15240,6 +18612,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15251,6 +18627,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15262,6 +18642,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15273,6 +18657,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15284,6 +18672,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15295,6 +18687,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15306,6 +18702,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15317,6 +18717,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15328,6 +18732,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15339,6 +18747,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15350,6 +18762,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15361,6 +18777,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15372,6 +18792,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15383,6 +18807,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15394,6 +18822,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15405,6 +18837,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15416,6 +18852,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15427,6 +18867,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15438,6 +18882,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15449,6 +18897,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15460,6 +18912,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15471,6 +18927,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15482,6 +18942,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15493,6 +18957,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15504,6 +18972,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15515,6 +18987,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15526,6 +19002,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15537,6 +19017,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15548,6 +19032,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15559,6 +19047,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15570,6 +19062,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15581,6 +19077,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15592,6 +19092,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15603,6 +19107,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15614,6 +19122,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15625,6 +19137,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15636,6 +19152,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -15652,54 +19172,90 @@ "ToTMac": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -15707,12 +19263,20 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -15723,6 +19287,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -15734,6 +19302,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -15741,6 +19313,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -15750,48 +19326,80 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -15803,6 +19411,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -15810,114 +19422,190 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -15925,210 +19613,350 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16269,6 +20097,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16278,6 +20110,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16287,6 +20123,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16296,6 +20136,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16305,6 +20149,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16314,6 +20162,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16323,6 +20175,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16332,6 +20188,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16341,6 +20201,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -16351,6 +20215,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16360,6 +20228,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16371,6 +20243,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -16383,6 +20259,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -16393,6 +20273,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16403,6 +20287,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16412,6 +20300,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16421,6 +20313,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16430,6 +20326,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16439,6 +20339,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16448,6 +20352,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16457,6 +20365,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16466,6 +20378,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -16478,6 +20394,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -16488,6 +20408,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16497,6 +20421,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16506,6 +20434,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16515,6 +20447,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16524,6 +20460,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16533,6 +20473,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16542,6 +20486,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16551,6 +20499,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16560,6 +20512,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16569,6 +20525,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16578,6 +20538,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16587,6 +20551,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16596,6 +20564,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16605,6 +20577,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16614,6 +20590,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16623,6 +20603,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16632,6 +20616,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16641,6 +20629,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16650,6 +20642,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -16660,6 +20656,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16669,6 +20669,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16678,6 +20682,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16687,6 +20695,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16696,6 +20708,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16705,6 +20721,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16714,6 +20734,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16723,6 +20747,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16732,6 +20760,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16741,6 +20773,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16750,6 +20786,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16759,6 +20799,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16768,6 +20812,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16777,6 +20825,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16786,6 +20838,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16795,6 +20851,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16804,6 +20864,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16813,6 +20877,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16822,6 +20890,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16831,6 +20903,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16840,6 +20916,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16849,6 +20929,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16858,6 +20942,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16867,6 +20955,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16876,6 +20968,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16885,6 +20981,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16894,6 +20994,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16903,6 +21007,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16912,6 +21020,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16921,6 +21033,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16930,6 +21046,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16939,6 +21059,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16948,6 +21072,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16957,6 +21085,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -16967,54 +21099,90 @@ "ToTMacOfficial": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -17022,18 +21190,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -17045,6 +21225,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -17052,6 +21236,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -17061,48 +21249,80 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -17114,6 +21334,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -17121,114 +21345,190 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -17236,210 +21536,350 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -17577,60 +22017,100 @@ "ToTWin": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -17638,18 +22118,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -17661,6 +22153,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -17668,6 +22164,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -17677,72 +22177,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -17754,6 +22302,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -17761,138 +22313,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17904,6 +22548,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -17911,126 +22559,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18042,30 +22774,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18077,108 +22829,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -18189,60 +23013,100 @@ "ToTWin(dbg)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -18250,18 +23114,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 20 @@ -18273,6 +23149,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -18280,6 +23160,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -18289,72 +23173,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -18366,6 +23298,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -18373,138 +23309,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18516,6 +23544,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -18523,126 +23555,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18654,30 +23770,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18689,108 +23825,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -18801,60 +24009,100 @@ "ToTWin(dll)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -18862,18 +24110,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -18885,6 +24145,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -18892,6 +24156,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -18901,72 +24169,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -18978,6 +24294,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -18985,138 +24305,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19128,6 +24540,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -19135,126 +24551,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19266,30 +24766,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19301,108 +24821,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -19413,6 +25005,10 @@ "ToTWin64": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19425,6 +25021,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19437,6 +25037,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19449,6 +25053,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19461,6 +25069,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19473,6 +25085,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19485,6 +25101,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19497,6 +25117,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19509,6 +25133,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19521,6 +25149,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -19534,6 +25166,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19546,6 +25182,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19558,6 +25198,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19575,6 +25219,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -19588,6 +25236,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19603,6 +25255,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19615,6 +25271,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19627,6 +25287,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19639,6 +25303,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19651,6 +25319,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19663,6 +25335,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19675,6 +25351,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19687,6 +25367,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19699,6 +25383,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19711,6 +25399,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19723,6 +25415,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19735,6 +25431,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19752,6 +25452,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -19765,6 +25469,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19777,6 +25485,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19789,6 +25501,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19801,6 +25517,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19813,6 +25533,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19825,6 +25549,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19837,6 +25565,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19849,6 +25581,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19861,6 +25597,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19873,6 +25613,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19885,6 +25629,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19897,6 +25645,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19909,6 +25661,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19921,6 +25677,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19933,6 +25693,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19945,6 +25709,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19957,6 +25725,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19969,6 +25741,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19981,6 +25757,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19993,6 +25773,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20005,6 +25789,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20017,6 +25805,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20029,6 +25821,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20042,6 +25838,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20055,6 +25855,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20067,6 +25871,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20079,6 +25887,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20091,6 +25903,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20103,6 +25919,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20115,6 +25935,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20127,6 +25951,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20139,6 +25967,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20151,6 +25983,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20163,6 +25999,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20175,6 +26015,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20187,6 +26031,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20199,6 +26047,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20211,6 +26063,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20223,6 +26079,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20235,6 +26095,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20247,6 +26111,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20259,6 +26127,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20271,6 +26143,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20283,6 +26159,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20295,6 +26175,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20308,6 +26192,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20320,6 +26208,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20332,6 +26224,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20344,6 +26240,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20356,6 +26256,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20369,6 +26273,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20381,6 +26289,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20393,6 +26305,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20405,6 +26321,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20417,6 +26337,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20429,6 +26353,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20441,6 +26369,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20453,6 +26385,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20465,6 +26401,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20477,6 +26417,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20489,6 +26433,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20501,6 +26449,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20513,6 +26465,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20525,6 +26481,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20537,6 +26497,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20549,6 +26513,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20561,6 +26529,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20573,6 +26545,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20589,6 +26565,10 @@ "ToTWin64(dbg)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20601,6 +26581,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20613,6 +26597,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20625,6 +26613,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20637,6 +26629,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20649,6 +26645,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20661,6 +26661,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20673,6 +26677,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20685,6 +26693,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20697,6 +26709,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -20710,6 +26726,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20722,6 +26742,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20734,6 +26758,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20751,6 +26779,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -20764,6 +26796,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20779,6 +26815,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20791,6 +26831,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20803,6 +26847,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20815,6 +26863,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20827,6 +26879,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20839,6 +26895,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20851,6 +26911,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20863,6 +26927,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20875,6 +26943,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20887,6 +26959,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20899,6 +26975,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20911,6 +26991,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20928,6 +27012,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -20941,6 +27029,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20953,6 +27045,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20965,6 +27061,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20977,6 +27077,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20989,6 +27093,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21001,6 +27109,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21013,6 +27125,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21025,6 +27141,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21037,6 +27157,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21049,6 +27173,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21061,6 +27189,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21073,6 +27205,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21085,6 +27221,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21097,6 +27237,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21109,6 +27253,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21121,6 +27269,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21133,6 +27285,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21145,6 +27301,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21157,6 +27317,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21169,6 +27333,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21181,6 +27349,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21193,6 +27365,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21205,6 +27381,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21218,6 +27398,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21231,6 +27415,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21243,6 +27431,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21255,6 +27447,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21267,6 +27463,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21279,6 +27479,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21291,6 +27495,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21303,6 +27511,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21315,6 +27527,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21327,6 +27543,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21339,6 +27559,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21351,6 +27575,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21363,6 +27591,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21375,6 +27607,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21387,6 +27623,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21399,6 +27639,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21411,6 +27655,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21423,6 +27671,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21435,6 +27687,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21447,6 +27703,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21459,6 +27719,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21471,6 +27735,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21484,6 +27752,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21496,6 +27768,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21508,6 +27784,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21520,6 +27800,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21532,6 +27816,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21545,6 +27833,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21557,6 +27849,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21569,6 +27865,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21581,6 +27881,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21593,6 +27897,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21605,6 +27913,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21617,6 +27929,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21629,6 +27945,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21641,6 +27961,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21653,6 +27977,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21665,6 +27993,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21677,6 +28009,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21689,6 +28025,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21701,6 +28041,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21713,6 +28057,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21725,6 +28073,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21737,6 +28089,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21749,6 +28105,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21765,6 +28125,10 @@ "ToTWin64(dll)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21777,6 +28141,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21789,6 +28157,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21801,6 +28173,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21813,6 +28189,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21825,6 +28205,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21837,6 +28221,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21849,6 +28237,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21861,6 +28253,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21873,6 +28269,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -21886,6 +28286,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21898,6 +28302,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21910,6 +28318,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21927,6 +28339,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -21940,6 +28356,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21955,6 +28375,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21967,6 +28391,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21979,6 +28407,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21991,6 +28423,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22003,6 +28439,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22015,6 +28455,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22027,6 +28471,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22039,6 +28487,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22051,6 +28503,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22063,6 +28519,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22075,6 +28535,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22087,6 +28551,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22104,6 +28572,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -22117,6 +28589,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22129,6 +28605,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22141,6 +28621,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22153,6 +28637,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22165,6 +28653,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22177,6 +28669,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22189,6 +28685,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22201,6 +28701,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22213,6 +28717,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22225,6 +28733,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22237,6 +28749,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22249,6 +28765,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22261,6 +28781,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22273,6 +28797,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22285,6 +28813,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22297,6 +28829,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22309,6 +28845,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22321,6 +28861,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22333,6 +28877,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22345,6 +28893,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22357,6 +28909,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22369,6 +28925,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22381,6 +28941,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22394,6 +28958,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22407,6 +28975,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22419,6 +28991,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22431,6 +29007,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22443,6 +29023,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22455,6 +29039,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22467,6 +29055,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22479,6 +29071,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22491,6 +29087,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22503,6 +29103,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22515,6 +29119,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22527,6 +29135,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22539,6 +29151,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22551,6 +29167,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22563,6 +29183,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22575,6 +29199,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22587,6 +29215,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22599,6 +29231,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22611,6 +29247,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22623,6 +29263,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22635,6 +29279,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22647,6 +29295,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22660,6 +29312,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22672,6 +29328,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22684,6 +29344,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22696,6 +29360,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22708,6 +29376,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22721,6 +29393,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22733,6 +29409,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22745,6 +29425,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22757,6 +29441,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22769,6 +29457,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22781,6 +29473,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22793,6 +29489,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22805,6 +29505,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22817,6 +29521,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22829,6 +29537,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22841,6 +29553,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22853,6 +29569,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22865,6 +29585,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22877,6 +29601,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22889,6 +29617,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22901,6 +29633,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22913,6 +29649,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22925,6 +29665,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22941,60 +29685,100 @@ "ToTWinCFI": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -23002,18 +29786,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -23025,6 +29821,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -23032,6 +29832,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -23041,72 +29845,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -23118,6 +29970,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -23125,138 +29981,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23268,6 +30216,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -23275,126 +30227,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23406,30 +30442,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23441,108 +30497,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -23553,60 +30681,100 @@ "ToTWinCFI64": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -23614,18 +30782,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -23637,6 +30817,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -23644,6 +30828,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -23653,72 +30841,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -23730,6 +30966,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -23737,138 +30977,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23880,6 +31212,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -23887,126 +31223,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24018,30 +31438,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24053,108 +31493,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -24165,60 +31677,100 @@ "ToTWinLibcxx64": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -24226,18 +31778,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -24249,6 +31813,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -24256,6 +31824,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -24265,72 +31837,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -24342,6 +31962,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -24349,138 +31973,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24492,6 +32208,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -24499,126 +32219,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24630,30 +32434,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24665,108 +32489,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -24777,60 +32673,100 @@ "ToTWinOfficial": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -24838,18 +32774,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -24861,6 +32809,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -24868,6 +32820,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -24877,72 +32833,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -24954,6 +32958,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -24961,138 +32969,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25104,6 +33204,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -25111,126 +33215,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25242,30 +33430,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25277,108 +33485,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -25389,60 +33669,100 @@ "ToTWinThinLTO64": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -25450,18 +33770,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -25473,6 +33805,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -25480,6 +33816,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -25489,72 +33829,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -25566,6 +33954,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -25573,138 +33965,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25716,6 +34200,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -25723,126 +34211,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25854,30 +34426,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25889,108 +34481,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -26001,6 +34665,10 @@ "UBSanVptr Linux": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26012,6 +34680,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26023,6 +34695,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26034,6 +34710,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26045,6 +34725,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26056,6 +34740,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26067,6 +34755,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26078,6 +34770,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26089,6 +34785,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26100,6 +34800,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -26112,6 +34816,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26123,6 +34831,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26134,6 +34846,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26150,6 +34866,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -26162,6 +34882,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26176,6 +34900,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26187,6 +34915,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26198,6 +34930,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26209,6 +34945,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26220,6 +34960,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26231,6 +34975,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26242,6 +34990,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26253,6 +35005,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26264,6 +35020,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26280,6 +35040,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -26296,6 +35060,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -26308,6 +35076,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26319,6 +35091,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26330,6 +35106,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26341,6 +35121,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26352,6 +35136,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26363,6 +35151,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26374,6 +35166,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26385,6 +35181,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26396,6 +35196,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26407,6 +35211,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26418,6 +35226,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26429,6 +35241,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26440,6 +35256,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26451,6 +35271,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26462,6 +35286,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26473,6 +35301,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26484,6 +35316,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26495,6 +35331,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26506,6 +35346,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26518,6 +35362,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26529,6 +35377,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26540,6 +35392,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26551,6 +35407,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26562,6 +35422,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26573,6 +35437,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26584,6 +35452,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26595,6 +35467,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26606,6 +35482,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26617,6 +35497,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26628,6 +35512,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26639,6 +35527,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26650,6 +35542,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26661,6 +35557,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26672,6 +35572,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26683,6 +35587,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26694,6 +35602,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26705,6 +35617,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26716,6 +35632,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26727,6 +35647,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26738,6 +35662,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26749,6 +35677,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26760,6 +35692,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26771,6 +35707,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26782,6 +35722,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26793,6 +35737,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26804,6 +35752,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26815,6 +35767,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26826,6 +35782,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26837,6 +35797,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26848,6 +35812,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26859,6 +35827,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26870,6 +35842,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26881,6 +35857,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26892,6 +35872,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26903,6 +35887,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26914,6 +35902,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26925,6 +35917,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26936,6 +35932,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26947,6 +35947,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26958,6 +35962,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26969,6 +35977,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -26985,6 +35997,10 @@ "linux-win_cross-rel": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26996,6 +36012,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27007,6 +36027,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27018,6 +36042,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27029,6 +36057,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27040,6 +36072,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27051,6 +36087,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27062,6 +36102,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27073,6 +36117,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27084,6 +36132,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -27096,6 +36148,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27107,6 +36163,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27122,6 +36182,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -27134,6 +36198,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27148,6 +36216,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27159,6 +36231,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27170,6 +36246,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27181,6 +36261,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27192,6 +36276,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27203,6 +36291,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27214,6 +36306,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27225,6 +36321,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27236,6 +36336,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27247,6 +36351,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27258,6 +36366,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27269,6 +36381,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27285,6 +36401,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -27297,6 +36417,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27308,6 +36432,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27319,6 +36447,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27330,6 +36462,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27341,6 +36477,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27352,6 +36492,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27363,6 +36507,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27374,6 +36522,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27385,6 +36537,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27396,6 +36552,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27407,6 +36567,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27418,6 +36582,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27429,6 +36597,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27440,6 +36612,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27451,6 +36627,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27462,6 +36642,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27473,6 +36657,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27484,6 +36672,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27495,6 +36687,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27506,6 +36702,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27517,6 +36717,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27528,6 +36732,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27540,6 +36748,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27552,6 +36764,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27563,6 +36779,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27574,6 +36794,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27585,6 +36809,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27596,6 +36824,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27607,6 +36839,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27618,6 +36854,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27629,6 +36869,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27640,6 +36884,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27651,6 +36899,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27662,6 +36914,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27673,6 +36929,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27684,6 +36944,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27695,6 +36959,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27706,6 +36974,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27717,6 +36989,10 @@ "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27728,6 +37004,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27739,6 +37019,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27750,6 +37034,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27761,6 +37049,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27772,6 +37064,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27784,6 +37080,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27795,6 +37095,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27806,6 +37110,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27817,6 +37125,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27828,6 +37140,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27840,6 +37156,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27851,6 +37171,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27862,6 +37186,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27873,6 +37201,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27884,6 +37216,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27895,6 +37231,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27906,6 +37246,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27917,6 +37261,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27928,6 +37276,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27939,6 +37291,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27950,6 +37306,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27961,6 +37321,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27972,6 +37336,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27983,6 +37351,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27994,6 +37366,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -28005,6 +37381,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -28016,6 +37396,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -28027,6 +37411,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.dawn.json b/testing/buildbot/chromium.dawn.json index d571fff..851e53f 100644 --- a/testing/buildbot/chromium.dawn.json +++ b/testing/buildbot/chromium.dawn.json
@@ -10,6 +10,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -28,6 +32,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -45,6 +53,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -66,6 +78,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -84,6 +100,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -101,6 +121,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -122,6 +146,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -144,6 +172,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -168,6 +200,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -187,6 +223,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -204,6 +244,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -226,6 +270,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -244,6 +292,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -260,6 +312,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -281,6 +337,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -304,6 +364,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -328,6 +392,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -346,6 +414,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -362,6 +434,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -383,6 +459,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -401,6 +481,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -417,6 +501,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -438,6 +526,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -460,6 +552,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -484,6 +580,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -502,6 +602,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -518,6 +622,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -539,6 +647,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -557,6 +669,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -573,6 +689,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -594,6 +714,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -616,6 +740,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 251c64c..24855f1 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -9,54 +9,90 @@ "Chromium Mac 10.13": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -64,12 +100,20 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -80,6 +124,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -91,6 +139,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -98,6 +150,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -107,48 +163,80 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -160,6 +248,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -167,114 +259,190 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -282,210 +450,350 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -620,6 +928,10 @@ "Linux ARM": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -632,6 +944,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -647,6 +963,10 @@ "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": [ @@ -666,6 +986,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -677,6 +1001,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -698,6 +1026,10 @@ "args": [ "--enable-features=VizDisplayCompositor,UseSkiaRenderer" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -714,6 +1046,10 @@ "args": [ "--enable-features=VizDisplayCompositor,UseSkiaRenderer" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -734,6 +1070,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -745,6 +1085,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -763,6 +1107,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -774,6 +1122,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -792,6 +1144,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -803,6 +1159,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -821,6 +1181,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -832,6 +1196,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -851,6 +1219,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -862,6 +1234,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -880,6 +1256,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -891,6 +1271,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -909,6 +1293,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -920,6 +1308,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1363,6 +1755,10 @@ "Mojo ChromiumOS": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -1372,6 +1768,10 @@ "args": [ "--enable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1383,6 +1783,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1394,6 +1798,10 @@ "args": [ "--enable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_components_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -1401,6 +1809,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -1410,6 +1822,10 @@ "args": [ "--enable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1421,6 +1837,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1432,6 +1852,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true @@ -1442,6 +1866,10 @@ "args": [ "--enable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_extensions_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -1452,6 +1880,10 @@ "args": [ "--enable-features=NetworkService" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_interactive_ui_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1463,6 +1895,10 @@ "args": [ "--enable-features=VizDisplayCompositor" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_interactive_ui_tests", "swarming": { "can_use_on_swarming_builders": true @@ -1470,12 +1906,20 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wayland_client_perftests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -1489,6 +1933,10 @@ "args": [ "--enable-features=NetworkService,NetworkServiceInProcess" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_in_process_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1505,6 +1953,10 @@ "args": [ "--enable-features=ForceWebRequestProxyForTest" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_web_request_proxy_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1521,6 +1973,10 @@ "args": [ "--enable-features=NetworkService,NetworkServiceInProcess" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_in_process_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1541,6 +1997,10 @@ "args": [ "--enable-features=NetworkService,NetworkServiceInProcess" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_in_process_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1552,6 +2012,10 @@ "args": [ "--enable-features=ForceWebRequestProxyForTest" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_web_request_proxy_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1563,6 +2027,10 @@ "args": [ "--enable-features=NetworkService,NetworkServiceInProcess" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "network_service_in_process_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1571,6 +2039,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -1584,6 +2056,10 @@ "args": [ "--site-per-process" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "site_per_process_components_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1602,6 +2078,10 @@ "args": [ "--site-per-process" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "site_per_process_components_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -1622,6 +2102,10 @@ "--site-per-process", "--test-launcher-filter-file=../../testing/buildbot/filters/site_isolation_android.content_browsertests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "site_per_process_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1641,6 +2125,10 @@ "args": [ "--site-per-process" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "site_per_process_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -1659,6 +2147,10 @@ "args": [ "--site-per-process" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "site_per_process_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1682,6 +2174,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1729,6 +2225,10 @@ "args": [ "--enable-blink-features=LayoutNG" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests_ng", "swarming": { "can_use_on_swarming_builders": true, @@ -1802,60 +2302,100 @@ "Win 10 Fast Ring": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": false @@ -1863,18 +2403,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -1885,6 +2437,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": false @@ -1892,6 +2448,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -1901,72 +2461,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -1977,6 +2585,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": false @@ -1984,414 +2596,690 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -2405,12 +3293,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -2425,12 +3321,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -2444,12 +3348,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -2473,12 +3385,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -2493,12 +3413,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -2946,6 +3874,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2962,6 +3894,10 @@ "test": "chrome_all_tast_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2983,6 +3919,10 @@ "--ozone-platform=headless", "--test-launcher-filter-file=../../testing/buildbot/filters/chromeos.services_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3069,6 +4009,10 @@ "--ozone-platform=headless" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3085,6 +4029,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3101,6 +4049,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3121,6 +4073,10 @@ "--gtest_filter=-*UsingRealWebcam_CaptureMjpeg*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3137,6 +4093,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3153,6 +4113,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3170,6 +4134,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3186,6 +4154,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3202,6 +4174,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3218,6 +4194,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3234,6 +4214,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3250,6 +4234,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3266,6 +4254,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3285,6 +4277,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/chromeos.media_unittests.filter" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3301,6 +4297,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3317,6 +4317,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3336,6 +4340,10 @@ "--vpython-dir=../../vpython_dir_linux_amd64" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3363,6 +4371,10 @@ "--ozone-platform=headless" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3379,6 +4391,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3395,6 +4411,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3411,6 +4431,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3427,6 +4451,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3443,6 +4471,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3459,6 +4491,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3481,42 +4517,70 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_runner_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -3526,36 +4590,60 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cr_fuchsia_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -3565,30 +4653,50 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.gfx_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "http_service_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -3598,30 +4706,50 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -3631,24 +4759,40 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "web_engine_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "web_engine_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -3662,6 +4806,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3673,6 +4821,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3684,6 +4836,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3695,6 +4851,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3706,6 +4866,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3717,6 +4881,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3728,6 +4896,10 @@ "test": "cast_runner_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3742,6 +4914,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3753,6 +4929,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3764,6 +4944,10 @@ "test": "cr_fuchsia_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3775,6 +4959,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3786,6 +4974,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3797,6 +4989,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3811,6 +5007,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.gfx_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3822,6 +5022,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3833,6 +5037,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3844,6 +5052,10 @@ "test": "http_service_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3855,6 +5067,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3869,6 +5085,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3880,6 +5100,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3891,6 +5115,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3902,6 +5130,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3913,6 +5145,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3927,6 +5163,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3938,6 +5178,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3949,6 +5193,10 @@ "test": "web_engine_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3960,6 +5208,10 @@ "test": "web_engine_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3978,6 +5230,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3989,6 +5245,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4000,6 +5260,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4011,6 +5275,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4022,6 +5290,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4033,6 +5305,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4044,6 +5320,10 @@ "test": "cast_runner_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4058,6 +5338,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4069,6 +5353,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4080,6 +5368,10 @@ "test": "cr_fuchsia_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4091,6 +5383,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4102,6 +5398,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4113,6 +5413,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4127,6 +5431,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.gfx_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4138,6 +5446,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4149,6 +5461,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4160,6 +5476,10 @@ "test": "http_service_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4171,6 +5491,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4185,6 +5509,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4199,6 +5527,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.net_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4210,6 +5542,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4221,6 +5557,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4232,6 +5572,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4243,6 +5587,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4257,6 +5605,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4268,6 +5620,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4279,6 +5635,10 @@ "test": "web_engine_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4290,6 +5650,10 @@ "test": "web_engine_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4330,6 +5694,10 @@ "ios-simulator-code-coverage": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -4352,6 +5720,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4363,6 +5735,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4374,6 +5750,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4385,6 +5765,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4396,6 +5780,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4407,6 +5795,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4419,6 +5811,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4430,6 +5826,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4441,6 +5841,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4455,6 +5859,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4466,6 +5874,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4477,6 +5889,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4488,6 +5904,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4499,6 +5919,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4515,6 +5939,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -4527,6 +5955,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4538,6 +5970,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4549,6 +5985,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4560,6 +6000,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4571,6 +6015,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4582,6 +6030,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4593,6 +6045,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4604,6 +6060,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4615,6 +6075,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4626,6 +6090,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4637,6 +6105,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4648,6 +6120,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4659,6 +6135,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4670,6 +6150,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4681,6 +6165,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4692,6 +6180,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4703,6 +6195,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4714,6 +6210,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4725,6 +6225,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4736,6 +6240,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4747,6 +6255,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4758,6 +6270,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4769,6 +6285,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4780,6 +6300,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4791,6 +6315,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4802,6 +6330,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4813,6 +6345,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4857,6 +6393,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4871,6 +6411,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4885,6 +6429,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4899,6 +6447,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4913,6 +6465,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4927,6 +6483,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4942,6 +6502,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4956,6 +6520,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4970,6 +6538,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4985,6 +6557,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4999,6 +6575,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5013,6 +6593,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5027,6 +6611,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5041,6 +6629,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5058,6 +6650,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5073,6 +6669,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5087,6 +6687,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5101,6 +6705,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5115,6 +6723,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5129,6 +6741,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5143,6 +6759,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5157,6 +6777,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5171,6 +6795,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5185,6 +6813,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5199,6 +6831,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5213,6 +6849,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5227,6 +6867,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5241,6 +6885,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5255,6 +6903,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5269,6 +6921,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5283,6 +6939,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5297,6 +6957,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5311,6 +6975,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5325,6 +6993,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5339,6 +7011,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5353,6 +7029,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5367,6 +7047,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5381,6 +7065,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5395,6 +7083,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5409,6 +7101,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5423,6 +7119,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5437,6 +7137,10 @@ "args": [ "--enable-blink-features=HeapConcurrentMarking" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5482,6 +7186,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5496,6 +7204,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5510,6 +7222,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5524,6 +7240,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5538,6 +7258,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5552,6 +7276,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5567,6 +7295,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5581,6 +7313,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5595,6 +7331,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5610,6 +7350,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5624,6 +7368,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5638,6 +7386,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5652,6 +7404,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5666,6 +7422,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5683,6 +7443,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5698,6 +7462,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5712,6 +7480,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5726,6 +7498,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5740,6 +7516,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5754,6 +7534,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5768,6 +7552,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5782,6 +7570,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5796,6 +7588,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5810,6 +7606,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5824,6 +7624,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5838,6 +7642,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5852,6 +7660,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5866,6 +7678,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5880,6 +7696,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5894,6 +7714,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5908,6 +7732,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5922,6 +7750,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5936,6 +7768,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5950,6 +7786,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5964,6 +7804,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5978,6 +7822,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5992,6 +7840,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6006,6 +7858,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6020,6 +7876,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6034,6 +7894,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6048,6 +7912,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6062,6 +7930,10 @@ "args": [ "--enable-blink-features=HeapUnifiedGarbageCollection" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6104,6 +7976,10 @@ "linux-blink-heap-verification": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6115,6 +7991,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6126,6 +8006,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6137,6 +8021,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6148,6 +8036,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6159,6 +8051,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6171,6 +8067,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6182,6 +8082,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6193,6 +8097,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6207,6 +8115,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6218,6 +8130,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6229,6 +8145,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6240,6 +8160,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6251,6 +8175,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6267,6 +8195,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -6279,6 +8211,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6290,6 +8226,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6301,6 +8241,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6312,6 +8256,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6323,6 +8271,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6334,6 +8286,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6345,6 +8301,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6356,6 +8316,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6367,6 +8331,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6378,6 +8346,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6389,6 +8361,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6400,6 +8376,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6411,6 +8391,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6422,6 +8406,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6433,6 +8421,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6444,6 +8436,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6455,6 +8451,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6466,6 +8466,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6477,6 +8481,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6488,6 +8496,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6499,6 +8511,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6510,6 +8526,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6521,6 +8541,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6532,6 +8556,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6543,6 +8571,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6554,6 +8586,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6565,6 +8601,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6636,6 +8676,10 @@ "gtest_tests": [ { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6648,6 +8692,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6660,6 +8708,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6672,6 +8724,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6684,6 +8740,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6696,6 +8756,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6708,6 +8772,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6720,6 +8788,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6732,6 +8804,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6744,6 +8820,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6756,6 +8836,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6768,6 +8852,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6781,6 +8869,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6793,6 +8885,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6805,6 +8901,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6821,6 +8921,10 @@ "--enable-features=VizDisplayCompositor" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6839,6 +8943,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6852,6 +8960,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6867,6 +8979,10 @@ "--gtest_filter=-*UsingRealWebcam*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6879,6 +8995,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6891,6 +9011,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6903,6 +9027,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6915,6 +9043,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6927,6 +9059,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6939,6 +9075,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6951,6 +9091,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6963,6 +9107,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6975,6 +9123,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6987,6 +9139,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7004,6 +9160,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -7020,6 +9180,10 @@ "--enable-features=VizDisplayCompositor" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -7034,6 +9198,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7049,6 +9217,10 @@ "--enable-features=VizDisplayCompositor" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -7062,6 +9234,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7074,6 +9250,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7086,6 +9266,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7098,6 +9282,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7110,6 +9298,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7122,6 +9314,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7134,6 +9330,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7146,6 +9346,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7158,6 +9362,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7170,6 +9378,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7182,6 +9394,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7194,6 +9410,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7206,6 +9426,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7218,6 +9442,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7230,6 +9458,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7242,6 +9474,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7255,6 +9491,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7267,6 +9507,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7279,6 +9523,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7291,6 +9539,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7303,6 +9555,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7315,6 +9571,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7327,6 +9587,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7339,6 +9603,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7351,6 +9619,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7363,6 +9635,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7375,6 +9651,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7387,6 +9667,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7399,6 +9683,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7411,6 +9699,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7423,6 +9715,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7435,6 +9731,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7447,6 +9747,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7462,6 +9766,10 @@ "--ozone-platform=headless" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7474,6 +9782,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7486,6 +9798,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7498,6 +9814,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7510,6 +9830,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7522,6 +9846,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7534,6 +9862,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7546,6 +9878,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7558,6 +9894,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7570,6 +9910,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7582,6 +9926,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7594,6 +9942,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7606,6 +9958,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7618,6 +9974,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7630,6 +9990,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7642,6 +10006,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7654,6 +10022,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7666,6 +10038,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7678,6 +10054,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7690,6 +10070,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7702,6 +10086,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7714,6 +10102,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7726,6 +10118,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7739,6 +10135,10 @@ { "experiment_percentage": 100, "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7751,6 +10151,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7763,6 +10167,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7775,6 +10183,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7787,6 +10199,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7799,6 +10215,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7818,6 +10238,10 @@ "gtest_tests": [ { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7830,6 +10254,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7842,6 +10270,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7854,6 +10286,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7866,6 +10302,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7878,6 +10318,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7890,6 +10334,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7902,6 +10350,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7914,6 +10366,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7926,6 +10382,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7938,6 +10398,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7950,6 +10414,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -7963,6 +10431,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7975,6 +10447,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7987,6 +10463,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8003,6 +10483,10 @@ "--enable-features=VizDisplayCompositor" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -8021,6 +10505,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -8034,6 +10522,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8049,6 +10541,10 @@ "--gtest_filter=-*UsingRealWebcam*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8061,6 +10557,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8073,6 +10573,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8085,6 +10589,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8097,6 +10605,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8109,6 +10621,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8121,6 +10637,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8133,6 +10653,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8145,6 +10669,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8157,6 +10685,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8169,6 +10701,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8186,6 +10722,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -8202,6 +10742,10 @@ "--enable-features=VizDisplayCompositor" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -8216,6 +10760,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8231,6 +10779,10 @@ "--enable-features=VizDisplayCompositor" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -8244,6 +10796,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8256,6 +10812,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8268,6 +10828,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8280,6 +10844,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8292,6 +10860,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8304,6 +10876,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8316,6 +10892,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8328,6 +10908,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8340,6 +10924,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8352,6 +10940,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8364,6 +10956,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8376,6 +10972,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8388,6 +10988,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8400,6 +11004,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8412,6 +11020,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8424,6 +11036,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8437,6 +11053,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8449,6 +11069,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8461,6 +11085,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8473,6 +11101,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8485,6 +11117,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8497,6 +11133,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8509,6 +11149,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8521,6 +11165,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8533,6 +11181,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8545,6 +11197,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8557,6 +11213,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8569,6 +11229,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8581,6 +11245,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8593,6 +11261,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8605,6 +11277,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8617,6 +11293,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8629,6 +11309,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8644,6 +11328,10 @@ "--ozone-platform=headless" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8656,6 +11344,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8668,6 +11360,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8680,6 +11376,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8692,6 +11392,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8704,6 +11408,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8716,6 +11424,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8728,6 +11440,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8740,6 +11456,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8752,6 +11472,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8764,6 +11488,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8776,6 +11504,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8788,6 +11520,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8800,6 +11536,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8812,6 +11552,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8824,6 +11568,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8836,6 +11584,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8848,6 +11600,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8860,6 +11616,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8872,6 +11632,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8884,6 +11648,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8896,6 +11664,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8908,6 +11680,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8921,6 +11697,10 @@ { "experiment_percentage": 100, "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8933,6 +11713,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8945,6 +11729,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8957,6 +11745,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8969,6 +11761,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8981,6 +11777,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9008,6 +11808,10 @@ "linux-chromium-tests-staging-tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9019,6 +11823,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9030,6 +11838,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9041,6 +11853,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9052,6 +11868,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9063,6 +11883,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9074,6 +11898,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9085,6 +11913,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9096,6 +11928,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9107,6 +11943,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9119,6 +11959,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9130,6 +11974,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9141,6 +11989,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9157,6 +12009,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9169,6 +12025,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9183,6 +12043,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9194,6 +12058,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9205,6 +12073,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9216,6 +12088,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9227,6 +12103,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9238,6 +12118,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9249,6 +12133,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9260,6 +12148,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9271,6 +12163,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9287,6 +12183,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -9303,6 +12203,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -9315,6 +12219,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9326,6 +12234,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9337,6 +12249,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9348,6 +12264,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9359,6 +12279,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9370,6 +12294,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9381,6 +12309,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9392,6 +12324,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9403,6 +12339,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9414,6 +12354,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9425,6 +12369,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9436,6 +12384,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9447,6 +12399,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9458,6 +12414,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9469,6 +12429,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9480,6 +12444,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9491,6 +12459,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9502,6 +12474,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9513,6 +12489,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9525,6 +12505,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9536,6 +12520,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9547,6 +12535,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9558,6 +12550,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9569,6 +12565,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9580,6 +12580,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9591,6 +12595,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9602,6 +12610,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9613,6 +12625,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9624,6 +12640,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9635,6 +12655,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9646,6 +12670,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9657,6 +12685,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9668,6 +12700,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9679,6 +12715,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9690,6 +12730,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9701,6 +12745,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9712,6 +12760,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9723,6 +12775,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9734,6 +12790,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9745,6 +12805,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9756,6 +12820,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9767,6 +12835,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9778,6 +12850,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9789,6 +12865,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9800,6 +12880,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9811,6 +12895,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9822,6 +12910,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9833,6 +12925,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9844,6 +12940,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9855,6 +12955,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9866,6 +12970,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9877,6 +12985,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9888,6 +13000,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9899,6 +13015,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9910,6 +13030,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9921,6 +13045,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9932,6 +13060,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9943,6 +13075,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9954,6 +13090,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9965,6 +13105,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9976,6 +13120,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10227,6 +13375,10 @@ "gtest_tests": [ { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10239,6 +13391,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10251,6 +13407,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10263,6 +13423,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10275,6 +13439,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10287,6 +13455,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10299,6 +13471,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10311,6 +13487,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10323,6 +13503,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10335,6 +13519,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10348,6 +13536,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10360,6 +13552,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10372,6 +13568,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10389,6 +13589,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10402,6 +13606,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10417,6 +13625,10 @@ "--gtest_filter=-*UsingRealWebcam*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10429,6 +13641,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10441,6 +13657,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10453,6 +13673,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10465,6 +13689,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10477,6 +13705,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10489,6 +13721,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10501,6 +13737,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10513,6 +13753,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10530,6 +13774,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -10543,6 +13791,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10555,6 +13807,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10567,6 +13823,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10579,6 +13839,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10591,6 +13855,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10603,6 +13871,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10615,6 +13887,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10627,6 +13903,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10639,6 +13919,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10651,6 +13935,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10663,6 +13951,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10675,6 +13967,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10687,6 +13983,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10699,6 +13999,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10711,6 +14015,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10723,6 +14031,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10735,6 +14047,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10747,6 +14063,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10759,6 +14079,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10772,6 +14096,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10784,6 +14112,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10796,6 +14128,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10808,6 +14144,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10820,6 +14160,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10832,6 +14176,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10844,6 +14192,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10856,6 +14208,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10868,6 +14224,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10880,6 +14240,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10892,6 +14256,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10904,6 +14272,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10916,6 +14288,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10928,6 +14304,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10940,6 +14320,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10952,6 +14336,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10964,6 +14352,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10976,6 +14368,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10988,6 +14384,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11000,6 +14400,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11012,6 +14416,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11024,6 +14432,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11036,6 +14448,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11048,6 +14464,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11060,6 +14480,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11072,6 +14496,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11084,6 +14512,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11096,6 +14528,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11108,6 +14544,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11120,6 +14560,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11132,6 +14576,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11144,6 +14592,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11156,6 +14608,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11168,6 +14624,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11180,6 +14640,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11192,6 +14656,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11204,6 +14672,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11216,6 +14688,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11228,6 +14704,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11240,6 +14720,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11252,6 +14736,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13999,6 +17487,10 @@ "linux-tcmalloc-rel": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14010,6 +17502,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14021,6 +17517,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14032,6 +17532,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14043,6 +17547,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14054,6 +17562,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14065,6 +17577,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14076,6 +17592,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14087,6 +17607,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14098,6 +17622,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -14110,6 +17638,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14121,6 +17653,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14132,6 +17668,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14148,6 +17688,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -14160,6 +17704,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14174,6 +17722,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14185,6 +17737,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14196,6 +17752,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14207,6 +17767,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14218,6 +17782,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14229,6 +17797,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14240,6 +17812,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14251,6 +17827,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14262,6 +17842,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14278,6 +17862,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -14294,6 +17882,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -14306,6 +17898,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14317,6 +17913,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14328,6 +17928,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14339,6 +17943,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14350,6 +17958,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14361,6 +17973,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14372,6 +17988,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14383,6 +18003,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14394,6 +18018,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14405,6 +18033,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14416,6 +18048,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14427,6 +18063,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14438,6 +18078,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14449,6 +18093,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14460,6 +18108,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14471,6 +18123,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14482,6 +18138,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14493,6 +18153,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14504,6 +18168,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14516,6 +18184,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14527,6 +18199,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14538,6 +18214,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14549,6 +18229,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14560,6 +18244,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14571,6 +18259,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14582,6 +18274,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14593,6 +18289,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14604,6 +18304,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14615,6 +18319,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14626,6 +18334,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14637,6 +18349,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14648,6 +18364,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14659,6 +18379,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14670,6 +18394,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14681,6 +18409,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14692,6 +18424,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14703,6 +18439,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14714,6 +18454,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14725,6 +18469,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14736,6 +18484,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14747,6 +18499,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14758,6 +18514,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14769,6 +18529,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14780,6 +18544,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14791,6 +18559,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14802,6 +18574,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14813,6 +18589,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14824,6 +18604,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14835,6 +18619,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14846,6 +18634,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14857,6 +18649,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14868,6 +18664,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14879,6 +18679,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14890,6 +18694,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14901,6 +18709,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14912,6 +18724,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14923,6 +18739,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14934,6 +18754,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14945,6 +18769,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14956,6 +18784,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14967,6 +18799,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -15250,6 +19086,10 @@ "mac-osxbeta-rel": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15263,6 +19103,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15276,6 +19120,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15289,6 +19137,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15302,6 +19154,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15315,6 +19171,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15328,6 +19188,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15341,6 +19205,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15354,6 +19222,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -15368,6 +19240,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15381,6 +19257,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15398,6 +19278,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15416,6 +19300,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -15430,6 +19318,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15446,6 +19338,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15459,6 +19355,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15472,6 +19372,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15485,6 +19389,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15498,6 +19406,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15511,6 +19423,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15524,6 +19440,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15537,6 +19457,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15555,6 +19479,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -15569,6 +19497,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15582,6 +19514,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15595,6 +19531,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15608,6 +19548,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15621,6 +19565,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15634,6 +19582,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15647,6 +19599,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15660,6 +19616,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15673,6 +19633,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15686,6 +19650,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15699,6 +19667,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15712,6 +19684,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15725,6 +19701,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15738,6 +19718,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15751,6 +19735,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15764,6 +19752,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15777,6 +19769,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15790,6 +19786,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15803,6 +19803,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15817,6 +19821,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15830,6 +19838,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15843,6 +19855,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15856,6 +19872,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15869,6 +19889,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15882,6 +19906,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15895,6 +19923,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15908,6 +19940,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15921,6 +19957,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15934,6 +19974,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15947,6 +19991,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15960,6 +20008,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15973,6 +20025,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15986,6 +20042,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15999,6 +20059,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16012,6 +20076,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16025,6 +20093,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16038,6 +20110,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16051,6 +20127,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16064,6 +20144,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16077,6 +20161,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16090,6 +20178,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16103,6 +20195,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16116,6 +20212,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16129,6 +20229,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16142,6 +20246,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16155,6 +20263,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16168,6 +20280,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16181,6 +20297,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16194,6 +20314,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16207,6 +20331,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16220,6 +20348,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16233,6 +20365,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16246,6 +20382,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16259,6 +20399,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.goma.json b/testing/buildbot/chromium.goma.json index 337d7a1..164be878 100644 --- a/testing/buildbot/chromium.goma.json +++ b/testing/buildbot/chromium.goma.json
@@ -13,6 +13,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24,6 +28,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -42,6 +50,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -53,6 +65,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -71,6 +87,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -82,6 +102,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -100,6 +124,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -111,6 +139,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -129,6 +161,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -140,6 +176,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -158,12 +198,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -177,12 +225,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -196,12 +252,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -215,12 +279,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -234,12 +306,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -253,12 +333,20 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true },
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index 3afd092..ad8fb1d1 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -8,6 +8,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -28,6 +32,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -45,6 +53,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -63,6 +75,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -80,6 +96,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -96,6 +116,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -300,6 +324,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -320,6 +348,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -337,6 +369,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -355,6 +391,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -372,6 +412,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -388,6 +432,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -592,6 +640,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -610,6 +662,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -627,6 +683,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -642,6 +702,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -657,6 +721,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -669,6 +737,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -768,6 +840,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -788,6 +864,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -807,6 +887,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -824,6 +908,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -841,6 +929,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -855,6 +947,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -962,6 +1058,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -982,6 +1082,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1005,6 +1109,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1023,6 +1131,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1040,6 +1152,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1057,6 +1173,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1075,6 +1195,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1092,6 +1216,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -1111,6 +1239,10 @@ "--use-angle=d3d11", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d11_test", "swarming": { "can_use_on_swarming_builders": true, @@ -1129,6 +1261,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -1148,6 +1284,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -1167,6 +1307,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -1186,6 +1330,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -1417,6 +1565,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1435,6 +1587,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1452,6 +1608,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1469,6 +1629,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1487,6 +1651,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1504,6 +1672,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -1523,6 +1695,10 @@ "--use-angle=d3d11", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d11_test", "swarming": { "can_use_on_swarming_builders": true, @@ -1541,6 +1717,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -1560,6 +1740,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -1579,6 +1763,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -1598,6 +1786,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -1617,6 +1809,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -1929,6 +2125,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1966,6 +2166,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2035,6 +2239,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2072,6 +2280,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2144,6 +2356,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2185,6 +2401,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2226,6 +2446,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2271,6 +2495,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2312,6 +2540,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2353,6 +2585,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2395,6 +2631,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2432,6 +2672,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2501,6 +2745,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2538,6 +2786,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2610,6 +2862,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2651,6 +2907,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2692,6 +2952,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2737,6 +3001,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2778,6 +3046,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2819,6 +3091,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -2861,6 +3137,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2898,6 +3178,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2934,6 +3218,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -2969,6 +3257,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3004,6 +3296,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3351,6 +3647,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -3387,6 +3687,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3422,6 +3726,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3457,6 +3765,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -3777,6 +4089,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -3813,6 +4129,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -4213,6 +4533,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -4249,6 +4573,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -4284,6 +4612,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -4319,6 +4651,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -4639,6 +4975,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -4676,6 +5016,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -4712,6 +5056,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -4747,6 +5095,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -4782,6 +5134,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -5129,6 +5485,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -5165,6 +5525,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -5200,6 +5564,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -5235,6 +5603,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -5617,6 +5989,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_gles_tests", "should_retry_with_patch": false, "swarming": { @@ -5657,6 +6033,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gles_tests", "should_retry_with_patch": false, "swarming": { @@ -5697,6 +6077,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_gles_tests", "should_retry_with_patch": false, "swarming": { @@ -5738,6 +6122,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5760,6 +6148,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5782,6 +6174,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5803,6 +6199,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5826,6 +6226,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5849,6 +6253,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5871,6 +6279,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5907,6 +6319,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -5924,6 +6340,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -5942,6 +6362,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5959,6 +6383,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5975,6 +6403,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5988,6 +6420,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6305,6 +6741,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -6323,6 +6763,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6340,6 +6784,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6356,6 +6804,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6369,6 +6821,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6760,6 +7216,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -6780,6 +7240,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -6797,6 +7261,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -6818,6 +7286,10 @@ "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6836,6 +7308,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6853,6 +7329,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6869,6 +7349,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6882,6 +7366,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7326,6 +7814,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7343,6 +7835,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7361,6 +7857,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7378,6 +7878,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7394,6 +7898,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7407,6 +7915,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7429,6 +7941,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7449,6 +7965,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7472,6 +7992,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7490,6 +8014,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7512,6 +8040,10 @@ "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -7531,6 +8063,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7548,6 +8084,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7562,6 +8102,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7918,6 +8462,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7938,6 +8486,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7955,6 +8507,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -7976,6 +8532,10 @@ "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -8005,6 +8565,10 @@ "--disable-software-compositing-fallback", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "vulkan_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -8023,6 +8587,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8040,6 +8608,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8056,6 +8628,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8069,6 +8645,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8487,6 +9067,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -8507,6 +9091,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -8524,6 +9112,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -8545,6 +9137,10 @@ "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -8563,6 +9159,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8580,6 +9180,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8596,6 +9200,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -8609,6 +9217,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9052,6 +9664,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -9072,6 +9688,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -9089,6 +9709,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -9110,6 +9734,10 @@ "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9128,6 +9756,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9145,6 +9777,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9161,6 +9797,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9174,6 +9814,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9227,6 +9871,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -9251,6 +9899,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -9271,6 +9923,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -9291,6 +9947,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -9311,6 +9971,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -9331,6 +9995,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles31_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -9351,6 +10019,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -9371,6 +10043,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -9395,6 +10071,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -9422,6 +10102,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -9450,6 +10134,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9476,6 +10164,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9500,6 +10192,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9524,6 +10220,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9545,6 +10245,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9570,6 +10274,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9591,6 +10299,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10005,6 +10717,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -10032,6 +10748,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -10060,6 +10780,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10086,6 +10810,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10110,6 +10838,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10134,6 +10866,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10155,6 +10891,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10180,6 +10920,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10201,6 +10945,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10615,6 +11363,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -10642,6 +11394,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -10670,6 +11426,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -10696,6 +11456,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10720,6 +11484,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10744,6 +11512,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10765,6 +11537,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10790,6 +11566,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10811,6 +11591,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11225,6 +12009,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -11243,6 +12031,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -11260,6 +12052,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11275,6 +12071,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11290,6 +12090,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11302,6 +12106,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11318,6 +12126,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11330,6 +12142,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11610,6 +12426,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -11630,6 +12450,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -11651,6 +12475,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -11670,6 +12498,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11687,6 +12519,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11704,6 +12540,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11718,6 +12558,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11736,6 +12580,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12066,6 +12914,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -12087,6 +12939,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -12109,6 +12965,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -12129,6 +12989,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12147,6 +13011,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12165,6 +13033,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12180,6 +13052,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12199,6 +13075,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12541,6 +13421,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -12562,6 +13446,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -12584,6 +13472,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -12604,6 +13496,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12622,6 +13518,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12640,6 +13540,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12655,6 +13559,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12674,6 +13582,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13016,6 +13928,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -13040,6 +13956,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -13065,6 +13985,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -13088,6 +14012,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13109,6 +14037,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13130,6 +14062,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13148,6 +14084,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13170,6 +14110,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13188,6 +14132,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13536,6 +14484,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -13554,6 +14506,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -13573,6 +14529,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -13590,6 +14550,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13605,6 +14569,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13620,6 +14588,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13632,6 +14604,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13648,6 +14624,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13660,6 +14640,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -13966,6 +14950,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -13986,6 +14974,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -14005,6 +14997,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14022,6 +15018,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14039,6 +15039,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14053,6 +15057,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14071,6 +15079,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14085,6 +15097,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14387,6 +15403,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -14407,6 +15427,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -14426,6 +15450,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14443,6 +15471,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14460,6 +15492,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14474,6 +15510,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14492,6 +15532,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14506,6 +15550,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14782,6 +15830,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -14802,6 +15854,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -14823,6 +15879,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -14842,6 +15902,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14859,6 +15923,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14876,6 +15944,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14890,6 +15962,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14908,6 +15984,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -14922,6 +16002,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15252,6 +16336,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -15272,6 +16360,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -15293,6 +16385,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -15312,6 +16408,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15329,6 +16429,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15346,6 +16450,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15360,6 +16468,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15378,6 +16490,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15392,6 +16508,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15722,6 +16842,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -15743,6 +16867,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -15764,6 +16892,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -15789,6 +16921,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -15808,6 +16944,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -15827,6 +16967,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -15850,6 +16994,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -15870,6 +17018,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -15891,6 +17043,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -15910,6 +17066,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15927,6 +17087,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15944,6 +17108,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15958,6 +17126,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16289,6 +17461,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -16307,6 +17483,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -16336,6 +17516,10 @@ "--disable-software-compositing-fallback", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "vulkan_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -16353,6 +17537,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16366,6 +17554,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16541,6 +17733,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -16559,6 +17755,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -16588,6 +17788,10 @@ "--disable-software-compositing-fallback", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "vulkan_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -16605,6 +17809,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16618,6 +17826,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16832,6 +18044,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -16849,6 +18065,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16861,6 +18081,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16877,6 +18101,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16889,6 +18117,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -16987,6 +18219,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -17006,6 +18242,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17020,6 +18260,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17038,6 +18282,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17052,6 +18300,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17158,6 +18410,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -17177,6 +18433,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17191,6 +18451,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17209,6 +18473,10 @@ "--gtest_filter=*Detection*", "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17223,6 +18491,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17301,6 +18573,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -17319,6 +18595,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17335,6 +18615,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -17353,6 +18637,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -17370,6 +18658,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17387,6 +18679,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -17406,6 +18702,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -17420,6 +18720,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17433,6 +18737,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17451,6 +18759,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -17465,6 +18777,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -17717,6 +19033,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -17744,6 +19064,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17769,6 +19093,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -17796,6 +19124,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -17822,6 +19154,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17848,6 +19184,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -17876,6 +19216,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -17899,6 +19243,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17921,6 +19269,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17948,6 +19300,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -17976,6 +19332,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -17999,6 +19359,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -18416,6 +19780,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -18434,6 +19802,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18451,6 +19823,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -18468,6 +19844,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -18486,6 +19866,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18503,6 +19887,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -18520,6 +19908,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18536,6 +19928,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18553,6 +19949,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -18572,6 +19972,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -18586,6 +19990,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18599,6 +20007,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -18617,6 +20029,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -18636,6 +20052,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -18655,6 +20075,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -18669,6 +20093,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -19146,6 +20574,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -19165,6 +20597,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19183,6 +20619,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -19201,6 +20641,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -19222,6 +20666,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -19241,6 +20689,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19259,6 +20711,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -19277,6 +20733,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19294,6 +20754,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19312,6 +20776,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -19332,6 +20800,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -19347,6 +20819,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19361,6 +20837,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19380,6 +20860,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -19400,6 +20884,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -19415,6 +20903,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -19960,6 +21452,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -19979,6 +21475,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19997,6 +21497,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -20015,6 +21519,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -20036,6 +21544,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -20055,6 +21567,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20073,6 +21589,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -20091,6 +21611,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20108,6 +21632,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20126,6 +21654,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -20146,6 +21678,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -20161,6 +21697,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20175,6 +21715,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20194,6 +21738,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -20214,6 +21762,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -20234,6 +21786,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -20249,6 +21805,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -20684,6 +22244,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -20702,6 +22266,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20719,6 +22287,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -20736,6 +22308,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -20756,6 +22332,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -20774,6 +22354,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20791,6 +22375,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -20808,6 +22396,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20824,6 +22416,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20841,6 +22437,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -20860,6 +22460,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -20874,6 +22478,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20887,6 +22495,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -20905,6 +22517,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -20924,6 +22540,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -20938,6 +22558,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -21435,6 +23059,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -21454,6 +23082,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21472,6 +23104,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -21490,6 +23126,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -21511,6 +23151,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -21530,6 +23174,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21548,6 +23196,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -21566,6 +23218,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21583,6 +23239,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21601,6 +23261,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -21621,6 +23285,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -21636,6 +23304,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21650,6 +23322,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -21669,6 +23345,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -21689,6 +23369,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -21709,6 +23393,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -21724,6 +23412,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -22213,6 +23905,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -22240,6 +23936,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22266,6 +23966,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -22292,6 +23996,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -22321,6 +24029,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -22348,6 +24060,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22374,6 +24090,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -22400,6 +24120,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22425,6 +24149,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22451,6 +24179,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -22479,6 +24211,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -22502,6 +24238,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22524,6 +24264,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -22551,6 +24295,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -22579,6 +24327,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -22607,6 +24359,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -22630,6 +24386,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -23337,6 +25097,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -23361,6 +25125,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -23390,6 +25158,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -23419,6 +25191,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -23448,6 +25224,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -23477,6 +25257,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -23506,6 +25290,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -23535,6 +25323,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles31_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -23564,6 +25356,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles31_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -23593,6 +25389,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -23622,6 +25422,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -23651,6 +25455,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -23684,6 +25492,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -23704,6 +25516,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -23722,6 +25538,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -23825,6 +25645,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -23844,6 +25668,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23862,6 +25690,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -23880,6 +25712,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -23899,6 +25735,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23917,6 +25757,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -23935,6 +25779,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23952,6 +25800,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -23970,6 +25822,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -23990,6 +25846,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -24005,6 +25865,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24019,6 +25883,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24038,6 +25906,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -24058,6 +25930,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -24078,6 +25954,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -24459,6 +26339,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -24478,6 +26362,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24496,6 +26384,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -24514,6 +26406,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -24535,6 +26431,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -24554,6 +26454,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24572,6 +26476,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -24590,6 +26498,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24607,6 +26519,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24625,6 +26541,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -24645,6 +26565,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -24660,6 +26584,10 @@ "test": "gles2_conform_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24674,6 +26602,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -24693,6 +26625,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -24713,6 +26649,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -24733,6 +26673,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -25142,6 +27086,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -25170,6 +27118,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25197,6 +27149,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -25224,6 +27180,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -25254,6 +27214,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -25282,6 +27246,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25309,6 +27277,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -25336,6 +27308,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25362,6 +27338,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25389,6 +27369,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -25418,6 +27402,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -25442,6 +27430,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25465,6 +27457,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -25493,6 +27489,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -25522,6 +27522,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -25551,6 +27555,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -26130,6 +28138,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -26151,6 +28163,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -26176,6 +28192,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -26204,6 +28224,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26231,6 +28255,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -26258,6 +28286,10 @@ "args": [ "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -26288,6 +28320,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -26316,6 +28352,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26343,6 +28383,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -26370,6 +28414,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26396,6 +28444,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26423,6 +28475,10 @@ "--use-gpu-in-tests", "--use-angle=d3d9" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_d3d9_test", "swarming": { "can_use_on_swarming_builders": true, @@ -26452,6 +28508,10 @@ "--use-angle=gl", "--disable-gpu-sandbox" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gles2_conform_gl_test", "swarming": { "can_use_on_swarming_builders": true, @@ -26476,6 +28536,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26499,6 +28563,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26527,6 +28595,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -26556,6 +28628,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d9_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -26585,6 +28661,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_gl_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -27164,6 +29244,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -27194,6 +29278,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -27224,6 +29312,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_egl_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -27254,6 +29346,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -27284,6 +29380,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -27314,6 +29414,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles2_vulkan_tests", "should_retry_with_patch": false, "swarming": { @@ -27344,6 +29448,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles31_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -27374,6 +29482,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles31_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -27404,6 +29516,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-d3d11" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_d3d11_tests", "should_retry_with_patch": false, "swarming": { @@ -27434,6 +29550,10 @@ "--test-launcher-batch-limit=400", "--deqp-egl-display-type=angle-gl" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_gl_tests", "should_retry_with_patch": false, "swarming": { @@ -27464,6 +29584,10 @@ "--deqp-egl-display-type=angle-vulkan", "--test-launcher-batch-limit=400" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "angle_deqp_gles3_vulkan_tests", "should_retry_with_patch": false, "swarming": {
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json index aadd127..c7325c2 100644 --- a/testing/buildbot/chromium.gpu.json +++ b/testing/buildbot/chromium.gpu.json
@@ -289,6 +289,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -307,6 +311,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -324,6 +332,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -616,6 +628,10 @@ "--test-launcher-retry-limit=0", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -637,6 +653,10 @@ "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -655,6 +675,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -672,6 +696,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -965,6 +993,10 @@ "--no-xvfb" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -987,6 +1019,10 @@ "--no-xvfb" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1006,6 +1042,10 @@ "--use-cmd-decoder=validating" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1024,6 +1064,10 @@ "--no-xvfb" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1325,6 +1369,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1342,6 +1390,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1357,6 +1409,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1637,6 +1693,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -1663,6 +1723,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1687,6 +1751,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1709,6 +1777,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2066,6 +2138,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2085,6 +2161,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2102,6 +2182,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2404,6 +2488,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2425,6 +2513,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2444,6 +2536,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2461,6 +2557,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2763,6 +2863,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -2781,6 +2885,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2798,6 +2906,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -2815,6 +2927,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2833,6 +2949,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -2847,6 +2967,10 @@ "test": "video_decode_accelerator_unittest" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -3139,6 +3263,10 @@ "--use-gpu-in-tests", "--test-launcher-retry-limit=0" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "should_retry_with_patch": false, "swarming": { "can_use_on_swarming_builders": true, @@ -3168,6 +3296,10 @@ "--test-launcher-jobs=1", "--gtest_filter=CastStreamingApiTestWithPixelOutput.EndToEnd*:TabCaptureApiPixelTest.EndToEnd*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "tab_capture_end2end_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -3195,6 +3327,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=validating" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3221,6 +3357,10 @@ "--use-gpu-in-tests", "--use-cmd-decoder=passthrough" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "gl_tests_passthrough", "swarming": { "can_use_on_swarming_builders": true, @@ -3247,6 +3387,10 @@ "args": [ "--use-gpu-in-tests" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3274,6 +3418,10 @@ "--use-test-data-path", "--test_video_data=test-25fps.h264:320:240:250:258:::1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "video_decode_accelerator_d3d11_unittest", "swarming": { "can_use_on_swarming_builders": true, @@ -3297,6 +3445,10 @@ } }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.linux.json b/testing/buildbot/chromium.linux.json index bae00e95..3387438 100644 --- a/testing/buildbot/chromium.linux.json +++ b/testing/buildbot/chromium.linux.json
@@ -8,6 +8,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -19,6 +23,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -30,6 +38,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -41,6 +53,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -52,6 +68,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -63,6 +83,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -75,6 +99,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -86,6 +114,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -97,6 +129,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -111,6 +147,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -122,6 +162,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -133,6 +177,10 @@ "test": "cast_audio_backend_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -144,6 +192,10 @@ "test": "cast_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -155,6 +207,10 @@ "test": "cast_crash_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -172,12 +228,20 @@ "--no-sandbox", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "cast_shell_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -189,6 +253,10 @@ "test": "cast_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -200,6 +268,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -211,6 +283,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -225,6 +301,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/cast-linux.content_browsertests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -241,6 +321,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -253,6 +337,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -264,6 +352,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -275,6 +367,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -286,6 +382,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -297,6 +397,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -308,6 +412,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -319,6 +427,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -330,6 +442,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -341,6 +457,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -352,6 +472,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -363,6 +487,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -374,6 +502,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -385,6 +517,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -396,6 +532,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -407,6 +547,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -418,6 +562,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -429,6 +577,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -440,6 +592,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -451,6 +607,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -462,6 +622,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -473,6 +637,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -484,6 +652,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -495,6 +667,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -506,6 +682,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -517,6 +697,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -528,6 +712,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -539,6 +727,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -550,6 +742,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -569,6 +765,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -580,6 +780,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -591,6 +795,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -602,6 +810,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -613,6 +825,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -624,6 +840,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -636,6 +856,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -647,6 +871,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -658,6 +886,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -672,6 +904,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -683,6 +919,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -694,6 +934,10 @@ "test": "cast_audio_backend_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -705,6 +949,10 @@ "test": "cast_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -716,6 +964,10 @@ "test": "cast_crash_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -727,6 +979,10 @@ "test": "cast_graphics_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -744,12 +1000,20 @@ "--no-sandbox", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, "test": "cast_shell_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -761,6 +1025,10 @@ "test": "cast_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -772,6 +1040,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -783,6 +1055,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -797,6 +1073,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/cast-linux.content_browsertests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -813,6 +1093,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -825,6 +1109,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -836,6 +1124,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -847,6 +1139,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -858,6 +1154,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -869,6 +1169,10 @@ "test": "exo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -880,6 +1184,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -891,6 +1199,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -902,6 +1214,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -913,6 +1229,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -924,6 +1244,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -935,6 +1259,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -946,6 +1274,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -957,6 +1289,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -968,6 +1304,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -979,6 +1319,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -990,6 +1334,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1001,6 +1349,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1012,6 +1364,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1023,6 +1379,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1034,6 +1394,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1045,6 +1409,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1056,6 +1424,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1067,6 +1439,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1078,6 +1454,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1089,6 +1469,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1100,6 +1484,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1111,6 +1499,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1122,6 +1514,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1133,6 +1529,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1156,6 +1556,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1167,6 +1571,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1178,6 +1586,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1189,6 +1601,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1200,6 +1616,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1211,6 +1631,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1222,6 +1646,10 @@ "test": "cast_runner_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1236,6 +1664,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1247,6 +1679,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1258,6 +1694,10 @@ "test": "cr_fuchsia_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1269,6 +1709,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1280,6 +1724,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1291,6 +1739,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1302,6 +1754,10 @@ "test": "fidlgen_js_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1313,6 +1769,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1324,6 +1784,10 @@ "test": "http_service_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1335,6 +1799,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1349,6 +1817,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.mojo_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1363,6 +1835,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.net_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1374,6 +1850,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1385,6 +1865,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1396,6 +1880,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1407,6 +1895,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1421,6 +1913,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/fuchsia.ui_base_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1432,6 +1928,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1443,6 +1943,10 @@ "test": "web_engine_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1454,6 +1958,10 @@ "test": "web_engine_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1568,6 +2076,10 @@ "Linux Tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1579,6 +2091,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1590,6 +2106,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1601,6 +2121,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1612,6 +2136,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1623,6 +2151,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1634,6 +2166,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1645,6 +2181,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1656,6 +2196,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1667,6 +2211,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1679,6 +2227,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1690,6 +2242,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1701,6 +2257,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1717,6 +2277,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1729,6 +2293,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1743,6 +2311,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1754,6 +2326,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1765,6 +2341,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1776,6 +2356,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1787,6 +2371,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1798,6 +2386,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1809,6 +2401,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1820,6 +2416,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1831,6 +2431,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1847,6 +2451,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1863,6 +2471,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1875,6 +2487,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1886,6 +2502,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1897,6 +2517,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1908,6 +2532,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1919,6 +2547,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1930,6 +2562,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1941,6 +2577,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1952,6 +2592,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1963,6 +2607,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1974,6 +2622,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1985,6 +2637,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1996,6 +2652,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2007,6 +2667,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2018,6 +2682,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2029,6 +2697,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2040,6 +2712,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2051,6 +2727,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2062,6 +2742,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2073,6 +2757,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2085,6 +2773,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2096,6 +2788,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2107,6 +2803,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2118,6 +2818,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2129,6 +2833,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2140,6 +2848,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2151,6 +2863,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2162,6 +2878,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2173,6 +2893,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2184,6 +2908,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2195,6 +2923,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2206,6 +2938,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2217,6 +2953,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2228,6 +2968,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2239,6 +2983,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2250,6 +2998,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2261,6 +3013,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2272,6 +3028,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2283,6 +3043,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2294,6 +3058,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2305,6 +3073,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2316,6 +3088,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2327,6 +3103,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2338,6 +3118,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2349,6 +3133,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2360,6 +3148,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2371,6 +3163,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2382,6 +3178,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2393,6 +3193,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2404,6 +3208,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2415,6 +3223,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2426,6 +3238,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2437,6 +3253,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2448,6 +3268,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2459,6 +3283,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2470,6 +3298,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2481,6 +3313,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2492,6 +3328,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2503,6 +3343,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2514,6 +3358,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2525,6 +3373,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2536,6 +3388,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2800,6 +3656,10 @@ "Linux Tests (dbg)(1)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2811,6 +3671,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2822,6 +3686,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2833,6 +3701,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2844,6 +3716,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2855,6 +3731,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2866,6 +3746,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2877,6 +3761,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2888,6 +3776,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2899,6 +3791,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2911,6 +3807,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2922,6 +3822,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2933,6 +3837,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2949,6 +3857,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2961,6 +3873,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2975,6 +3891,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2986,6 +3906,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2997,6 +3921,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3008,6 +3936,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3019,6 +3951,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3030,6 +3966,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3041,6 +3981,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3052,6 +3996,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3063,6 +4011,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3079,6 +4031,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -3095,6 +4051,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -3107,6 +4067,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3118,6 +4082,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3129,6 +4097,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3140,6 +4112,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3151,6 +4127,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3162,6 +4142,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3173,6 +4157,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3184,6 +4172,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3195,6 +4187,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3206,6 +4202,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3217,6 +4217,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3228,6 +4232,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3239,6 +4247,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3250,6 +4262,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3261,6 +4277,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3272,6 +4292,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3283,6 +4307,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3294,6 +4322,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3305,6 +4337,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3317,6 +4353,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3328,6 +4368,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3339,6 +4383,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3350,6 +4398,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3361,6 +4413,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3372,6 +4428,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3383,6 +4443,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3394,6 +4458,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3405,6 +4473,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3416,6 +4488,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3427,6 +4503,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3438,6 +4518,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3449,6 +4533,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3460,6 +4548,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3471,6 +4563,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3482,6 +4578,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3494,6 +4594,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3505,6 +4609,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3516,6 +4624,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3527,6 +4639,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3538,6 +4654,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3549,6 +4669,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3560,6 +4684,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3571,6 +4699,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3582,6 +4714,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3593,6 +4729,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3604,6 +4744,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3615,6 +4759,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3626,6 +4774,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3637,6 +4789,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3648,6 +4804,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3659,6 +4819,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3670,6 +4834,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3681,6 +4849,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3692,6 +4864,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3703,6 +4879,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3714,6 +4894,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3725,6 +4909,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3736,6 +4924,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3747,6 +4939,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3758,6 +4954,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3769,6 +4969,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -3991,6 +5195,10 @@ "Linux Tests (dbg)(1)(32)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4002,6 +5210,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4013,6 +5225,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4024,6 +5240,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4035,6 +5255,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4046,6 +5270,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4057,6 +5285,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4068,6 +5300,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4079,6 +5315,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4090,6 +5330,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4102,6 +5346,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4113,6 +5361,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4124,6 +5376,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4140,6 +5396,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4152,6 +5412,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4166,6 +5430,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4177,6 +5445,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4188,6 +5460,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4199,6 +5475,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4210,6 +5490,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4221,6 +5505,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4232,6 +5520,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4243,6 +5535,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4254,6 +5550,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4270,6 +5570,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -4286,6 +5590,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -4298,6 +5606,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4309,6 +5621,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4320,6 +5636,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4331,6 +5651,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4342,6 +5666,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4353,6 +5681,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4364,6 +5696,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4375,6 +5711,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4386,6 +5726,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4397,6 +5741,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4408,6 +5756,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4419,6 +5771,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4430,6 +5786,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4441,6 +5801,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4452,6 +5816,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4463,6 +5831,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4474,6 +5846,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4485,6 +5861,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4496,6 +5876,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4508,6 +5892,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4519,6 +5907,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4530,6 +5922,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4541,6 +5937,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4552,6 +5952,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4563,6 +5967,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4574,6 +5982,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4585,6 +5997,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4596,6 +6012,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4607,6 +6027,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4618,6 +6042,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4629,6 +6057,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4640,6 +6072,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4651,6 +6087,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4662,6 +6102,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4673,6 +6117,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4685,6 +6133,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4696,6 +6148,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4707,6 +6163,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4718,6 +6178,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4729,6 +6193,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4740,6 +6208,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4751,6 +6223,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4762,6 +6238,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4773,6 +6253,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4784,6 +6268,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4795,6 +6283,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4806,6 +6298,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4817,6 +6313,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4828,6 +6328,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4839,6 +6343,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4850,6 +6358,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4861,6 +6373,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4872,6 +6388,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4883,6 +6403,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4894,6 +6418,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4905,6 +6433,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4916,6 +6448,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4927,6 +6463,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4938,6 +6478,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4949,6 +6493,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5105,6 +6653,10 @@ "gtest_tests": [ { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5117,6 +6669,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5129,6 +6685,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5141,6 +6701,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5153,6 +6717,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5165,6 +6733,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5177,6 +6749,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5189,6 +6765,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5201,6 +6781,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5213,6 +6797,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5226,6 +6814,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5238,6 +6830,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5250,6 +6846,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5267,6 +6867,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5280,6 +6884,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5295,6 +6903,10 @@ "--gtest_filter=-*UsingRealWebcam*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5307,6 +6919,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5319,6 +6935,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5331,6 +6951,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5343,6 +6967,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5355,6 +6983,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5367,6 +6999,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5379,6 +7015,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5391,6 +7031,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5408,6 +7052,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5425,6 +7073,10 @@ "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5438,6 +7090,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5450,6 +7106,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5462,6 +7122,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5474,6 +7138,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5486,6 +7154,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5498,6 +7170,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5510,6 +7186,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5522,6 +7202,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5534,6 +7218,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5546,6 +7234,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5558,6 +7250,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5570,6 +7266,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5582,6 +7282,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5594,6 +7298,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5606,6 +7314,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5618,6 +7330,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5630,6 +7346,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5642,6 +7362,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5654,6 +7378,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5667,6 +7395,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5679,6 +7411,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5691,6 +7427,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5703,6 +7443,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5715,6 +7459,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5727,6 +7475,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5739,6 +7491,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5751,6 +7507,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5763,6 +7523,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5775,6 +7539,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5787,6 +7555,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5799,6 +7571,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5811,6 +7587,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5823,6 +7603,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5835,6 +7619,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5847,6 +7635,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5859,6 +7651,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5871,6 +7667,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5883,6 +7683,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5895,6 +7699,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5907,6 +7715,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5919,6 +7731,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5931,6 +7747,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5943,6 +7763,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5955,6 +7779,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5967,6 +7795,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5979,6 +7811,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5991,6 +7827,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6003,6 +7843,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6015,6 +7859,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6027,6 +7875,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6039,6 +7891,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6051,6 +7907,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6063,6 +7923,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6075,6 +7939,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6087,6 +7955,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6099,6 +7971,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6111,6 +7987,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6123,6 +8003,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6135,6 +8019,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6147,6 +8035,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6159,6 +8051,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6474,6 +8370,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6485,6 +8385,10 @@ "test": "ozone_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6503,6 +8407,10 @@ ], "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6514,6 +8422,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6525,6 +8437,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6536,6 +8452,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6547,6 +8467,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6558,6 +8482,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6569,6 +8497,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6580,6 +8512,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6591,6 +8527,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6602,6 +8542,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6614,6 +8558,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6625,6 +8573,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6636,6 +8588,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6652,6 +8608,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6664,6 +8624,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6678,6 +8642,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6689,6 +8657,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6700,6 +8672,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6711,6 +8687,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6722,6 +8702,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6733,6 +8717,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6744,6 +8732,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6755,6 +8747,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6766,6 +8762,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6782,6 +8782,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -6798,6 +8802,10 @@ "--enable-features=VizDisplayCompositor,UseSkiaRenderer", "--gtest_filter=AuraWindowVideoCaptureDeviceBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "skia_renderer_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -6810,6 +8818,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6821,6 +8833,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6832,6 +8848,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6843,6 +8863,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6854,6 +8878,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6865,6 +8893,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6876,6 +8908,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6887,6 +8923,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6898,6 +8938,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6909,6 +8953,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6920,6 +8968,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6931,6 +8983,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6942,6 +8998,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6953,6 +9013,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6964,6 +9028,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6975,6 +9043,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6986,6 +9058,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6997,6 +9073,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7008,6 +9088,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7020,6 +9104,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7031,6 +9119,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7042,6 +9134,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7053,6 +9149,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7064,6 +9164,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7075,6 +9179,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7086,6 +9194,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7097,6 +9209,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7108,6 +9224,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7119,6 +9239,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7130,6 +9254,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7141,6 +9269,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7152,6 +9284,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7163,6 +9299,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7174,6 +9314,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7185,6 +9329,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7196,6 +9344,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7207,6 +9359,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7218,6 +9374,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7229,6 +9389,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7240,6 +9404,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7251,6 +9419,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7262,6 +9434,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7273,6 +9449,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7284,6 +9464,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7295,6 +9479,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7306,6 +9494,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7317,6 +9509,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7328,6 +9524,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7339,6 +9539,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7350,6 +9554,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7361,6 +9569,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7372,6 +9584,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7383,6 +9599,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7394,6 +9614,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7405,6 +9629,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7416,6 +9644,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7427,6 +9659,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7438,6 +9674,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7449,6 +9689,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7460,6 +9704,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7471,6 +9719,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "xr_browser_tests", "swarming": { "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/chromium.mac.json b/testing/buildbot/chromium.mac.json index a36a25b..0142c6ad 100644 --- a/testing/buildbot/chromium.mac.json +++ b/testing/buildbot/chromium.mac.json
@@ -14,6 +14,10 @@ "Mac10.10 Tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -26,6 +30,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -38,6 +46,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -50,6 +62,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -62,6 +78,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -74,6 +94,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -86,6 +110,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -98,6 +126,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -110,6 +142,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -123,6 +159,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -135,6 +175,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -151,6 +195,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -168,6 +216,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -181,6 +233,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -196,6 +252,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -208,6 +268,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -220,6 +284,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -232,6 +300,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -244,6 +316,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -256,6 +332,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -268,6 +348,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -280,6 +364,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -297,6 +385,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -310,6 +402,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -322,6 +418,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -334,6 +434,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -346,6 +450,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -358,6 +466,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -370,6 +482,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -382,6 +498,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -394,6 +514,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -406,6 +530,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -418,6 +546,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -430,6 +562,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -442,6 +578,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -454,6 +594,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -466,6 +610,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -478,6 +626,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -490,6 +642,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -502,6 +658,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -514,6 +674,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -526,6 +690,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -539,6 +707,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -551,6 +723,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -563,6 +739,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -575,6 +755,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -587,6 +771,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -599,6 +787,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -611,6 +803,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -623,6 +819,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -635,6 +835,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -647,6 +851,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -659,6 +867,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -671,6 +883,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -683,6 +899,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -695,6 +915,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -707,6 +931,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -719,6 +947,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -731,6 +963,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -743,6 +979,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -755,6 +995,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -767,6 +1011,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -779,6 +1027,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -791,6 +1043,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -803,6 +1059,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -815,6 +1075,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -827,6 +1091,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -839,6 +1107,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -851,6 +1123,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -863,6 +1139,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -875,6 +1155,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -887,6 +1171,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -899,6 +1187,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -911,6 +1203,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -923,6 +1219,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -935,6 +1235,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -947,6 +1251,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1128,6 +1436,10 @@ "Mac10.11 Tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1140,6 +1452,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1152,6 +1468,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1164,6 +1484,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1176,6 +1500,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1188,6 +1516,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1200,6 +1532,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1212,6 +1548,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1224,6 +1564,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1237,6 +1581,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1249,6 +1597,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1265,6 +1617,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1282,6 +1638,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -1295,6 +1655,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1310,6 +1674,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1322,6 +1690,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1334,6 +1706,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1346,6 +1722,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1358,6 +1738,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1370,6 +1754,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1382,6 +1770,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1394,6 +1786,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1411,6 +1807,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1424,6 +1824,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1436,6 +1840,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1448,6 +1856,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1460,6 +1872,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1472,6 +1888,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1484,6 +1904,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1496,6 +1920,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1508,6 +1936,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1520,6 +1952,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1532,6 +1968,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1544,6 +1984,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1556,6 +2000,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1568,6 +2016,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1580,6 +2032,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1592,6 +2048,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1604,6 +2064,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1616,6 +2080,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1628,6 +2096,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1640,6 +2112,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1653,6 +2129,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1665,6 +2145,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1677,6 +2161,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1689,6 +2177,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1701,6 +2193,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1713,6 +2209,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1725,6 +2225,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1737,6 +2241,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1749,6 +2257,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1761,6 +2273,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1773,6 +2289,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1785,6 +2305,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1797,6 +2321,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1809,6 +2337,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1821,6 +2353,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1833,6 +2369,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1845,6 +2385,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1857,6 +2401,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1869,6 +2417,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1881,6 +2433,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1893,6 +2449,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1905,6 +2465,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1917,6 +2481,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1929,6 +2497,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1941,6 +2513,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1953,6 +2529,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1965,6 +2545,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1977,6 +2561,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1989,6 +2577,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2001,6 +2593,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2013,6 +2609,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2025,6 +2625,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2037,6 +2641,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2049,6 +2657,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2061,6 +2673,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2242,6 +2858,10 @@ "Mac10.12 Tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2254,6 +2874,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2266,6 +2890,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2278,6 +2906,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2290,6 +2922,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2302,6 +2938,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2314,6 +2954,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2326,6 +2970,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2338,6 +2986,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2351,6 +3003,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2363,6 +3019,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2379,6 +3039,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2396,6 +3060,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2409,6 +3077,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2424,6 +3096,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2436,6 +3112,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2448,6 +3128,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2460,6 +3144,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2472,6 +3160,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2484,6 +3176,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2496,6 +3192,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2508,6 +3208,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2525,6 +3229,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -2538,6 +3246,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2550,6 +3262,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2562,6 +3278,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2574,6 +3294,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2586,6 +3310,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2598,6 +3326,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2610,6 +3342,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2622,6 +3358,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2634,6 +3374,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2646,6 +3390,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2658,6 +3406,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2670,6 +3422,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2682,6 +3438,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2694,6 +3454,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2706,6 +3470,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2718,6 +3486,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2730,6 +3502,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2742,6 +3518,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2754,6 +3534,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2767,6 +3551,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2779,6 +3567,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2791,6 +3583,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2803,6 +3599,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2815,6 +3615,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2827,6 +3631,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2839,6 +3647,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2851,6 +3663,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2863,6 +3679,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2875,6 +3695,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2887,6 +3711,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2899,6 +3727,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2911,6 +3743,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2923,6 +3759,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2935,6 +3775,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2947,6 +3791,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2959,6 +3807,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2971,6 +3823,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2983,6 +3839,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2995,6 +3855,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3007,6 +3871,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3019,6 +3887,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3031,6 +3903,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3043,6 +3919,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3055,6 +3935,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3067,6 +3951,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3079,6 +3967,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3091,6 +3983,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3103,6 +3999,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3115,6 +4015,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3127,6 +4031,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3139,6 +4047,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3151,6 +4063,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3163,6 +4079,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3175,6 +4095,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3393,6 +4317,10 @@ "Mac10.13 Tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3405,6 +4333,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3417,6 +4349,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3429,6 +4365,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3441,6 +4381,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3453,6 +4397,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3465,6 +4413,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3477,6 +4429,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3489,6 +4445,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -3502,6 +4462,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3514,6 +4478,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3530,6 +4498,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3547,6 +4519,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -3560,6 +4536,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3575,6 +4555,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3587,6 +4571,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3599,6 +4587,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3611,6 +4603,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3623,6 +4619,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3635,6 +4635,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3647,6 +4651,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3659,6 +4667,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3676,6 +4688,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -3689,6 +4705,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3701,6 +4721,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3713,6 +4737,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3725,6 +4753,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3737,6 +4769,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3749,6 +4785,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3761,6 +4801,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3773,6 +4817,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3785,6 +4833,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3797,6 +4849,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3809,6 +4865,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3821,6 +4881,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3833,6 +4897,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3845,6 +4913,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3857,6 +4929,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3869,6 +4945,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3881,6 +4961,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3893,6 +4977,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3905,6 +4993,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3918,6 +5010,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3930,6 +5026,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3942,6 +5042,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3954,6 +5058,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3966,6 +5074,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3978,6 +5090,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3990,6 +5106,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4002,6 +5122,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4014,6 +5138,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4026,6 +5154,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4038,6 +5170,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4050,6 +5186,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4062,6 +5202,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4074,6 +5218,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4086,6 +5234,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4098,6 +5250,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4110,6 +5266,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4122,6 +5282,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4134,6 +5298,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4146,6 +5314,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4158,6 +5330,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4170,6 +5346,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4182,6 +5362,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4194,6 +5378,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4206,6 +5394,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4218,6 +5410,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4230,6 +5426,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4242,6 +5442,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4254,6 +5458,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4266,6 +5474,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4278,6 +5490,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4290,6 +5506,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4302,6 +5522,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4314,6 +5538,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4326,6 +5554,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4538,6 +5770,10 @@ "Mac10.13 Tests (dbg)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4550,6 +5786,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4562,6 +5802,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4574,6 +5818,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4586,6 +5834,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4598,6 +5850,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4610,6 +5866,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4622,6 +5882,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4634,6 +5898,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4647,6 +5915,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4659,6 +5931,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4675,6 +5951,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4692,6 +5972,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4705,6 +5989,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4720,6 +6008,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4732,6 +6024,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4744,6 +6040,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4756,6 +6056,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4768,6 +6072,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4780,6 +6088,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4792,6 +6104,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4804,6 +6120,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4821,6 +6141,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -4834,6 +6158,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4846,6 +6174,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4858,6 +6190,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4870,6 +6206,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4882,6 +6222,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4894,6 +6238,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4906,6 +6254,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4918,6 +6270,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4930,6 +6286,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4942,6 +6302,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4954,6 +6318,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4966,6 +6334,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4978,6 +6350,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4990,6 +6366,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5002,6 +6382,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5014,6 +6398,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5026,6 +6414,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5038,6 +6430,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5050,6 +6446,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5063,6 +6463,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5075,6 +6479,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5087,6 +6495,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5099,6 +6511,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5111,6 +6527,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5123,6 +6543,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5135,6 +6559,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5147,6 +6575,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5159,6 +6591,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5171,6 +6607,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5183,6 +6623,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5195,6 +6639,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5207,6 +6655,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5219,6 +6671,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5231,6 +6687,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5243,6 +6703,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5255,6 +6719,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5267,6 +6735,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5279,6 +6751,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5291,6 +6767,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5303,6 +6783,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5315,6 +6799,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5327,6 +6815,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5339,6 +6831,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5351,6 +6847,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5363,6 +6863,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5375,6 +6879,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5387,6 +6895,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5399,6 +6911,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5411,6 +6927,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5423,6 +6943,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5435,6 +6959,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5447,6 +6975,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5459,6 +6991,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5471,6 +7007,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5677,6 +7217,10 @@ "mac-dummy-rel": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5689,6 +7233,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5701,6 +7249,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5713,6 +7265,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5725,6 +7281,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5737,6 +7297,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5749,6 +7313,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5761,6 +7329,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5773,6 +7345,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5786,6 +7362,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5798,6 +7378,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5814,6 +7398,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5831,6 +7419,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5844,6 +7436,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5859,6 +7455,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5871,6 +7471,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5883,6 +7487,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5895,6 +7503,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5907,6 +7519,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5919,6 +7535,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5931,6 +7551,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5943,6 +7567,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5960,6 +7588,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5973,6 +7605,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5985,6 +7621,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -5997,6 +7637,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6009,6 +7653,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6021,6 +7669,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6033,6 +7685,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6045,6 +7701,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6057,6 +7717,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6069,6 +7733,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6081,6 +7749,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6093,6 +7765,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6105,6 +7781,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6117,6 +7797,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6129,6 +7813,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6141,6 +7829,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6153,6 +7845,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6165,6 +7861,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6177,6 +7877,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6189,6 +7893,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6202,6 +7910,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6214,6 +7926,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6226,6 +7942,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6238,6 +7958,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6250,6 +7974,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6262,6 +7990,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6274,6 +8006,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6286,6 +8022,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6298,6 +8038,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6310,6 +8054,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6322,6 +8070,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6334,6 +8086,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6346,6 +8102,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6358,6 +8118,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6370,6 +8134,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6382,6 +8150,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6394,6 +8166,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6406,6 +8182,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6418,6 +8198,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6430,6 +8214,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6442,6 +8230,10 @@ "test": "sandbox_mac_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6454,6 +8246,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6466,6 +8262,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6478,6 +8278,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6490,6 +8294,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6502,6 +8310,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6514,6 +8326,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6526,6 +8342,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6538,6 +8358,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6550,6 +8374,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6562,6 +8390,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6574,6 +8406,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6586,6 +8422,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6598,6 +8438,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6610,6 +8454,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.memory.json b/testing/buildbot/chromium.memory.json index 1ee2b6f..7fba115 100644 --- a/testing/buildbot/chromium.memory.json +++ b/testing/buildbot/chromium.memory.json
@@ -2651,6 +2651,10 @@ "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": [ @@ -2665,6 +2669,10 @@ "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": [ @@ -2680,6 +2688,10 @@ "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": [ @@ -2694,6 +2706,10 @@ "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": [ @@ -2708,6 +2724,10 @@ "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": [ @@ -2722,6 +2742,10 @@ "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": [ @@ -2736,6 +2760,10 @@ "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": [ @@ -2750,6 +2778,10 @@ "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": [ @@ -2764,6 +2796,10 @@ "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": [ @@ -2778,6 +2814,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2794,6 +2834,10 @@ "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": [ @@ -2808,6 +2852,10 @@ "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": [ @@ -2822,6 +2870,10 @@ "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": [ @@ -2839,6 +2891,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2854,6 +2910,10 @@ "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": [ @@ -2869,6 +2929,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--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": [ @@ -2883,6 +2947,10 @@ "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": [ @@ -2897,6 +2965,10 @@ "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": [ @@ -2911,6 +2983,10 @@ "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": [ @@ -2925,6 +3001,10 @@ "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": [ @@ -2939,6 +3019,10 @@ "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": [ @@ -2953,6 +3037,10 @@ "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": [ @@ -2968,6 +3056,10 @@ "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": [ @@ -2982,6 +3074,10 @@ "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": [ @@ -2999,6 +3095,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -3014,6 +3114,10 @@ "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": [ @@ -3029,6 +3133,10 @@ "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": [ @@ -3043,6 +3151,10 @@ "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": [ @@ -3057,6 +3169,10 @@ "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": [ @@ -3071,6 +3187,10 @@ "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": [ @@ -3085,6 +3205,10 @@ "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": [ @@ -3099,6 +3223,10 @@ "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": [ @@ -3113,6 +3241,10 @@ "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": [ @@ -3127,6 +3259,10 @@ "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": [ @@ -3141,6 +3277,10 @@ "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": [ @@ -3155,6 +3295,10 @@ "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": [ @@ -3169,6 +3313,10 @@ "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": [ @@ -3183,6 +3331,10 @@ "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": [ @@ -3199,6 +3351,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3216,6 +3372,10 @@ "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": [ @@ -3230,6 +3390,10 @@ "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": [ @@ -3244,6 +3408,10 @@ "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": [ @@ -3258,6 +3426,10 @@ "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": [ @@ -3272,6 +3444,10 @@ "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": [ @@ -3286,6 +3462,10 @@ "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": [ @@ -3301,6 +3481,10 @@ "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": [ @@ -3315,6 +3499,10 @@ "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": [ @@ -3329,6 +3517,10 @@ "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": [ @@ -3343,6 +3535,10 @@ "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": [ @@ -3357,6 +3553,10 @@ "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": [ @@ -3371,6 +3571,10 @@ "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": [ @@ -3385,6 +3589,10 @@ "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": [ @@ -3399,6 +3607,10 @@ "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": [ @@ -3413,6 +3625,10 @@ "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": [ @@ -3427,6 +3643,10 @@ "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": [ @@ -3441,6 +3661,10 @@ "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": [ @@ -3455,6 +3679,10 @@ "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": [ @@ -3469,6 +3697,10 @@ "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": [ @@ -3483,6 +3715,10 @@ "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": [ @@ -3497,6 +3733,10 @@ "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": [ @@ -3511,6 +3751,10 @@ "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": [ @@ -3526,6 +3770,10 @@ "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": [ @@ -3540,6 +3788,10 @@ "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": [ @@ -3554,6 +3806,10 @@ "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": [ @@ -3568,6 +3824,10 @@ "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": [ @@ -3582,6 +3842,10 @@ "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": [ @@ -3596,6 +3860,10 @@ "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": [ @@ -3610,6 +3878,10 @@ "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": [ @@ -3624,6 +3896,10 @@ "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": [ @@ -3638,6 +3914,10 @@ "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": [ @@ -3652,6 +3932,10 @@ "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": [ @@ -3666,6 +3950,10 @@ "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": [ @@ -3680,6 +3968,10 @@ "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": [ @@ -3694,6 +3986,10 @@ "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": [ @@ -3708,6 +4004,10 @@ "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": [ @@ -3722,6 +4022,10 @@ "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": [ @@ -3736,6 +4040,10 @@ "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": [ @@ -3750,6 +4058,10 @@ "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": [ @@ -3764,6 +4076,10 @@ "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": [ @@ -3779,6 +4095,10 @@ "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": [ @@ -3793,6 +4113,10 @@ "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": [ @@ -3807,6 +4131,10 @@ "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": [ @@ -3821,6 +4149,10 @@ "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": [ @@ -3835,6 +4167,10 @@ "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": [ @@ -3849,6 +4185,10 @@ "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": [ @@ -3863,6 +4203,10 @@ "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": [ @@ -3881,6 +4225,10 @@ "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": [ @@ -3896,6 +4244,10 @@ "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": [ @@ -3910,6 +4262,10 @@ "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": [ @@ -3925,6 +4281,10 @@ "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": [ @@ -3941,6 +4301,10 @@ "Linux CFI": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3952,6 +4316,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3963,6 +4331,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3974,6 +4346,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3985,6 +4361,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3996,6 +4376,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4007,6 +4391,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4018,6 +4406,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4029,6 +4421,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4040,6 +4436,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4052,6 +4452,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4063,6 +4467,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4074,6 +4482,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4090,6 +4502,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -4102,6 +4518,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4116,6 +4536,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4127,6 +4551,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4138,6 +4566,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4149,6 +4581,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4160,6 +4596,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4171,6 +4611,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4182,6 +4626,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4193,6 +4641,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4204,6 +4656,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4220,6 +4676,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -4232,6 +4692,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4243,6 +4707,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4254,6 +4722,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4265,6 +4737,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4276,6 +4752,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4287,6 +4767,10 @@ "test": "dbus_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4298,6 +4782,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4309,6 +4797,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4320,6 +4812,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4331,6 +4827,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4342,6 +4842,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4353,6 +4857,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4364,6 +4872,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4375,6 +4887,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4390,6 +4906,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4408,6 +4928,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4422,6 +4946,10 @@ "use_xvfb": false }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4433,6 +4961,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4444,6 +4976,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4455,6 +4991,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4466,6 +5006,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4478,6 +5022,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4489,6 +5037,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4500,6 +5052,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4511,6 +5067,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4522,6 +5082,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4533,6 +5097,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4544,6 +5112,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4555,6 +5127,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4566,6 +5142,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4577,6 +5157,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4588,6 +5172,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4599,6 +5187,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4610,6 +5202,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4621,6 +5217,10 @@ "test": "nacl_helper_nonsfi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4632,6 +5232,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4643,6 +5247,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4654,6 +5262,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4665,6 +5277,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4676,6 +5292,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4687,6 +5307,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4698,6 +5322,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4709,6 +5337,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4720,6 +5352,10 @@ "test": "sandbox_linux_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4731,6 +5367,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4742,6 +5382,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4753,6 +5397,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4764,6 +5412,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4775,6 +5427,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4786,6 +5442,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4797,6 +5457,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4808,6 +5472,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4819,6 +5487,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4830,6 +5502,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4841,6 +5517,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4852,6 +5532,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4863,6 +5547,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4874,6 +5562,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4885,6 +5577,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4896,6 +5592,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4907,6 +5607,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4918,6 +5622,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4936,6 +5644,10 @@ "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": [ @@ -4950,6 +5662,10 @@ "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": [ @@ -4964,6 +5680,10 @@ "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": [ @@ -4978,6 +5698,10 @@ "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": [ @@ -4992,6 +5716,10 @@ "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": [ @@ -5006,6 +5734,10 @@ "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": [ @@ -5020,6 +5752,10 @@ "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": [ @@ -5034,6 +5770,10 @@ "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": [ @@ -5048,6 +5788,10 @@ "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": [ @@ -5062,6 +5806,10 @@ "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": [ @@ -5076,6 +5824,10 @@ "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": [ @@ -5090,6 +5842,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5105,6 +5861,10 @@ "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": [ @@ -5119,6 +5879,10 @@ "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": [ @@ -5133,6 +5897,10 @@ "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": [ @@ -5149,6 +5917,10 @@ "--enable-features=VizDisplayCompositor", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5167,6 +5939,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -5182,6 +5958,10 @@ "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": [ @@ -5197,6 +5977,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--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": [ @@ -5211,6 +5995,10 @@ "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": [ @@ -5225,6 +6013,10 @@ "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": [ @@ -5239,6 +6031,10 @@ "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": [ @@ -5253,6 +6049,10 @@ "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": [ @@ -5267,6 +6067,10 @@ "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": [ @@ -5281,6 +6085,10 @@ "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": [ @@ -5295,6 +6103,10 @@ "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": [ @@ -5309,6 +6121,10 @@ "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": [ @@ -5324,6 +6140,10 @@ "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": [ @@ -5338,6 +6158,10 @@ "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": [ @@ -5355,6 +6179,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5371,6 +6199,10 @@ "--enable-features=VizDisplayCompositor", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -5387,6 +6219,10 @@ "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": [ @@ -5402,6 +6238,10 @@ "--enable-features=VizDisplayCompositor", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -5417,6 +6257,10 @@ "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": [ @@ -5431,6 +6275,10 @@ "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": [ @@ -5445,6 +6293,10 @@ "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": [ @@ -5459,6 +6311,10 @@ "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": [ @@ -5473,6 +6329,10 @@ "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": [ @@ -5487,6 +6347,10 @@ "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": [ @@ -5501,6 +6365,10 @@ "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": [ @@ -5515,6 +6383,10 @@ "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": [ @@ -5529,6 +6401,10 @@ "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": [ @@ -5543,6 +6419,10 @@ "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": [ @@ -5557,6 +6437,10 @@ "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": [ @@ -5571,6 +6455,10 @@ "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": [ @@ -5585,6 +6473,10 @@ "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": [ @@ -5599,6 +6491,10 @@ "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": [ @@ -5613,6 +6509,10 @@ "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": [ @@ -5628,6 +6528,10 @@ "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": [ @@ -5642,6 +6546,10 @@ "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": [ @@ -5656,6 +6564,10 @@ "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": [ @@ -5670,6 +6582,10 @@ "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": [ @@ -5684,6 +6600,10 @@ "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": [ @@ -5698,6 +6618,10 @@ "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": [ @@ -5712,6 +6636,10 @@ "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": [ @@ -5726,6 +6654,10 @@ "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": [ @@ -5740,6 +6672,10 @@ "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": [ @@ -5754,6 +6690,10 @@ "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": [ @@ -5768,6 +6708,10 @@ "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": [ @@ -5782,6 +6726,10 @@ "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": [ @@ -5796,6 +6744,10 @@ "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": [ @@ -5810,6 +6762,10 @@ "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": [ @@ -5824,6 +6780,10 @@ "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": [ @@ -5838,6 +6798,10 @@ "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": [ @@ -5852,6 +6816,10 @@ "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": [ @@ -5868,6 +6836,10 @@ "--ozone-platform=headless", "--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": [ @@ -5882,6 +6854,10 @@ "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": [ @@ -5896,6 +6872,10 @@ "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": [ @@ -5910,6 +6890,10 @@ "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": [ @@ -5924,6 +6908,10 @@ "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": [ @@ -5938,6 +6926,10 @@ "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": [ @@ -5952,6 +6944,10 @@ "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": [ @@ -5966,6 +6962,10 @@ "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": [ @@ -5980,6 +6980,10 @@ "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": [ @@ -5994,6 +6998,10 @@ "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": [ @@ -6008,6 +7016,10 @@ "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": [ @@ -6022,6 +7034,10 @@ "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": [ @@ -6036,6 +7052,10 @@ "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": [ @@ -6050,6 +7070,10 @@ "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": [ @@ -6064,6 +7088,10 @@ "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": [ @@ -6078,6 +7106,10 @@ "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": [ @@ -6092,6 +7124,10 @@ "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": [ @@ -6106,6 +7142,10 @@ "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": [ @@ -6120,6 +7160,10 @@ "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": [ @@ -6134,6 +7178,10 @@ "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": [ @@ -6148,6 +7196,10 @@ "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": [ @@ -6162,6 +7214,10 @@ "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": [ @@ -6177,6 +7233,10 @@ "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": [ @@ -6192,6 +7252,10 @@ "--test-launcher-print-test-stdio=always" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -6206,6 +7270,10 @@ "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": [ @@ -6220,6 +7288,10 @@ "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": [ @@ -6234,6 +7306,10 @@ "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": [ @@ -6248,6 +7324,10 @@ "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": [ @@ -6262,6 +7342,10 @@ "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": [ @@ -6280,6 +7364,10 @@ "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": [ @@ -6295,6 +7383,10 @@ "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": [ @@ -6310,6 +7402,10 @@ "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": [ @@ -6325,6 +7421,10 @@ "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": [ @@ -6340,6 +7440,10 @@ "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": [ @@ -6355,6 +7459,10 @@ "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": [ @@ -6370,6 +7478,10 @@ "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": [ @@ -6385,6 +7497,10 @@ "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": [ @@ -6400,6 +7516,10 @@ "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": [ @@ -6415,6 +7535,10 @@ "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": [ @@ -6430,6 +7554,10 @@ "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": [ @@ -6445,6 +7573,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6461,6 +7593,10 @@ "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": [ @@ -6476,6 +7612,10 @@ "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": [ @@ -6491,6 +7631,10 @@ "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": [ @@ -6508,6 +7652,10 @@ "--enable-features=VizDisplayCompositor", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6527,6 +7675,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -6543,6 +7695,10 @@ "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": [ @@ -6559,6 +7715,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--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": [ @@ -6574,6 +7734,10 @@ "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": [ @@ -6589,6 +7753,10 @@ "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": [ @@ -6604,6 +7772,10 @@ "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": [ @@ -6619,6 +7791,10 @@ "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": [ @@ -6634,6 +7810,10 @@ "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": [ @@ -6649,6 +7829,10 @@ "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": [ @@ -6664,6 +7848,10 @@ "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": [ @@ -6679,6 +7867,10 @@ "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": [ @@ -6694,6 +7886,10 @@ "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": [ @@ -6709,6 +7905,10 @@ "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": [ @@ -6727,6 +7927,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -6744,6 +7948,10 @@ "--enable-features=VizDisplayCompositor", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -6761,6 +7969,10 @@ "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": [ @@ -6778,6 +7990,10 @@ "--enable-features=VizDisplayCompositor", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "viz_content_unittests", "swarming": { "can_use_on_swarming_builders": true, @@ -6794,6 +8010,10 @@ "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": [ @@ -6809,6 +8029,10 @@ "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": [ @@ -6824,6 +8048,10 @@ "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": [ @@ -6839,6 +8067,10 @@ "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": [ @@ -6854,6 +8086,10 @@ "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": [ @@ -6869,6 +8105,10 @@ "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": [ @@ -6884,6 +8124,10 @@ "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": [ @@ -6899,6 +8143,10 @@ "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": [ @@ -6914,6 +8162,10 @@ "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": [ @@ -6929,6 +8181,10 @@ "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": [ @@ -6944,6 +8200,10 @@ "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": [ @@ -6959,6 +8219,10 @@ "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": [ @@ -6974,6 +8238,10 @@ "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": [ @@ -6989,6 +8257,10 @@ "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": [ @@ -7004,6 +8276,10 @@ "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": [ @@ -7020,6 +8296,10 @@ "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": [ @@ -7035,6 +8315,10 @@ "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": [ @@ -7050,6 +8334,10 @@ "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": [ @@ -7065,6 +8353,10 @@ "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": [ @@ -7080,6 +8372,10 @@ "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": [ @@ -7095,6 +8391,10 @@ "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": [ @@ -7110,6 +8410,10 @@ "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": [ @@ -7125,6 +8429,10 @@ "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": [ @@ -7140,6 +8448,10 @@ "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": [ @@ -7155,6 +8467,10 @@ "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": [ @@ -7170,6 +8486,10 @@ "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": [ @@ -7185,6 +8505,10 @@ "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": [ @@ -7200,6 +8524,10 @@ "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": [ @@ -7215,6 +8543,10 @@ "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": [ @@ -7230,6 +8562,10 @@ "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": [ @@ -7245,6 +8581,10 @@ "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": [ @@ -7260,6 +8600,10 @@ "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": [ @@ -7277,6 +8621,10 @@ "--ozone-platform=headless", "--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": [ @@ -7292,6 +8640,10 @@ "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": [ @@ -7307,6 +8659,10 @@ "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": [ @@ -7322,6 +8678,10 @@ "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": [ @@ -7337,6 +8697,10 @@ "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": [ @@ -7352,6 +8716,10 @@ "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": [ @@ -7367,6 +8735,10 @@ "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": [ @@ -7382,6 +8754,10 @@ "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": [ @@ -7397,6 +8773,10 @@ "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": [ @@ -7412,6 +8792,10 @@ "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": [ @@ -7427,6 +8811,10 @@ "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": [ @@ -7442,6 +8830,10 @@ "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": [ @@ -7457,6 +8849,10 @@ "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": [ @@ -7472,6 +8868,10 @@ "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": [ @@ -7487,6 +8887,10 @@ "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": [ @@ -7502,6 +8906,10 @@ "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": [ @@ -7517,6 +8925,10 @@ "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": [ @@ -7532,6 +8944,10 @@ "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": [ @@ -7547,6 +8963,10 @@ "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": [ @@ -7562,6 +8982,10 @@ "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": [ @@ -7577,6 +9001,10 @@ "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": [ @@ -7593,6 +9021,10 @@ "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": [ @@ -7609,6 +9041,10 @@ "--test-launcher-print-test-stdio=always" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -7624,6 +9060,10 @@ "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": [ @@ -7639,6 +9079,10 @@ "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": [ @@ -7654,6 +9098,10 @@ "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": [ @@ -7669,6 +9117,10 @@ "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": [ @@ -7684,6 +9136,10 @@ "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": [ @@ -7703,6 +9159,10 @@ "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": [ @@ -7718,6 +9178,10 @@ "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": [ @@ -7733,6 +9197,10 @@ "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": [ @@ -7748,6 +9216,10 @@ "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": [ @@ -7763,6 +9235,10 @@ "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": [ @@ -7778,6 +9254,10 @@ "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": [ @@ -7793,6 +9273,10 @@ "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": [ @@ -7808,6 +9292,10 @@ "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": [ @@ -7823,6 +9311,10 @@ "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": [ @@ -7838,6 +9330,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -7854,6 +9350,10 @@ "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": [ @@ -7869,6 +9369,10 @@ "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": [ @@ -7884,6 +9388,10 @@ "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": [ @@ -7902,6 +9410,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -7918,6 +9430,10 @@ "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": [ @@ -7934,6 +9450,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--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": [ @@ -7949,6 +9469,10 @@ "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": [ @@ -7964,6 +9488,10 @@ "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": [ @@ -7979,6 +9507,10 @@ "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": [ @@ -7994,6 +9526,10 @@ "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": [ @@ -8009,6 +9545,10 @@ "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": [ @@ -8024,6 +9564,10 @@ "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": [ @@ -8039,6 +9583,10 @@ "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": [ @@ -8054,6 +9602,10 @@ "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": [ @@ -8072,6 +9624,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -8088,6 +9644,10 @@ "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": [ @@ -8103,6 +9663,10 @@ "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": [ @@ -8118,6 +9682,10 @@ "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": [ @@ -8133,6 +9701,10 @@ "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": [ @@ -8148,6 +9720,10 @@ "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": [ @@ -8163,6 +9739,10 @@ "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": [ @@ -8178,6 +9758,10 @@ "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": [ @@ -8193,6 +9777,10 @@ "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": [ @@ -8208,6 +9796,10 @@ "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": [ @@ -8223,6 +9815,10 @@ "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": [ @@ -8238,6 +9834,10 @@ "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": [ @@ -8253,6 +9853,10 @@ "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": [ @@ -8268,6 +9872,10 @@ "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": [ @@ -8283,6 +9891,10 @@ "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": [ @@ -8298,6 +9910,10 @@ "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": [ @@ -8313,6 +9929,10 @@ "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": [ @@ -8328,6 +9948,10 @@ "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": [ @@ -8343,6 +9967,10 @@ "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": [ @@ -8358,6 +9986,10 @@ "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": [ @@ -8373,6 +10005,10 @@ "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": [ @@ -8389,6 +10025,10 @@ "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": [ @@ -8404,6 +10044,10 @@ "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": [ @@ -8419,6 +10063,10 @@ "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": [ @@ -8434,6 +10082,10 @@ "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": [ @@ -8449,6 +10101,10 @@ "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": [ @@ -8464,6 +10120,10 @@ "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": [ @@ -8479,6 +10139,10 @@ "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": [ @@ -8494,6 +10158,10 @@ "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": [ @@ -8509,6 +10177,10 @@ "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": [ @@ -8524,6 +10196,10 @@ "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": [ @@ -8539,6 +10215,10 @@ "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": [ @@ -8554,6 +10234,10 @@ "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": [ @@ -8569,6 +10253,10 @@ "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": [ @@ -8584,6 +10272,10 @@ "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": [ @@ -8599,6 +10291,10 @@ "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": [ @@ -8614,6 +10310,10 @@ "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": [ @@ -8629,6 +10329,10 @@ "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": [ @@ -8644,6 +10348,10 @@ "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": [ @@ -8659,6 +10367,10 @@ "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": [ @@ -8674,6 +10386,10 @@ "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": [ @@ -8689,6 +10405,10 @@ "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": [ @@ -8704,6 +10424,10 @@ "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": [ @@ -8719,6 +10443,10 @@ "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": [ @@ -8734,6 +10462,10 @@ "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": [ @@ -8749,6 +10481,10 @@ "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": [ @@ -8764,6 +10500,10 @@ "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": [ @@ -8779,6 +10519,10 @@ "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": [ @@ -8794,6 +10538,10 @@ "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": [ @@ -8809,6 +10557,10 @@ "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": [ @@ -8824,6 +10576,10 @@ "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": [ @@ -8839,6 +10595,10 @@ "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": [ @@ -8854,6 +10614,10 @@ "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": [ @@ -8869,6 +10633,10 @@ "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": [ @@ -8884,6 +10652,10 @@ "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": [ @@ -8899,6 +10671,10 @@ "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": [ @@ -8914,6 +10690,10 @@ "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": [ @@ -8929,6 +10709,10 @@ "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": [ @@ -8944,6 +10728,10 @@ "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": [ @@ -8959,6 +10747,10 @@ "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": [ @@ -8974,6 +10766,10 @@ "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": [ @@ -8993,6 +10789,10 @@ "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": [ @@ -9007,6 +10807,10 @@ "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": [ @@ -9021,6 +10825,10 @@ "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": [ @@ -9035,6 +10843,10 @@ "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": [ @@ -9049,6 +10861,10 @@ "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": [ @@ -9063,6 +10879,10 @@ "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": [ @@ -9077,6 +10897,10 @@ "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": [ @@ -9091,6 +10915,10 @@ "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": [ @@ -9105,6 +10933,10 @@ "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": [ @@ -9119,6 +10951,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9134,6 +10970,10 @@ "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": [ @@ -9148,6 +10988,10 @@ "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": [ @@ -9164,6 +11008,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -9179,6 +11027,10 @@ "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": [ @@ -9194,6 +11046,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--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": [ @@ -9208,6 +11064,10 @@ "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": [ @@ -9222,6 +11082,10 @@ "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": [ @@ -9236,6 +11100,10 @@ "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": [ @@ -9250,6 +11118,10 @@ "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": [ @@ -9264,6 +11136,10 @@ "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": [ @@ -9278,6 +11154,10 @@ "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": [ @@ -9292,6 +11172,10 @@ "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": [ @@ -9306,6 +11190,10 @@ "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": [ @@ -9323,6 +11211,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -9338,6 +11230,10 @@ "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": [ @@ -9352,6 +11248,10 @@ "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": [ @@ -9366,6 +11266,10 @@ "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": [ @@ -9380,6 +11284,10 @@ "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": [ @@ -9394,6 +11302,10 @@ "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": [ @@ -9408,6 +11320,10 @@ "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": [ @@ -9422,6 +11338,10 @@ "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": [ @@ -9436,6 +11356,10 @@ "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": [ @@ -9450,6 +11374,10 @@ "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": [ @@ -9464,6 +11392,10 @@ "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": [ @@ -9478,6 +11410,10 @@ "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": [ @@ -9492,6 +11428,10 @@ "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": [ @@ -9506,6 +11446,10 @@ "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": [ @@ -9520,6 +11464,10 @@ "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": [ @@ -9536,6 +11484,10 @@ "--use-gpu-in-tests", "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -9553,6 +11505,10 @@ "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": [ @@ -9567,6 +11523,10 @@ "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": [ @@ -9581,6 +11541,10 @@ "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": [ @@ -9595,6 +11559,10 @@ "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": [ @@ -9609,6 +11577,10 @@ "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": [ @@ -9623,6 +11595,10 @@ "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": [ @@ -9638,6 +11614,10 @@ "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": [ @@ -9652,6 +11632,10 @@ "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": [ @@ -9666,6 +11650,10 @@ "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": [ @@ -9680,6 +11668,10 @@ "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": [ @@ -9694,6 +11686,10 @@ "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": [ @@ -9708,6 +11704,10 @@ "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": [ @@ -9722,6 +11722,10 @@ "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": [ @@ -9736,6 +11740,10 @@ "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": [ @@ -9750,6 +11758,10 @@ "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": [ @@ -9764,6 +11776,10 @@ "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": [ @@ -9778,6 +11794,10 @@ "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": [ @@ -9792,6 +11812,10 @@ "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": [ @@ -9806,6 +11830,10 @@ "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": [ @@ -9820,6 +11848,10 @@ "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": [ @@ -9835,6 +11867,10 @@ "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": [ @@ -9849,6 +11885,10 @@ "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": [ @@ -9863,6 +11903,10 @@ "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": [ @@ -9877,6 +11921,10 @@ "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": [ @@ -9891,6 +11939,10 @@ "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": [ @@ -9905,6 +11957,10 @@ "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": [ @@ -9919,6 +11975,10 @@ "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": [ @@ -9933,6 +11993,10 @@ "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": [ @@ -9947,6 +12011,10 @@ "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": [ @@ -9961,6 +12029,10 @@ "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": [ @@ -9975,6 +12047,10 @@ "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": [ @@ -9989,6 +12065,10 @@ "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": [ @@ -10003,6 +12083,10 @@ "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": [ @@ -10017,6 +12101,10 @@ "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": [ @@ -10032,6 +12120,10 @@ "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": [ @@ -10046,6 +12138,10 @@ "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": [ @@ -10060,6 +12156,10 @@ "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": [ @@ -10074,6 +12174,10 @@ "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": [ @@ -10089,6 +12193,10 @@ "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": [ @@ -10103,6 +12211,10 @@ "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": [ @@ -10117,6 +12229,10 @@ "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": [ @@ -10131,6 +12247,10 @@ "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": [ @@ -10145,6 +12265,10 @@ "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": [ @@ -10159,6 +12283,10 @@ "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": [ @@ -10173,6 +12301,10 @@ "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": [ @@ -10191,6 +12323,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10200,6 +12336,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10209,6 +12349,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10218,6 +12362,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10227,6 +12375,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10236,6 +12388,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10245,6 +12401,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10254,6 +12414,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10263,6 +12427,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -10273,6 +12441,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10282,6 +12454,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10293,6 +12469,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/mac_window_server_killers.browser_tests.filter", "--gtest_shuffle" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 20 @@ -10305,6 +12485,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -10315,6 +12499,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10325,6 +12513,10 @@ "--gtest_filter=-*UsingRealWebcam*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10334,6 +12526,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10343,6 +12539,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10352,6 +12552,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10361,6 +12565,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10370,6 +12578,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10379,6 +12591,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10388,6 +12604,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -10400,6 +12620,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -10410,6 +12634,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10419,6 +12647,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10428,6 +12660,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10437,6 +12673,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10446,6 +12686,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10455,6 +12699,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10464,6 +12712,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10473,6 +12725,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10482,6 +12738,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10491,6 +12751,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10500,6 +12764,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10509,6 +12777,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10518,6 +12790,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10527,6 +12803,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10536,6 +12816,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10545,6 +12829,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10554,6 +12842,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10563,6 +12855,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10572,6 +12868,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -10582,6 +12882,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10591,6 +12895,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10600,6 +12908,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10609,6 +12921,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10618,6 +12934,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10627,6 +12947,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10636,6 +12960,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10645,6 +12973,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10654,6 +12986,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10663,6 +12999,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10672,6 +13012,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10681,6 +13025,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10690,6 +13038,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10699,6 +13051,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10708,6 +13064,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10717,6 +13077,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10726,6 +13090,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10735,6 +13103,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10744,6 +13116,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10753,6 +13129,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10762,6 +13142,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10771,6 +13155,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10780,6 +13168,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10789,6 +13181,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10798,6 +13194,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10807,6 +13207,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10816,6 +13220,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10825,6 +13233,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10834,6 +13246,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10843,6 +13259,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10852,6 +13272,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10861,6 +13285,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10870,6 +13298,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10879,6 +13311,10 @@ "args": [ "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -10988,6 +13424,10 @@ "win-asan": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -10999,6 +13439,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11010,6 +13454,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11021,6 +13469,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11032,6 +13484,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11043,6 +13499,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11054,6 +13514,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11065,6 +13529,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11076,6 +13544,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11087,6 +13559,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -11099,6 +13575,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11110,6 +13590,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11121,6 +13605,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11137,6 +13625,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -11149,6 +13641,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11163,6 +13659,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11174,6 +13674,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11185,6 +13689,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11196,6 +13704,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11207,6 +13719,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11218,6 +13734,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11229,6 +13749,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11240,6 +13764,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11251,6 +13779,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11262,6 +13794,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11273,6 +13809,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11284,6 +13824,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11300,6 +13844,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -11312,6 +13860,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11323,6 +13875,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11334,6 +13890,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11345,6 +13905,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11356,6 +13920,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11367,6 +13935,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11378,6 +13950,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11389,6 +13965,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11400,6 +13980,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11411,6 +13995,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11422,6 +14010,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11433,6 +14025,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11444,6 +14040,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11455,6 +14055,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11466,6 +14070,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11477,6 +14085,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11488,6 +14100,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11499,6 +14115,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11510,6 +14130,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11521,6 +14145,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11532,6 +14160,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11543,6 +14175,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11554,6 +14190,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11566,6 +14206,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11578,6 +14222,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11589,6 +14237,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11600,6 +14252,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11611,6 +14267,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11622,6 +14282,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11633,6 +14297,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11644,6 +14312,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11655,6 +14327,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11666,6 +14342,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11677,6 +14357,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11688,6 +14372,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11699,6 +14387,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11710,6 +14402,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11721,6 +14417,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11732,6 +14432,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11743,6 +14447,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11754,6 +14462,10 @@ "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11765,6 +14477,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11776,6 +14492,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11787,6 +14507,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11798,6 +14522,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11809,6 +14537,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11821,6 +14553,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11832,6 +14568,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11843,6 +14583,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11854,6 +14598,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11865,6 +14613,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11877,6 +14629,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11888,6 +14644,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11899,6 +14659,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11910,6 +14674,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11921,6 +14689,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11932,6 +14704,10 @@ "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11943,6 +14719,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11954,6 +14734,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11965,6 +14749,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11976,6 +14764,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11987,6 +14779,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -11998,6 +14794,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12009,6 +14809,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12020,6 +14824,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12031,6 +14839,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12042,6 +14854,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12053,6 +14869,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -12064,6 +14884,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.swarm.json b/testing/buildbot/chromium.swarm.json index 4952cd4..a86ea63 100644 --- a/testing/buildbot/chromium.swarm.json +++ b/testing/buildbot/chromium.swarm.json
@@ -686,6 +686,10 @@ "Linux Swarm": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -698,6 +702,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -711,6 +719,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -723,6 +735,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -735,6 +751,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -747,6 +767,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -759,6 +783,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -775,12 +803,20 @@ "Mac Swarm": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 2 @@ -788,30 +824,50 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -822,12 +878,20 @@ "Windows Swarm": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 2 @@ -835,30 +899,50 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true },
diff --git a/testing/buildbot/chromium.webrtc.fyi.json b/testing/buildbot/chromium.webrtc.fyi.json index 28d934b..7414f2c 100644 --- a/testing/buildbot/chromium.webrtc.fyi.json +++ b/testing/buildbot/chromium.webrtc.fyi.json
@@ -19,6 +19,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -39,6 +43,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -79,6 +87,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true, @@ -97,6 +109,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -112,6 +128,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -129,6 +149,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true, @@ -145,6 +169,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -157,6 +185,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -172,6 +204,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -211,6 +247,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true, @@ -229,6 +269,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -244,6 +288,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -261,6 +309,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true, @@ -277,6 +329,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -289,6 +345,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -304,6 +364,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -343,6 +407,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true, @@ -361,6 +429,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -376,6 +448,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -393,6 +469,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true, @@ -409,6 +489,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -421,6 +505,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -436,6 +524,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -457,6 +549,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true, @@ -475,6 +571,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -490,6 +590,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -507,6 +611,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true, @@ -523,6 +631,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -535,6 +647,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -550,6 +666,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -571,6 +691,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true, @@ -589,6 +713,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -604,6 +732,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -621,6 +753,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true, @@ -637,6 +773,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -649,6 +789,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -664,6 +808,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/chromium.webrtc.json b/testing/buildbot/chromium.webrtc.json index e9b3caf..acd79ed 100644 --- a/testing/buildbot/chromium.webrtc.json +++ b/testing/buildbot/chromium.webrtc.json
@@ -8,6 +8,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -19,6 +23,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_sequential", "swarming": { "can_use_on_swarming_builders": true @@ -42,6 +50,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true, @@ -59,6 +71,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -76,6 +92,10 @@ "--test-launcher-jobs=1", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -85,6 +105,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -101,6 +125,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_sequential", "swarming": { "can_use_on_swarming_builders": true, @@ -118,6 +146,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true, @@ -133,6 +165,10 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -144,6 +180,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -158,6 +198,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -185,6 +229,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true @@ -197,6 +245,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -209,6 +261,10 @@ "--test-launcher-jobs=1", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -218,6 +274,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -229,6 +289,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_sequential", "swarming": { "can_use_on_swarming_builders": true @@ -241,6 +305,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true @@ -251,12 +319,20 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -266,6 +342,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -288,6 +368,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true @@ -300,6 +384,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -312,6 +400,10 @@ "--test-launcher-jobs=1", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -321,6 +413,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -332,6 +428,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_sequential", "swarming": { "can_use_on_swarming_builders": true @@ -344,6 +444,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true @@ -354,12 +458,20 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -369,6 +481,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -384,6 +500,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true @@ -396,6 +516,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -408,6 +532,10 @@ "--test-launcher-jobs=1", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -417,6 +545,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -428,6 +560,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_sequential", "swarming": { "can_use_on_swarming_builders": true @@ -440,6 +576,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true @@ -450,12 +590,20 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -465,6 +613,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -480,6 +632,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "browser_tests_functional", "swarming": { "can_use_on_swarming_builders": true @@ -492,6 +648,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -504,6 +664,10 @@ "--test-launcher-jobs=1", "--test-launcher-print-test-stdio=always" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -513,6 +677,10 @@ "args": [ "--gtest_filter=WebRtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -524,6 +692,10 @@ "--run-manual", "--test-launcher-jobs=1" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_sequential", "swarming": { "can_use_on_swarming_builders": true @@ -536,6 +708,10 @@ "--run-manual", "--ui-test-action-max-timeout=120000" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "content_browsertests_stress", "swarming": { "can_use_on_swarming_builders": true @@ -546,12 +722,20 @@ "args": [ "--test-launcher-filter-file=../../testing/buildbot/filters/webrtc.content_unittests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -561,6 +745,10 @@ "args": [ "--gtest_filter=Webrtc*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true },
diff --git a/testing/buildbot/chromium.win.json b/testing/buildbot/chromium.win.json index dd3a75cb..1abe0fcb 100644 --- a/testing/buildbot/chromium.win.json +++ b/testing/buildbot/chromium.win.json
@@ -31,72 +31,120 @@ "Win 7 Tests x64 (1)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 10 @@ -108,6 +156,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -115,6 +167,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -124,72 +180,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -201,6 +305,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -208,138 +316,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -351,6 +551,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -358,126 +562,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -489,30 +777,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -524,108 +832,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -768,6 +1148,10 @@ "Win10 Tests x64": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -780,6 +1164,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -792,6 +1180,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -804,6 +1196,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -816,6 +1212,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -828,6 +1228,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -840,6 +1244,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -852,6 +1260,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -864,6 +1276,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -876,6 +1292,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -889,6 +1309,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -901,6 +1325,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -916,6 +1344,10 @@ "args": [ "--disable-features=WebRTC-H264WithOpenH264FFmpeg" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -933,6 +1365,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -946,6 +1382,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -961,6 +1401,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -973,6 +1417,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -985,6 +1433,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -997,6 +1449,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1009,6 +1465,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1021,6 +1481,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1033,6 +1497,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1045,6 +1513,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1057,6 +1529,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1069,6 +1545,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1081,6 +1561,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1096,6 +1580,10 @@ "args": [ "--disable-features=WebRTC-H264WithOpenH264FFmpeg" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1113,6 +1601,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -1126,6 +1618,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1138,6 +1634,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1150,6 +1650,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1162,6 +1666,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1174,6 +1682,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1186,6 +1698,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1198,6 +1714,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1210,6 +1730,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1222,6 +1746,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1234,6 +1762,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1246,6 +1778,10 @@ "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1258,6 +1794,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1270,6 +1810,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1282,6 +1826,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1294,6 +1842,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1306,6 +1858,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1318,6 +1874,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1330,6 +1890,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1342,6 +1906,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1354,6 +1922,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1366,6 +1938,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1378,6 +1954,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1390,6 +1970,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1403,6 +1987,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1416,6 +2004,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1428,6 +2020,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1440,6 +2036,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1452,6 +2052,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1464,6 +2068,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1476,6 +2084,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1488,6 +2100,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1500,6 +2116,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1512,6 +2132,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1524,6 +2148,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1536,6 +2164,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1548,6 +2180,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1560,6 +2196,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1572,6 +2212,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1584,6 +2228,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1596,6 +2244,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1608,6 +2260,10 @@ "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1620,6 +2276,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1632,6 +2292,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1644,6 +2308,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1656,6 +2324,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1668,6 +2340,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1681,6 +2357,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1693,6 +2373,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1705,6 +2389,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1717,6 +2405,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1729,6 +2421,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1742,6 +2438,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1754,6 +2454,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1766,6 +2470,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1778,6 +2486,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1790,6 +2502,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1803,6 +2519,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1815,6 +2535,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1827,6 +2551,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1839,6 +2567,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1851,6 +2583,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1863,6 +2599,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1875,6 +2615,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1887,6 +2631,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1899,6 +2647,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1911,6 +2663,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1923,6 +2679,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1935,6 +2695,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2116,6 +2880,10 @@ "Win10 Tests x64 (dbg)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2128,6 +2896,10 @@ "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2140,6 +2912,10 @@ "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2152,6 +2928,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2164,6 +2944,10 @@ "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2176,6 +2960,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2188,6 +2976,10 @@ "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2200,6 +2992,10 @@ "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2212,6 +3008,10 @@ "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2224,6 +3024,10 @@ "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -2237,6 +3041,10 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2249,6 +3057,10 @@ "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2261,6 +3073,10 @@ "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2276,6 +3092,10 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2288,6 +3108,10 @@ "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2300,6 +3124,10 @@ "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2312,6 +3140,10 @@ "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2324,6 +3156,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2336,6 +3172,10 @@ "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2348,6 +3188,10 @@ "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2360,6 +3204,10 @@ "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2372,6 +3220,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2384,6 +3236,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2396,6 +3252,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2412,6 +3272,10 @@ "--disable-features=WebRTC-H264WithOpenH264FFmpeg" ], "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2429,6 +3293,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -2442,6 +3310,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2454,6 +3326,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2466,6 +3342,10 @@ "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2478,6 +3358,10 @@ "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2490,6 +3374,10 @@ "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2502,6 +3390,10 @@ "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2514,6 +3406,10 @@ "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2526,6 +3422,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2538,6 +3438,10 @@ "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2550,6 +3454,10 @@ "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2563,6 +3471,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2575,6 +3487,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2587,6 +3503,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2599,6 +3519,10 @@ "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2611,6 +3535,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2623,6 +3551,10 @@ "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2635,6 +3567,10 @@ "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2647,6 +3583,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2659,6 +3599,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2671,6 +3615,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2683,6 +3631,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2695,6 +3647,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2707,6 +3663,10 @@ "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2721,6 +3681,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2734,6 +3698,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2746,6 +3714,10 @@ "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2758,6 +3730,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2770,6 +3746,10 @@ "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2782,6 +3762,10 @@ "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2794,6 +3778,10 @@ "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2806,6 +3794,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2818,6 +3810,10 @@ "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2830,6 +3826,10 @@ "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2842,6 +3842,10 @@ "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2854,6 +3858,10 @@ "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2866,6 +3874,10 @@ "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2878,6 +3890,10 @@ "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2890,6 +3906,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2902,6 +3922,10 @@ "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2914,6 +3938,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2926,6 +3954,10 @@ "test": "notification_helper_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2938,6 +3970,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2950,6 +3986,10 @@ "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2962,6 +4002,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2974,6 +4018,10 @@ "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2986,6 +4034,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2999,6 +4051,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3011,6 +4067,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3023,6 +4083,10 @@ "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3035,6 +4099,10 @@ "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3047,6 +4115,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3060,6 +4132,10 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3072,6 +4148,10 @@ "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3084,6 +4164,10 @@ "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3096,6 +4180,10 @@ "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3108,6 +4196,10 @@ "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3121,6 +4213,10 @@ }, { "experiment_percentage": 100, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3133,6 +4229,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3145,6 +4245,10 @@ "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3157,6 +4261,10 @@ "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3169,6 +4277,10 @@ "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3181,6 +4293,10 @@ "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3193,6 +4309,10 @@ "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3205,6 +4325,10 @@ "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3217,6 +4341,10 @@ "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3229,6 +4357,10 @@ "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3241,6 +4373,10 @@ "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3253,6 +4389,10 @@ "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3265,6 +4405,10 @@ "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3454,6 +4598,10 @@ "Win7 (32) Tests": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3466,6 +4614,10 @@ "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3479,6 +4631,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3492,6 +4648,10 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3504,6 +4664,10 @@ "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3520,72 +4684,120 @@ "Win7 Tests (1)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 15 @@ -3597,6 +4809,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -3604,6 +4820,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -3613,72 +4833,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -3690,6 +4958,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -3697,138 +4969,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3840,6 +5204,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 3 @@ -3847,126 +5215,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3978,30 +5430,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4013,108 +5485,180 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -4270,60 +5814,100 @@ "Win7 Tests (dbg)(1)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "accessibility_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "angle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "aura_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_fuzzer_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_heap_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "blink_platform_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true @@ -4331,18 +5915,30 @@ "test": "blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_crypto_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "boringssl_ssl_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 20 @@ -4354,6 +5950,10 @@ "--disable-blink-features=HTMLImports,ShadowDOMV0,CustomElementsV0", "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true @@ -4361,6 +5961,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -4370,72 +5974,120 @@ "args": [ "--gtest_filter=-*UsingRealWebcam*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "capture_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cast_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cc_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_cleaner_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_import_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chrome_elf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 6 @@ -4447,6 +6099,10 @@ "--disable-perfetto", "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true @@ -4454,138 +6110,230 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "courgette_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crashpad_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "cronet_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "crypto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "display_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "elevation_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "events_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "filesystem_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gcp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gfx_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "install_static_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4597,6 +6345,10 @@ "test": "installer_util_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 4 @@ -4604,126 +6356,210 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ipc_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "latency_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "leveldb_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "libjingle_xmpp_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_service_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "media_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "message_center_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "midi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_core_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "mojo_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "native_theme_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "perfetto_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "printing_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4735,30 +6571,50 @@ "test": "sbox_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sbox_validation_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "service_manager_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -4770,36 +6626,60 @@ "test": "setup_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "shell_dialogs_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "skia_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "snapshot_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "sql_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "storage_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "shards": 2 @@ -4807,72 +6687,120 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "traffic_annotation_auditor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_base_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "ui_touch_selection_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "url_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "views_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "viz_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_common_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "vr_pixeltests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wm_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "wtf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true },
diff --git a/testing/buildbot/client.v8.chromium.json b/testing/buildbot/client.v8.chromium.json index 889b8b9..25e7cfcb 100644 --- a/testing/buildbot/client.v8.chromium.json +++ b/testing/buildbot/client.v8.chromium.json
@@ -4,6 +4,10 @@ "Linux - Future": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -15,6 +19,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -27,6 +35,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -38,6 +50,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -49,6 +65,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -60,6 +80,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -71,6 +95,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -82,6 +110,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -93,6 +125,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -104,6 +140,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -115,6 +155,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -126,6 +170,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -137,6 +185,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -148,6 +200,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -159,6 +215,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -170,6 +230,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -181,6 +245,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -192,6 +260,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -203,6 +275,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -214,6 +290,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -225,6 +305,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -236,6 +320,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -247,6 +335,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -258,6 +350,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -269,6 +365,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -280,6 +380,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -291,6 +395,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -302,6 +410,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -313,6 +425,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -414,6 +530,10 @@ "Linux - Future (dbg)": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -425,6 +545,10 @@ "test": "app_shell_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -437,6 +561,10 @@ "test": "browser_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -448,6 +576,10 @@ "test": "chrome_app_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -459,6 +591,10 @@ "test": "chromedriver_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -470,6 +606,10 @@ "test": "components_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -481,6 +621,10 @@ "test": "components_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -492,6 +636,10 @@ "test": "compositor_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -503,6 +651,10 @@ "test": "content_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -514,6 +666,10 @@ "test": "content_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -525,6 +681,10 @@ "test": "device_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -536,6 +696,10 @@ "test": "extensions_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -547,6 +711,10 @@ "test": "extensions_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -558,6 +726,10 @@ "test": "gcm_unit_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -569,6 +741,10 @@ "test": "gin_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -580,6 +756,10 @@ "test": "google_apis_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -591,6 +771,10 @@ "test": "gpu_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -602,6 +786,10 @@ "test": "headless_browsertests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -613,6 +801,10 @@ "test": "headless_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -625,6 +817,10 @@ "test": "interactive_ui_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -636,6 +832,10 @@ "test": "jingle_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -647,6 +847,10 @@ "test": "media_blink_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -658,6 +862,10 @@ "test": "nacl_loader_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -669,6 +877,10 @@ "test": "net_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -680,6 +892,10 @@ "test": "pdf_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -691,6 +907,10 @@ "test": "ppapi_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -702,6 +922,10 @@ "test": "remoting_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -713,6 +937,10 @@ "test": "services_unittests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -724,6 +952,10 @@ "test": "sync_integration_tests" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/buildbot/client.v8.fyi.json b/testing/buildbot/client.v8.fyi.json index 5030000..60439108 100644 --- a/testing/buildbot/client.v8.fyi.json +++ b/testing/buildbot/client.v8.fyi.json
@@ -1086,6 +1086,10 @@ "args": [ "--enable-blink-features=LayoutNG" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests_ng", "swarming": { "can_use_on_swarming_builders": true,
diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py index d41c730..56180056 100755 --- a/testing/buildbot/generate_buildbot_json.py +++ b/testing/buildbot/generate_buildbot_json.py
@@ -524,6 +524,14 @@ result = self.update_and_cleanup_test( result, test_name, tester_name, tester_config, waterfall) self.add_common_test_properties(result, tester_config) + + if not result.get('merge'): + # TODO(https://crbug.com/958376): Consider adding the ability to not have + # this default. + result['merge'] = { + 'script': '//testing/merge_scripts/standard_gtest_merge.py', + 'args': [], + } return result def generate_isolated_script_test(self, waterfall, tester_name, tester_config,
diff --git a/testing/buildbot/generate_buildbot_json_unittest.py b/testing/buildbot/generate_buildbot_json_unittest.py index 937e85f2..86023cf 100755 --- a/testing/buildbot/generate_buildbot_json_unittest.py +++ b/testing/buildbot/generate_buildbot_json_unittest.py
@@ -883,12 +883,20 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, "test": "bar_test" }, { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -909,6 +917,10 @@ "args": [ "--this-is-an-argument" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -918,6 +930,10 @@ "args": [ "--this-is-an-argument" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -935,6 +951,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -949,6 +969,10 @@ "args": [ "--variation" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "variation_test", "swarming": { "can_use_on_swarming_builders": true, @@ -972,6 +996,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -993,6 +1021,10 @@ "--c_arg", "--bar" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1019,6 +1051,10 @@ "args": [ "--no-xvfb" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -1039,6 +1075,10 @@ "args": [ "--enable-features=Foo,Bar,Baz" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -1059,6 +1099,10 @@ "args": [ "--bar" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1365,6 +1409,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -1405,6 +1453,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "cipd_packages": [ @@ -1431,6 +1483,10 @@ "Fake Android M Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": false }, @@ -1448,6 +1504,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1484,6 +1544,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2603,6 +2667,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2627,6 +2695,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2651,6 +2723,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2675,6 +2751,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2703,6 +2783,10 @@ "--c_arg", "--mixin-argument" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true }, @@ -2720,6 +2804,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -2745,6 +2833,10 @@ "Fake Tester": { "gtest_tests": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -3045,6 +3137,10 @@ "gtest_tests": [ { "test": "foo_test", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": False } @@ -3059,6 +3155,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "cipd_packages": [ { @@ -3088,6 +3188,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "cipd_packages": [ { @@ -3123,6 +3227,10 @@ TEST_QUERY_BOTS_TESTS_OUTPUT = { "Fake Android M Tester": [ { + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "test": "foo_test", "swarming": { "can_use_on_swarming_builders": False @@ -3136,6 +3244,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "cipd_packages": [ { @@ -3162,6 +3274,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "cipd_packages": [ { @@ -3196,10 +3312,16 @@ "additional_compile_targets": ["bar_test"], "gtest_tests": [ { - "test": "foo_test", "args": [ + "test": "foo_test", + "args": [ "--gs-results-bucket=chromium-result-details", "--recover-devices" - ], "swarming": { + ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, + "swarming": { "cipd_packages": [ { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -3234,6 +3356,10 @@ "--gs-results-bucket=chromium-result-details", "--recover-devices" ], + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "cipd_packages": [ {
diff --git a/testing/buildbot/tryserver.chromium.linux.json b/testing/buildbot/tryserver.chromium.linux.json index 390492f5..d0cc871 100644 --- a/testing/buildbot/tryserver.chromium.linux.json +++ b/testing/buildbot/tryserver.chromium.linux.json
@@ -5,6 +5,10 @@ "gtest_tests": [ { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -17,6 +21,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -29,6 +37,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -41,6 +53,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -53,6 +69,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -65,6 +85,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -77,6 +101,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -89,6 +117,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -101,6 +133,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -113,6 +149,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webkit_unit_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -126,6 +166,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -138,6 +182,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -150,6 +198,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -167,6 +219,10 @@ "--test-launcher-filter-file=../../testing/buildbot/filters/webui_html_imports_polyfill_browser_tests.filter" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "webui_html_imports_polyfill_browser_tests", "swarming": { "can_use_on_swarming_builders": true, @@ -180,6 +236,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -195,6 +255,10 @@ "--gtest_filter=-*UsingRealWebcam*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -207,6 +271,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -219,6 +287,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -231,6 +303,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -243,6 +319,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -255,6 +335,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -267,6 +351,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -279,6 +367,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -291,6 +383,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -308,6 +404,10 @@ "--gtest_filter=TracingControllerTest.*:BackgroundTracingManagerBrowserTest.*" ], "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "name": "nonperfetto_content_browsertests", "swarming": { "can_use_on_swarming_builders": true, @@ -321,6 +421,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -333,6 +437,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -345,6 +453,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -357,6 +469,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -369,6 +485,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -381,6 +501,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -393,6 +517,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -405,6 +533,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -417,6 +549,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -429,6 +565,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -441,6 +581,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -453,6 +597,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -465,6 +613,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -477,6 +629,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -489,6 +645,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -501,6 +661,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -513,6 +677,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -525,6 +693,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -537,6 +709,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -550,6 +726,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -562,6 +742,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -574,6 +758,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -586,6 +774,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -598,6 +790,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -610,6 +806,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -622,6 +822,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -634,6 +838,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -646,6 +854,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -658,6 +870,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -670,6 +886,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -682,6 +902,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -694,6 +918,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -706,6 +934,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -718,6 +950,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -730,6 +966,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -742,6 +982,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -754,6 +998,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -766,6 +1014,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -778,6 +1030,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -790,6 +1046,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -802,6 +1062,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -814,6 +1078,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -826,6 +1094,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -838,6 +1110,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -850,6 +1126,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -862,6 +1142,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -874,6 +1158,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -886,6 +1174,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -898,6 +1190,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -910,6 +1206,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -922,6 +1222,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -934,6 +1238,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -946,6 +1254,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -958,6 +1270,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -970,6 +1286,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -982,6 +1302,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -994,6 +1318,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1006,6 +1334,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1018,6 +1350,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [ @@ -1030,6 +1366,10 @@ }, { "isolate_coverage_data": true, + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_gtest_merge.py" + }, "swarming": { "can_use_on_swarming_builders": true, "dimension_sets": [
diff --git a/testing/libfuzzer/libprotobuf-mutator.md b/testing/libfuzzer/libprotobuf-mutator.md index 9f840ba..982bf37 100644 --- a/testing/libfuzzer/libprotobuf-mutator.md +++ b/testing/libfuzzer/libprotobuf-mutator.md
@@ -1,4 +1,4 @@ -# Getting Started with libprotobuf-mutator in Chromium +# Getting Started with libprotobuf-mutator (LPM) in Chromium *** note **Note:** Writing grammar fuzzers with libprotobuf-mutator requires greater
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom index 8acc8fd..39eefa27 100644 --- a/third_party/blink/public/mojom/web_feature/web_feature.mojom +++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2280,6 +2280,10 @@ kWebShareSuccessfulWithoutFiles = 2873, kWebShareUnsuccessfulContainingFiles = 2874, kWebShareUnsuccessfulWithoutFiles = 2875, + kVerticalScrollbarThumbScrollingWithMouse = 2876, + kVerticalScrollbarThumbScrollingWithTouch = 2877, + kHorizontalScrollbarThumbScrollingWithMouse = 2878, + kHorizontalScrollbarThumbScrollingWithTouch = 2879, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h index a2fdbaf7..2804a5e4 100644 --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -237,6 +237,7 @@ bool); BLINK_PLATFORM_EXPORT static void EnableIdleDetection(bool); BLINK_PLATFORM_EXPORT static void EnableSkipTouchEventFilter(bool); + BLINK_PLATFORM_EXPORT static void EnableStaleWhileRevalidate(bool); private: WebRuntimeFeatures();
diff --git a/third_party/blink/renderer/core/css/style_engine_test.cc b/third_party/blink/renderer/core/css/style_engine_test.cc index 3786273..967060c1 100644 --- a/third_party/blink/renderer/core/css/style_engine_test.cc +++ b/third_party/blink/renderer/core/css/style_engine_test.cc
@@ -1689,7 +1689,7 @@ Element* d3 = GetDocument().getElementById("d3"); FirstLetterPseudoElement* fl1 = - ToFirstLetterPseudoElement(d1->GetPseudoElement(kPseudoIdFirstLetter)); + To<FirstLetterPseudoElement>(d1->GetPseudoElement(kPseudoIdFirstLetter)); EXPECT_TRUE(fl1); GetDocument().getElementById("f1")->firstChild()->remove(); @@ -1702,10 +1702,10 @@ UpdateAllLifecyclePhases(); EXPECT_FALSE( - ToFirstLetterPseudoElement(d1->GetPseudoElement(kPseudoIdFirstLetter))); + To<FirstLetterPseudoElement>(d1->GetPseudoElement(kPseudoIdFirstLetter))); FirstLetterPseudoElement* fl2 = - ToFirstLetterPseudoElement(d2->GetPseudoElement(kPseudoIdFirstLetter)); + To<FirstLetterPseudoElement>(d2->GetPseudoElement(kPseudoIdFirstLetter)); EXPECT_TRUE(fl2); GetDocument().getElementById("f2")->firstChild()->remove(); @@ -1718,10 +1718,10 @@ UpdateAllLifecyclePhases(); EXPECT_FALSE( - ToFirstLetterPseudoElement(d2->GetPseudoElement(kPseudoIdFirstLetter))); + To<FirstLetterPseudoElement>(d2->GetPseudoElement(kPseudoIdFirstLetter))); FirstLetterPseudoElement* fl3 = - ToFirstLetterPseudoElement(d3->GetPseudoElement(kPseudoIdFirstLetter)); + To<FirstLetterPseudoElement>(d3->GetPseudoElement(kPseudoIdFirstLetter)); EXPECT_TRUE(fl3); Element* f3 = GetDocument().getElementById("f3"); @@ -1734,7 +1734,8 @@ EXPECT_TRUE(fl3->NeedsStyleRecalc()); UpdateAllLifecyclePhases(); - fl3 = ToFirstLetterPseudoElement(d3->GetPseudoElement(kPseudoIdFirstLetter)); + fl3 = + To<FirstLetterPseudoElement>(d3->GetPseudoElement(kPseudoIdFirstLetter)); EXPECT_TRUE(fl3); EXPECT_EQ(f3->lastChild()->GetLayoutObject(), fl3->RemainingTextLayoutObject());
diff --git a/third_party/blink/renderer/core/dom/element.cc b/third_party/blink/renderer/core/dom/element.cc index 7c75243..9d4c1485 100644 --- a/third_party/blink/renderer/core/dom/element.cc +++ b/third_party/blink/renderer/core/dom/element.cc
@@ -4259,11 +4259,11 @@ bool text_node_changed = remaining_text_layout_object != - ToFirstLetterPseudoElement(element)->RemainingTextLayoutObject(); + To<FirstLetterPseudoElement>(element)->RemainingTextLayoutObject(); if (phase == StyleUpdatePhase::kAttachLayoutTree) { // RemainingTextLayoutObject should have been cleared from DetachLayoutTree. - DCHECK(!ToFirstLetterPseudoElement(element)->RemainingTextLayoutObject()); + DCHECK(!To<FirstLetterPseudoElement>(element)->RemainingTextLayoutObject()); DCHECK(text_node_changed); scoped_refptr<ComputedStyle> pseudo_style = element->StyleForLayoutObject(); if (PseudoElementLayoutObjectIsNeeded(pseudo_style.get()))
diff --git a/third_party/blink/renderer/core/dom/first_letter_pseudo_element.h b/third_party/blink/renderer/core/dom/first_letter_pseudo_element.h index 1f44ca05..97118953 100644 --- a/third_party/blink/renderer/core/dom/first_letter_pseudo_element.h +++ b/third_party/blink/renderer/core/dom/first_letter_pseudo_element.h
@@ -28,6 +28,7 @@ #include "base/macros.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/pseudo_element.h" +#include "third_party/blink/renderer/platform/wtf/casting.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" namespace blink { @@ -64,8 +65,17 @@ DISALLOW_COPY_AND_ASSIGN(FirstLetterPseudoElement); }; -DEFINE_ELEMENT_TYPE_CASTS(FirstLetterPseudoElement, - IsFirstLetterPseudoElement()); +template <> +inline bool IsElementOfType<const FirstLetterPseudoElement>(const Node& node) { + return node.IsFirstLetterPseudoElement(); +} + +template <> +struct DowncastTraits<FirstLetterPseudoElement> { + static bool AllowFrom(const Node& node) { + return node.IsFirstLetterPseudoElement(); + } +}; } // namespace blink
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc index 1afc957..bd41cde 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.cc +++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -3942,7 +3942,7 @@ // Don't throttle display:none frames (see updateRenderThrottlingStatus). HTMLFrameOwnerElement* owner_element = frame_->DeprecatedLocalOwner(); - if (hidden_for_throttling_ && owner_element && + if (IsHiddenForThrottling() && owner_element && !owner_element->GetLayoutObject()) { // No need to notify children because descendants of display:none frames // should remain throttled. @@ -3976,11 +3976,8 @@ // Note that we disallow throttling of 0x0 and display:none frames because // some sites use them to drive UI logic. - hidden_for_throttling_ = hidden && !Size().IsEmpty(); + hidden_for_throttling_ = hidden; subtree_throttled_ = subtree_throttled; - HTMLFrameOwnerElement* owner_element = frame_->DeprecatedLocalOwner(); - if (owner_element) - hidden_for_throttling_ &= !!owner_element->GetLayoutObject(); bool is_throttled = CanThrottleRendering(); bool became_unthrottled = was_throttled && !is_throttled; @@ -4040,7 +4037,7 @@ } if (FrameScheduler* frame_scheduler = frame_->GetFrameScheduler()) { - frame_scheduler->SetFrameVisible(!hidden_for_throttling_); + frame_scheduler->SetFrameVisible(!IsHiddenForThrottling()); frame_scheduler->SetCrossOrigin(frame_->IsCrossOriginSubframe()); frame_scheduler->TraceUrlChange(frame_->GetDocument()->Url().GetString()); } @@ -4137,7 +4134,22 @@ // cross-origin frames must already communicate with asynchronous messages, // so they should be able to tolerate some delay in receiving replies from a // throttled peer. - return hidden_for_throttling_ && frame_->IsCrossOriginSubframe(); + return IsHiddenForThrottling() && frame_->IsCrossOriginSubframe(); +} + +bool LocalFrameView::IsHiddenForThrottling() const { + // TODO(szager): hidden_for_throttling_ has a different meaning depending on + // whether this frame has a remote parent (i.e, if it's OOPIF). In the OOPIF + // case, it means "non-zero sized AND not display:none AND scrolled out of the + // parent document's viewport." For the non-OOPIF case, it just means + // "scrolled out of the parent document's viewport." Fixing this will + // require some moderately complex refactoring of render throttling. + if (!hidden_for_throttling_) + return false; + HTMLFrameOwnerElement* owner_element = frame_->DeprecatedLocalOwner(); + if (owner_element) + return !Size().IsEmpty() && !!owner_element->GetLayoutObject(); + return true; } void LocalFrameView::BeginLifecycleUpdates() { @@ -4157,7 +4169,6 @@ } SetupRenderThrottling(); - UpdateRenderThrottlingStatus(hidden_for_throttling_, subtree_throttled_); // The compositor will "defer commits" for the main frame until we // explicitly request them.
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.h b/third_party/blink/renderer/core/frame/local_frame_view.h index 788f603..04b368e 100644 --- a/third_party/blink/renderer/core/frame/local_frame_view.h +++ b/third_party/blink/renderer/core/frame/local_frame_view.h
@@ -608,7 +608,7 @@ // Returns true if this frame could potentially skip rendering and avoid // scheduling visual updates. bool CanThrottleRendering() const; - bool IsHiddenForThrottling() const { return hidden_for_throttling_; } + bool IsHiddenForThrottling() const; void SetupRenderThrottling(); void BeginLifecycleUpdates();
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc index 1a1fc054..bbeaed0 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -888,10 +888,8 @@ if (GetTextFinder()) GetTextFinder()->ClearActiveFindMatch(); - GetFrame()->Loader().StartNavigation( - FrameLoadRequest(nullptr, request, /*frame_name=*/AtomicString(), - kCheckContentSecurityPolicy), - frame_load_type); + GetFrame()->Loader().StartNavigation(FrameLoadRequest(nullptr, request), + frame_load_type); } void WebLocalFrameImpl::ReloadImage(const WebNode& web_node) { @@ -918,9 +916,7 @@ GetTextFinder()->ClearActiveFindMatch(); GetFrame()->Loader().StartNavigation( - FrameLoadRequest(nullptr, request.ToResourceRequest(), - /*frame_name=*/AtomicString(), - kCheckContentSecurityPolicy), + FrameLoadRequest(nullptr, request.ToResourceRequest()), WebFrameLoadType::kStandard); }
diff --git a/third_party/blink/renderer/core/html/html_frame_owner_element.cc b/third_party/blink/renderer/core/html/html_frame_owner_element.cc index 8836bb5b..17c94ad 100644 --- a/third_party/blink/renderer/core/html/html_frame_owner_element.cc +++ b/third_party/blink/renderer/core/html/html_frame_owner_element.cc
@@ -478,14 +478,8 @@ } } - ContentSecurityPolicyDisposition content_security_policy_disposition = - ContentSecurityPolicy::ShouldBypassMainWorld(&GetDocument()) - ? kDoNotCheckContentSecurityPolicy - : kCheckContentSecurityPolicy; child_frame->Loader().StartNavigation( - FrameLoadRequest(&GetDocument(), request, AtomicString(), - content_security_policy_disposition), - child_load_type); + FrameLoadRequest(&GetDocument(), request), child_load_type); return true; } @@ -554,12 +548,18 @@ } void HTMLFrameOwnerElement::StartVisibilityObserver() { - if (visibility_observer_) - return; - visibility_observer_ = IntersectionObserver::Create( - {}, {IntersectionObserver::kMinimumThreshold}, &GetDocument(), - WTF::BindRepeating(&HTMLFrameOwnerElement::OnViewportIntersectionChanged, - WrapWeakPersistent(this))); + // When this method is called, it indicates that the caller wants to receive + // a notification at the next opportunity, even if nothing has changed. + // Un-observing and then re-observing will accomplish that. + if (visibility_observer_) { + visibility_observer_->unobserve(this); + } else { + visibility_observer_ = IntersectionObserver::Create( + {}, {IntersectionObserver::kMinimumThreshold}, &GetDocument(), + WTF::BindRepeating( + &HTMLFrameOwnerElement::OnViewportIntersectionChanged, + WrapWeakPersistent(this))); + } visibility_observer_->observe(this); }
diff --git a/third_party/blink/renderer/core/inspector/devtools_session.cc b/third_party/blink/renderer/core/inspector/devtools_session.cc index 6435384..505c0303 100644 --- a/third_party/blink/renderer/core/inspector/devtools_session.cc +++ b/third_party/blink/renderer/core/inspector/devtools_session.cc
@@ -20,10 +20,13 @@ #include "third_party/blink/renderer/platform/heap/persistent.h" #include "third_party/blink/renderer/platform/web_test_support.h" #include "third_party/blink/renderer/platform/wtf/text/string_utf8_adaptor.h" +#include "third_party/inspector_protocol/encoding/encoding.h" namespace blink { namespace { +using ::inspector_protocol_encoding::SpanFrom; +using ::inspector_protocol_encoding::cbor::IsCBORMessage; const char kV8StateKey[] = "v8"; bool ShouldInterruptForMethod(const String& method) { // Keep in sync with DevToolsSession::ShouldSendOnIO. @@ -34,6 +37,7 @@ method == "Debugger.setBreakpointsActive" || method == "Performance.getMetrics" || method == "Page.crash" || method == "Runtime.terminateExecution" || + method == "Debugger.getStackTrace" || method == "Emulation.setScriptExecutionDisabled"; } @@ -58,18 +62,13 @@ } protocol::ProtocolMessage ToProtocolMessage( - std::unique_ptr<v8_inspector::StringBuffer> buffer, - bool binary) { + std::unique_ptr<v8_inspector::StringBuffer> buffer) { protocol::ProtocolMessage message; - if (binary) { - const auto& string = buffer->string(); - DCHECK(string.is8Bit()); - // TODO: add StringBuffer::takeBytes(). - message.binary = std::vector<uint8_t>( - string.characters8(), string.characters8() + string.length()); - } else { - message.json = ToCoreString(buffer->string()); - } + const auto& string = buffer->string(); + DCHECK(string.is8Bit()); + // TODO: add StringBuffer::takeBytes(). + message.binary = std::vector<uint8_t>(string.characters8(), + string.characters8() + string.length()); return message; } @@ -135,8 +134,7 @@ inspector_backend_dispatcher_(new protocol::UberDispatcher(this)), session_state_(std::move(reattach_session_state)), v8_session_state_(kV8StateKey), - v8_session_state_json_(&v8_session_state_, /*default_value=*/String()), - uses_binary_protocol_(&v8_session_state_, false) { + v8_session_state_json_(&v8_session_state_, /*default_value=*/String()) { io_session_ = new IOSession(agent_->io_task_runner_, agent_->inspector_task_runner_, WrapCrossThreadWeakPersistent(this), std::move(io_request)); @@ -208,9 +206,7 @@ void DevToolsSession::DispatchProtocolCommandImpl(int call_id, const String& method, std::vector<uint8_t> data) { - bool binary_protocol = !data.empty() && data[0] == 0xD8; - if (binary_protocol) - uses_binary_protocol_.Set(true); + DCHECK(IsCBORMessage(SpanFrom(data))); // IOSession does not provide ordering guarantees relative to // Session, so a command may come to IOSession after Session is detached, @@ -227,24 +223,12 @@ agent_->client_->DebuggerTaskStarted(); if (v8_inspector::V8InspectorSession::canDispatchMethod( ToV8InspectorStringView(method))) { - if (binary_protocol) { - // Binary protocol messages are passed using 8-bit StringView. - v8_session_->dispatchProtocolMessage( - v8_inspector::StringView(data.data(), data.size())); - } else { - String message = WTF::String::FromUTF8( - reinterpret_cast<const char*>(data.data()), data.size()); - v8_session_->dispatchProtocolMessage(ToV8InspectorStringView(message)); - } + // Binary protocol messages are passed using 8-bit StringView. + v8_session_->dispatchProtocolMessage( + v8_inspector::StringView(data.data(), data.size())); } else { - std::unique_ptr<protocol::Value> value; - if (binary_protocol) { - value = protocol::Value::parseBinary(data.data(), data.size()); - } else { - String message = WTF::String::FromUTF8( - reinterpret_cast<const char*>(data.data()), data.size()); - value = protocol::StringUtil::parseJSON(message); - } + std::unique_ptr<protocol::Value> value = + protocol::Value::parseBinary(data.data(), data.size()); // Don't pass protocol message further - there is no passthrough. inspector_backend_dispatcher_->dispatch(call_id, method, std::move(value), protocol::ProtocolMessage()); @@ -274,8 +258,7 @@ void DevToolsSession::sendProtocolResponse( int call_id, std::unique_ptr<protocol::Serializable> message) { - SendProtocolResponse(call_id, - message->serialize(uses_binary_protocol_.Get())); + SendProtocolResponse(call_id, message->serialize(/*binary=*/true)); } void DevToolsSession::fallThrough(int call_id, @@ -291,8 +274,7 @@ // We can potentially avoid copies if WebString would convert to utf8 right // from StringView, but it uses StringImpl itself, so we don't create any // extra copies here. - SendProtocolResponse(call_id, ToProtocolMessage(std::move(message), - uses_binary_protocol_.Get())); + SendProtocolResponse(call_id, ToProtocolMessage(std::move(message))); } void DevToolsSession::SendProtocolResponse( @@ -332,13 +314,13 @@ std::unique_ptr<v8_inspector::StringBuffer> notification) : v8_notification_(std::move(notification)) {} - mojom::blink::DevToolsMessagePtr Serialize(bool binary) { + mojom::blink::DevToolsMessagePtr Serialize() { protocol::ProtocolMessage serialized; if (blink_notification_) { - serialized = blink_notification_->serialize(binary); + serialized = blink_notification_->serialize(/*binary=*/true); blink_notification_.reset(); } else if (v8_notification_) { - serialized = ToProtocolMessage(std::move(v8_notification_), binary); + serialized = ToProtocolMessage(std::move(v8_notification_)); v8_notification_.reset(); } return WrapMessage(std::move(serialized)); @@ -375,8 +357,7 @@ if (v8_session_) v8_session_state_json_.Set(ToCoreString(v8_session_->stateJSON())); for (wtf_size_t i = 0; i < notification_queue_.size(); ++i) { - auto serialized = - notification_queue_[i]->Serialize(uses_binary_protocol_.Get()); + auto serialized = notification_queue_[i]->Serialize(); host_ptr_->DispatchProtocolNotification(std::move(serialized), session_state_.TakeUpdates()); }
diff --git a/third_party/blink/renderer/core/inspector/devtools_session.h b/third_party/blink/renderer/core/inspector/devtools_session.h index 388f64676..8b91b32 100644 --- a/third_party/blink/renderer/core/inspector/devtools_session.h +++ b/third_party/blink/renderer/core/inspector/devtools_session.h
@@ -97,7 +97,6 @@ Vector<std::unique_ptr<Notification>> notification_queue_; InspectorAgentState v8_session_state_; InspectorAgentState::String v8_session_state_json_; - InspectorAgentState::Boolean uses_binary_protocol_; DISALLOW_COPY_AND_ASSIGN(DevToolsSession); };
diff --git a/third_party/blink/renderer/core/layout/layout_scrollbar.cc b/third_party/blink/renderer/core/layout/layout_scrollbar.cc index b0bab3a..63074c96 100644 --- a/third_party/blink/renderer/core/layout/layout_scrollbar.cc +++ b/third_party/blink/renderer/core/layout/layout_scrollbar.cc
@@ -138,9 +138,10 @@ UpdateScrollbarPart(kTrackBGPart); } -void LayoutScrollbar::SetPressedPart(ScrollbarPart part) { +void LayoutScrollbar::SetPressedPart(ScrollbarPart part, + WebInputEvent::Type type) { ScrollbarPart old_part = pressed_part_; - Scrollbar::SetPressedPart(part); + Scrollbar::SetPressedPart(part, type); UpdateScrollbarPart(old_part); UpdateScrollbarPart(part);
diff --git a/third_party/blink/renderer/core/layout/layout_scrollbar.h b/third_party/blink/renderer/core/layout/layout_scrollbar.h index 85de9892..0b477e0b 100644 --- a/third_party/blink/renderer/core/layout/layout_scrollbar.h +++ b/third_party/blink/renderer/core/layout/layout_scrollbar.h
@@ -88,7 +88,7 @@ void DisconnectFromScrollableArea() override; void SetHoveredPart(ScrollbarPart) override; - void SetPressedPart(ScrollbarPart) override; + void SetPressedPart(ScrollbarPart, WebInputEvent::Type) override; void StyleChanged() override;
diff --git a/third_party/blink/renderer/core/layout/layout_text_fragment.cc b/third_party/blink/renderer/core/layout/layout_text_fragment.cc index d507061..5564cc1b 100644 --- a/third_party/blink/renderer/core/layout/layout_text_fragment.cc +++ b/third_party/blink/renderer/core/layout/layout_text_fragment.cc
@@ -163,8 +163,7 @@ if (!node) return nullptr; - if (node->IsFirstLetterPseudoElement()) { - FirstLetterPseudoElement* pseudo = ToFirstLetterPseudoElement(node); + if (auto* pseudo = DynamicTo<FirstLetterPseudoElement>(node)) { LayoutObject* next_layout_object = FirstLetterPseudoElement::FirstLetterTextLayoutObject(*pseudo); if (!next_layout_object)
diff --git a/third_party/blink/renderer/core/layout/scrollbars_test.cc b/third_party/blink/renderer/core/layout/scrollbars_test.cc index d19a9dd7..fa3f9338 100644 --- a/third_party/blink/renderer/core/layout/scrollbars_test.cc +++ b/third_party/blink/renderer/core/layout/scrollbars_test.cc
@@ -5,6 +5,7 @@ #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h" +#include "third_party/blink/public/platform/web_coalesced_input_event.h" #include "third_party/blink/public/platform/web_float_rect.h" #include "third_party/blink/public/platform/web_theme_engine.h" #include "third_party/blink/public/web/web_script_source.h" @@ -106,6 +107,22 @@ GetEventHandler().HandleMouseLeaveEvent(event); } + WebCoalescedInputEvent GenerateWheelGestureEvent( + WebInputEvent::Type type, + const IntPoint& position, + ScrollOffset offset = ScrollOffset()) { + return GenerateGestureEvent(type, WebGestureDevice::kTouchpad, position, + offset); + } + + WebCoalescedInputEvent GenerateTouchGestureEvent( + WebInputEvent::Type type, + const IntPoint& position, + ScrollOffset offset = ScrollOffset()) { + return GenerateGestureEvent(type, WebGestureDevice::kTouchscreen, position, + offset); + } + Cursor::Type CursorType() { return GetDocument() .GetFrame() @@ -117,6 +134,26 @@ ScrollbarTheme& GetScrollbarTheme() { return GetDocument().GetPage()->GetScrollbarTheme(); } + + protected: + WebCoalescedInputEvent GenerateGestureEvent(WebInputEvent::Type type, + WebGestureDevice device, + const IntPoint& position, + ScrollOffset offset) { + WebGestureEvent event(type, WebInputEvent::kNoModifiers, CurrentTimeTicks(), + device); + + event.SetPositionInWidget(WebFloatPoint(position.X(), position.Y())); + + if (type == WebInputEvent::kGestureScrollUpdate) { + event.data.scroll_update.delta_x = offset.Width(); + event.data.scroll_update.delta_y = offset.Height(); + } else if (type == WebInputEvent::kGestureScrollBegin) { + event.data.scroll_begin.delta_x_hint = offset.Width(); + event.data.scroll_begin.delta_y_hint = offset.Height(); + } + return WebCoalescedInputEvent(event); + } }; class ScrollbarsTestWithVirtualTimer : public ScrollbarsTest { @@ -2192,6 +2229,234 @@ EXPECT_EQ(scrollbar->PressedPart(), ScrollbarPart::kNoPart); } +TEST_F(ScrollbarsTest, UseCounterNegativeWhenThumbIsNotScrolledWithMouse) { + ScopedOverlayScrollbarsForTest overlay_scrollbars(false); + WebView().MainFrameWidget()->Resize(WebSize(200, 200)); + SimRequest request("https://example.com/test.html", "text/html"); + LoadURL("https://example.com/test.html"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + #content { height: 350px; width: 350px; } + </style> + <div id='scrollable'> + <div id='content'></div> + </div> + )HTML"); + Compositor().BeginFrame(); + + ScrollableArea* scrollable_area = + WebView().MainFrameImpl()->GetFrameView()->LayoutViewport(); + EXPECT_TRUE(scrollable_area->VerticalScrollbar()); + EXPECT_TRUE(scrollable_area->HorizontalScrollbar()); + Scrollbar* vertical_scrollbar = scrollable_area->VerticalScrollbar(); + Scrollbar* horizontal_scrollbar = scrollable_area->HorizontalScrollbar(); + EXPECT_EQ(vertical_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + + // Scrolling the page with a mouse wheel won't trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent( + GenerateWheelGestureEvent(WebInputEvent::kGestureScrollBegin, + IntPoint(100, 100), ScrollOffset(0, -100))); + WebView().MainFrameWidget()->HandleInputEvent( + GenerateWheelGestureEvent(WebInputEvent::kGestureScrollUpdate, + IntPoint(100, 100), ScrollOffset(0, -100))); + WebView().MainFrameWidget()->HandleInputEvent(GenerateWheelGestureEvent( + WebInputEvent::kGestureScrollEnd, IntPoint(100, 100))); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithMouse)); + + // Hovering over the vertical scrollbar won't trigger the UseCounter. + HandleMouseMoveEvent(195, 5); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithMouse)); + + // Hovering over the horizontal scrollbar won't trigger the UseCounter. + HandleMouseMoveEvent(5, 195); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithMouse)); + + // Clicking on the vertical scrollbar won't trigger the UseCounter. + HandleMousePressEvent(195, 175); + EXPECT_EQ(vertical_scrollbar->PressedPart(), + ScrollbarPart::kForwardTrackPart); + HandleMouseReleaseEvent(195, 175); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithMouse)); + + // Clicking on the horizontal scrollbar won't trigger the UseCounter. + HandleMousePressEvent(175, 195); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), + ScrollbarPart::kForwardTrackPart); + HandleMouseReleaseEvent(175, 195); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithMouse)); + + // Clicking outside the scrollbar and then releasing over the thumb of the + // vertical scrollbar won't trigger the UseCounter. + HandleMousePressEvent(50, 50); + HandleMouseMoveEvent(195, 5); + HandleMouseReleaseEvent(195, 5); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithMouse)); + + // Clicking outside the scrollbar and then releasing over the thumb of the + // horizontal scrollbar won't trigger the UseCounter. + HandleMousePressEvent(50, 50); + HandleMouseMoveEvent(5, 195); + HandleMouseReleaseEvent(5, 195); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithMouse)); +} + +TEST_F(ScrollbarsTest, UseCounterPositiveWhenThumbIsScrolledWithMouse) { + ScopedOverlayScrollbarsForTest overlay_scrollbars(false); + WebView().MainFrameWidget()->Resize(WebSize(200, 200)); + SimRequest request("https://example.com/test.html", "text/html"); + LoadURL("https://example.com/test.html"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + #content { height: 350px; width: 350px; } + </style> + <div id='scrollable'> + <div id='content'></div> + </div> + )HTML"); + Compositor().BeginFrame(); + + ScrollableArea* scrollable_area = + WebView().MainFrameImpl()->GetFrameView()->LayoutViewport(); + EXPECT_TRUE(scrollable_area->VerticalScrollbar()); + EXPECT_TRUE(scrollable_area->HorizontalScrollbar()); + Scrollbar* vertical_scrollbar = scrollable_area->VerticalScrollbar(); + Scrollbar* horizontal_scrollbar = scrollable_area->HorizontalScrollbar(); + EXPECT_EQ(vertical_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + + // Clicking the thumb on the vertical scrollbar will trigger the UseCounter. + HandleMousePressEvent(195, 5); + EXPECT_EQ(vertical_scrollbar->PressedPart(), ScrollbarPart::kThumbPart); + HandleMouseReleaseEvent(195, 5); + EXPECT_TRUE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithMouse)); + + // Clicking the thumb on the horizontal scrollbar will trigger the UseCounter. + HandleMousePressEvent(5, 195); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), ScrollbarPart::kThumbPart); + HandleMouseReleaseEvent(5, 195); + EXPECT_TRUE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithMouse)); +} + +TEST_F(ScrollbarsTest, UseCounterNegativeWhenThumbIsNotScrolledWithTouch) { + ScopedOverlayScrollbarsForTest overlay_scrollbars(false); + WebView().MainFrameWidget()->Resize(WebSize(200, 200)); + SimRequest request("https://example.com/test.html", "text/html"); + LoadURL("https://example.com/test.html"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + #content { height: 350px; width: 350px; } + </style> + <div id='scrollable'> + <div id='content'></div> + </div> + )HTML"); + Compositor().BeginFrame(); + + ScrollableArea* scrollable_area = + WebView().MainFrameImpl()->GetFrameView()->LayoutViewport(); + EXPECT_TRUE(scrollable_area->VerticalScrollbar()); + EXPECT_TRUE(scrollable_area->HorizontalScrollbar()); + Scrollbar* vertical_scrollbar = scrollable_area->VerticalScrollbar(); + Scrollbar* horizontal_scrollbar = scrollable_area->HorizontalScrollbar(); + EXPECT_EQ(vertical_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + + // Tapping on the vertical scrollbar won't trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapDown, IntPoint(195, 175))); + EXPECT_EQ(vertical_scrollbar->PressedPart(), + ScrollbarPart::kForwardTrackPart); + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapCancel, IntPoint(195, 175))); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithTouch)); + + // Tapping on the horizontal scrollbar won't trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapDown, IntPoint(175, 195))); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), + ScrollbarPart::kForwardTrackPart); + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapCancel, IntPoint(175, 195))); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithTouch)); + + // Tapping outside the scrollbar and then releasing over the thumb of the + // vertical scrollbar won't trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapDown, IntPoint(50, 50))); + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapCancel, IntPoint(195, 5))); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithTouch)); + + // Tapping outside the scrollbar and then releasing over the thumb of the + // horizontal scrollbar won't trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapDown, IntPoint(50, 50))); + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapCancel, IntPoint(5, 195))); + EXPECT_FALSE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithTouch)); +} + +TEST_F(ScrollbarsTest, UseCounterPositiveWhenThumbIsScrolledWithTouch) { + ScopedOverlayScrollbarsForTest overlay_scrollbars(false); + WebView().MainFrameWidget()->Resize(WebSize(200, 200)); + SimRequest request("https://example.com/test.html", "text/html"); + LoadURL("https://example.com/test.html"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + #content { height: 350px; width: 350px; } + </style> + <div id='scrollable'> + <div id='content'></div> + </div> + )HTML"); + Compositor().BeginFrame(); + + ScrollableArea* scrollable_area = + WebView().MainFrameImpl()->GetFrameView()->LayoutViewport(); + EXPECT_TRUE(scrollable_area->VerticalScrollbar()); + EXPECT_TRUE(scrollable_area->HorizontalScrollbar()); + Scrollbar* vertical_scrollbar = scrollable_area->VerticalScrollbar(); + Scrollbar* horizontal_scrollbar = scrollable_area->HorizontalScrollbar(); + EXPECT_EQ(vertical_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), ScrollbarPart::kNoPart); + + // Clicking the thumb on the vertical scrollbar will trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapDown, IntPoint(195, 5))); + EXPECT_EQ(vertical_scrollbar->PressedPart(), ScrollbarPart::kThumbPart); + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapCancel, IntPoint(195, 5))); + EXPECT_TRUE(UseCounter::IsCounted( + GetDocument(), WebFeature::kVerticalScrollbarThumbScrollingWithTouch)); + + // Clicking the thumb on the horizontal scrollbar will trigger the UseCounter. + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapDown, IntPoint(5, 195))); + EXPECT_EQ(horizontal_scrollbar->PressedPart(), ScrollbarPart::kThumbPart); + WebView().MainFrameWidget()->HandleInputEvent(GenerateTouchGestureEvent( + WebInputEvent::kGestureTapCancel, IntPoint(5, 195))); + EXPECT_TRUE(UseCounter::IsCounted( + GetDocument(), WebFeature::kHorizontalScrollbarThumbScrollingWithTouch)); +} + // For infinite scrolling page (load more content when scroll to bottom), user // press on scrollbar button should keep scrolling after content loaded. // Disable on Android since VirtualTime not work for Android.
diff --git a/third_party/blink/renderer/core/loader/form_submission.cc b/third_party/blink/renderer/core/loader/form_submission.cc index 020052f..ba5186d 100644 --- a/third_party/blink/renderer/core/loader/form_submission.cc +++ b/third_party/blink/renderer/core/loader/form_submission.cc
@@ -284,33 +284,28 @@ FrameLoadRequest FormSubmission::CreateFrameLoadRequest( Document* origin_document) { - FrameLoadRequest frame_request(origin_document); - - if (!target_.IsEmpty()) - frame_request.SetFrameName(target_); - + ResourceRequest resource_request(RequestURL()); ClientNavigationReason reason = ClientNavigationReason::kFormSubmissionGet; if (method_ == FormSubmission::kPostMethod) { reason = ClientNavigationReason::kFormSubmissionPost; - frame_request.GetResourceRequest().SetHttpMethod(http_names::kPOST); - frame_request.GetResourceRequest().SetHttpBody(form_data_); + resource_request.SetHttpMethod(http_names::kPOST); + resource_request.SetHttpBody(form_data_); // construct some user headers if necessary if (boundary_.IsEmpty()) { - frame_request.GetResourceRequest().SetHTTPContentType(content_type_); + resource_request.SetHTTPContentType(content_type_); } else { - frame_request.GetResourceRequest().SetHTTPContentType( - content_type_ + "; boundary=" + boundary_); + resource_request.SetHTTPContentType(content_type_ + + "; boundary=" + boundary_); } } + + FrameLoadRequest frame_request(origin_document, resource_request); + if (!target_.IsEmpty()) + frame_request.SetFrameName(target_); frame_request.SetClientRedirectReason(reason); - - frame_request.GetResourceRequest().SetUrl(RequestURL()); - frame_request.SetForm(form_); - frame_request.SetTriggeringEventInfo(triggering_event_info_); - return frame_request; }
diff --git a/third_party/blink/renderer/core/loader/frame_load_request.cc b/third_party/blink/renderer/core/loader/frame_load_request.cc index 4872223..df9520a0 100644 --- a/third_party/blink/renderer/core/loader/frame_load_request.cc +++ b/third_party/blink/renderer/core/loader/frame_load_request.cc
@@ -14,9 +14,6 @@ namespace blink { -FrameLoadRequest::FrameLoadRequest(Document* origin_document) - : FrameLoadRequest(origin_document, ResourceRequest()) {} - FrameLoadRequest::FrameLoadRequest(Document* origin_document, const ResourceRequest& resource_request) : FrameLoadRequest(origin_document, resource_request, AtomicString()) {} @@ -24,24 +21,11 @@ FrameLoadRequest::FrameLoadRequest(Document* origin_document, const ResourceRequest& resource_request, const AtomicString& frame_name) - : FrameLoadRequest(origin_document, - resource_request, - frame_name, - kCheckContentSecurityPolicy) {} - -FrameLoadRequest::FrameLoadRequest( - Document* origin_document, - const ResourceRequest& resource_request, - const AtomicString& frame_name, - ContentSecurityPolicyDisposition - should_check_main_world_content_security_policy) : origin_document_(origin_document), resource_request_(resource_request), frame_name_(frame_name), client_redirect_(ClientRedirectPolicy::kNotClientRedirect), - should_send_referrer_(kMaybeSendReferrer), - should_check_main_world_content_security_policy_( - should_check_main_world_content_security_policy) { + should_send_referrer_(kMaybeSendReferrer) { // These flags are passed to a service worker which controls the page. resource_request_.SetFetchRequestMode( network::mojom::FetchRequestMode::kNavigate); @@ -53,6 +37,12 @@ if (const WebInputEvent* input_event = CurrentInputEvent::Get()) SetInputStartTime(input_event->TimeStamp()); + should_check_main_world_content_security_policy_ = + origin_document && + ContentSecurityPolicy::ShouldBypassMainWorld(origin_document) + ? kDoNotCheckContentSecurityPolicy + : kCheckContentSecurityPolicy; + if (origin_document) { DCHECK(!resource_request_.RequestorOrigin()); resource_request_.SetRequestorOrigin(origin_document->GetSecurityOrigin()); @@ -64,11 +54,6 @@ origin_document->GetPublicURLManager().Resolve( resource_request.Url(), MakeRequest(&blob_url_token_->data)); } - - if (ContentSecurityPolicy::ShouldBypassMainWorld(origin_document)) { - should_check_main_world_content_security_policy_ = - kDoNotCheckContentSecurityPolicy; - } } }
diff --git a/third_party/blink/renderer/core/loader/frame_load_request.h b/third_party/blink/renderer/core/loader/frame_load_request.h index e90111d..990eb619 100644 --- a/third_party/blink/renderer/core/loader/frame_load_request.h +++ b/third_party/blink/renderer/core/loader/frame_load_request.h
@@ -45,15 +45,10 @@ STACK_ALLOCATED(); public: - explicit FrameLoadRequest(Document* origin_document); FrameLoadRequest(Document* origin_document, const ResourceRequest&); FrameLoadRequest(Document* origin_document, const ResourceRequest&, const AtomicString& frame_name); - FrameLoadRequest(Document* origin_document, - const ResourceRequest&, - const AtomicString& frame_name, - ContentSecurityPolicyDisposition); Document* OriginDocument() const { return origin_document_.Get(); }
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl_test.cc b/third_party/blink/renderer/core/page/chrome_client_impl_test.cc index eaa57d3..4864d37 100644 --- a/third_party/blink/renderer/core/page/chrome_client_impl_test.cc +++ b/third_party/blink/renderer/core/page/chrome_client_impl_test.cc
@@ -90,7 +90,7 @@ TEST_F(CreateWindowTest, CreateWindowFromPausedPage) { ScopedPagePauser pauser; LocalFrame* frame = To<WebLocalFrameImpl>(main_frame_)->GetFrame(); - FrameLoadRequest request(frame->GetDocument()); + FrameLoadRequest request(frame->GetDocument(), ResourceRequest()); request.SetNavigationPolicy(kNavigationPolicyNewForegroundTab); WebWindowFeatures features; EXPECT_EQ(nullptr, chrome_client_impl_->CreateWindow(
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc index 0526d49..30dc3f2 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_anchor_test.cc
@@ -417,7 +417,7 @@ Text* text = ToText(GetDocument().getElementById("text")->firstChild()); DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( *text, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(1u, markers.size()); + ASSERT_EQ(1u, markers.size()); EXPECT_EQ(0u, markers.at(0)->StartOffset()); EXPECT_EQ(19u, markers.at(0)->EndOffset()); } @@ -451,7 +451,7 @@ Text* text1 = ToText(GetDocument().getElementById("text1")->firstChild()); DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( *text1, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(1u, markers.size()); + ASSERT_EQ(1u, markers.size()); EXPECT_EQ(10u, markers.at(0)->StartOffset()); EXPECT_EQ(19u, markers.at(0)->EndOffset()); @@ -459,7 +459,7 @@ Text* text2 = ToText(GetDocument().getElementById("text2")->firstChild()); markers = GetDocument().Markers().MarkersFor( *text2, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(1u, markers.size()); + ASSERT_EQ(1u, markers.size()); EXPECT_EQ(0u, markers.at(0)->StartOffset()); EXPECT_EQ(22u, markers.at(0)->EndOffset()); } @@ -495,7 +495,7 @@ Text* text1 = ToText(GetDocument().getElementById("text1")->firstChild()); DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( *text1, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(1u, markers.size()); + ASSERT_EQ(1u, markers.size()); EXPECT_EQ(10u, markers.at(0)->StartOffset()); EXPECT_EQ(19u, markers.at(0)->EndOffset()); @@ -503,7 +503,7 @@ Text* text2 = ToText(GetDocument().getElementById("text2")->firstChild()); markers = GetDocument().Markers().MarkersFor( *text2, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(1u, markers.size()); + ASSERT_EQ(1u, markers.size()); EXPECT_EQ(0u, markers.at(0)->StartOffset()); EXPECT_EQ(22u, markers.at(0)->EndOffset()); } @@ -569,7 +569,7 @@ Text* text1 = ToText(GetDocument().getElementById("text1")->firstChild()); DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( *text1, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(1u, markers.size()); + ASSERT_EQ(1u, markers.size()); EXPECT_EQ(10u, markers.at(0)->StartOffset()); EXPECT_EQ(19u, markers.at(0)->EndOffset()); @@ -577,7 +577,7 @@ Text* text2 = ToText(GetDocument().getElementById("text2")->firstChild()); markers = GetDocument().Markers().MarkersFor( *text2, DocumentMarker::MarkerTypes::TextMatch()); - EXPECT_EQ(2u, markers.size()); + ASSERT_EQ(2u, markers.size()); EXPECT_EQ(0u, markers.at(0)->StartOffset()); EXPECT_EQ(4u, markers.at(0)->EndOffset()); EXPECT_EQ(13u, markers.at(1)->StartOffset()); @@ -610,6 +610,242 @@ EXPECT_EQ(2u, GetDocument().Markers().Markers().size()); } +// Test a text range with both context terms in the same element. +TEST_F(TextFragmentAnchorTest, TextRangeWithContext) { + SimRequest request( + "https://example.com/test.html#targetText=this-,is,test,-page", + "text/html"); + LoadURL("https://example.com/test.html#targetText=this-,is,test,-page"); + request.Complete(R"HTML( + <!DOCTYPE html> + <p id="text">This is a test page</p> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); + + // Expect marker on "is a test". + Text* text = ToText(GetDocument().getElementById("text")->firstChild()); + DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( + *text, DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(5u, markers.at(0)->StartOffset()); + EXPECT_EQ(14u, markers.at(0)->EndOffset()); +} + +// Ensure that we do not match a text range if the prefix is not found. +TEST_F(TextFragmentAnchorTest, PrefixNotFound) { + SimRequest request( + "https://example.com/test.html#targetText=prefix-,is,test,-page", + "text/html"); + LoadURL("https://example.com/test.html#targetText=prefix-,is,test,-page"); + request.Complete(R"HTML( + <!DOCTYPE html> + <p id="text">This is a test page</p> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); +} + +// Ensure that we do not match a text range if the suffix is not found. +TEST_F(TextFragmentAnchorTest, SuffixNotFound) { + SimRequest request( + "https://example.com/test.html#targetText=this-,is,test,-suffix", + "text/html"); + LoadURL("https://example.com/test.html#targetText=this-,is,test,-suffix"); + request.Complete(R"HTML( + <!DOCTYPE html> + <p id="text">This is a test page</p> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + EXPECT_EQ(0u, GetDocument().Markers().Markers().size()); +} + +// Test a text range with context terms in different elements +TEST_F(TextFragmentAnchorTest, TextRangeWithCrossElementContext) { + SimRequest request( + "https://example.com/test.html#targetText=header%202-,a,text,-footer%201", + "text/html"); + LoadURL( + "https://example.com/" + "test.html#targetText=header%202-,a,text,-footer%201"); + request.Complete(R"HTML( + <!DOCTYPE html> + <h1>Header 1</h1> + <p>A string of text</p> + <p>Footer 1</p> + <h1>Header 2</h1> + <p id="expected">A string of text</p> + <p>Footer 1</p> + <h1>Header 2</h1> + <p>A string of text</p> + <p>Footer 2</p> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); + + // Expect marker on the expected "A string of text". + Text* text = ToText(GetDocument().getElementById("expected")->firstChild()); + DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( + *text, DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(0u, markers.at(0)->StartOffset()); + EXPECT_EQ(16u, markers.at(0)->EndOffset()); +} + +// Test context terms separated by elements and whitespace +TEST_F(TextFragmentAnchorTest, CrossElementAndWhitespaceContext) { + SimRequest request( + "https://example.com/" + "test.html#targetText=list%202-,cat,-good%20cat", + "text/html"); + LoadURL( + "https://example.com/" + "test.html#targetText=list%202-,cat,-good%20cat"); + request.Complete(R"HTML( + <!DOCTYPE html> + <h1> List 1 </h1> + <div> + <p>Cat</p> + <p> Good cat</p> + </div> + <h1> List 2 </h1> + <div> + <p id="expected">Cat</p> + <p> Good cat</p> + </div> + <h1> List 2 </h1> + <div> + <p>Cat</p> + <p> Bad cat</p> + </div> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); + + // Expect marker on the expected "cat". + Text* text = ToText(GetDocument().getElementById("expected")->firstChild()); + DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( + *text, DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(0u, markers.at(0)->StartOffset()); + EXPECT_EQ(3u, markers.at(0)->EndOffset()); +} + +// Test context terms separated by empty sibling and parent elements +TEST_F(TextFragmentAnchorTest, CrossEmptySiblingAndParentElementContext) { + SimRequest request( + "https://example.com/" + "test.html#targetText=prefix-,match,-suffix", + "text/html"); + LoadURL( + "https://example.com/" + "test.html#targetText=prefix-,match,-suffix"); + request.Complete(R"HTML( + <!DOCTYPE html> + <div> + <p>prefix</p> + <div> + <p><br> </p> + <div id="expected">match</div> + <p><br> </p> + <div> + <p>suffix</p> + <div> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); + + // Expect marker on "match". + Text* text = ToText(GetDocument().getElementById("expected")->firstChild()); + DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( + *text, DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(0u, markers.at(0)->StartOffset()); + EXPECT_EQ(5u, markers.at(0)->EndOffset()); +} + +// Ensure we scroll to text when its prefix and suffix are out of view. +TEST_F(TextFragmentAnchorTest, DistantElementContext) { + SimRequest request( + "https://example.com/test.html#targetText=prefix-,cats,-suffix", + "text/html"); + LoadURL("https://example.com/test.html#targetText=prefix-,cats,-suffix"); + request.Complete(R"HTML( + <!DOCTYPE html> + <style> + p { + margin-top: 3000px; + } + </style> + <p>Cats</p> + <p>Prefix</p> + <p id="text">Cats</p> + <p>Suffix</p> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + Element& p = *GetDocument().getElementById("text"); + EXPECT_TRUE(ViewportRect().Contains(BoundingRectInFrame(p))) + << "<p> Element wasn't scrolled into view, viewport's scroll offset: " + << LayoutViewport()->GetScrollOffset().ToString(); + EXPECT_EQ(1u, GetDocument().Markers().Markers().size()); +} + +// Test specifying just one of the prefix and suffix +TEST_F(TextFragmentAnchorTest, OneContextTerm) { + SimRequest request( + "https://example.com/" + "test.html#targetText=test-,page&targetText=page,-with%20real%20content", + "text/html"); + LoadURL( + "https://example.com/" + "test.html#targetText=test-,page&targetText=page,-with%20real%20content"); + request.Complete(R"HTML( + <!DOCTYPE html> + <p id="text1">This is a test page</p> + <p id="text2">Not a page with real content</p> + )HTML"); + Compositor().BeginFrame(); + + RunAsyncMatchingTasks(); + + // Expect marker on the first "page" + Text* text1 = ToText(GetDocument().getElementById("text1")->firstChild()); + DocumentMarkerVector markers = GetDocument().Markers().MarkersFor( + *text1, DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(15u, markers.at(0)->StartOffset()); + EXPECT_EQ(19u, markers.at(0)->EndOffset()); + + // Expect marker on the second "page" + Text* text2 = ToText(GetDocument().getElementById("text2")->firstChild()); + markers = GetDocument().Markers().MarkersFor( + *text2, DocumentMarker::MarkerTypes::TextMatch()); + ASSERT_EQ(1u, markers.size()); + EXPECT_EQ(6u, markers.at(0)->StartOffset()); + EXPECT_EQ(10u, markers.at(0)->EndOffset()); +} + } // namespace } // namespace blink
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc index d19e1593..6ebccdd 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_finder.cc
@@ -11,6 +11,7 @@ #include "third_party/blink/renderer/core/dom/range.h" #include "third_party/blink/renderer/core/editing/ephemeral_range.h" #include "third_party/blink/renderer/core/editing/finder/find_buffer.h" +#include "third_party/blink/renderer/core/editing/iterators/character_iterator.h" #include "third_party/blink/renderer/core/editing/position.h" #include "third_party/blink/renderer/core/page/scrolling/text_fragment_selector.h" @@ -18,41 +19,101 @@ namespace { -EphemeralRangeInFlatTree FindMatchFromPosition( - String search_text, - Document& document, - PositionInFlatTree search_start) { +const char kNoContext[] = ""; + +EphemeralRangeInFlatTree FindMatchInRange(String search_text, + PositionInFlatTree search_start, + PositionInFlatTree search_end) { + const FindOptions find_options = kCaseInsensitive; + const EphemeralRangeInFlatTree search_range(search_start, search_end); + return FindBuffer::FindMatchInRange(search_range, search_text, find_options); +} + +PositionInFlatTree NextTextPosition(PositionInFlatTree position, + PositionInFlatTree end_position) { + const TextIteratorBehavior options = + TextIteratorBehavior::Builder().SetEmitsSpaceForNbsp(true).Build(); + CharacterIteratorInFlatTree char_it(position, end_position, options); + + for (; char_it.length(); char_it.Advance(1)) { + if (!IsSpaceOrNewline(char_it.CharacterAt(0))) + return char_it.StartPosition(); + } + + return end_position; +} + +// Find and return the range of |search_text| if the first text in the search +// range is |search_text|, skipping over whitespace and element boundaries. +EphemeralRangeInFlatTree FindImmediateMatch(String search_text, + PositionInFlatTree search_start, + PositionInFlatTree search_end) { if (search_text.IsEmpty()) return EphemeralRangeInFlatTree(); - PositionInFlatTree search_end; - if (document.documentElement() && document.documentElement()->lastChild()) { - search_end = - PositionInFlatTree::AfterNode(*document.documentElement()->lastChild()); - } else { - search_end = PositionInFlatTree::LastPositionInNode(document); + search_start = NextTextPosition(search_start, search_end); + if (search_start == search_end) + return EphemeralRangeInFlatTree(); + + FindBuffer buffer(EphemeralRangeInFlatTree(search_start, search_end)); + const FindOptions find_options = kCaseInsensitive; + + std::unique_ptr<FindBuffer::Results> match_results = + buffer.FindMatches(search_text, find_options); + + if (!match_results->IsEmpty() && match_results->front().start == 0u) { + FindBuffer::BufferMatchResult match = match_results->front(); + return buffer.RangeFromBufferIndex(match.start, match.start + match.length); } + return EphemeralRangeInFlatTree(); +} + +EphemeralRangeInFlatTree FindMatchInRangeWithContext( + const String& search_text, + const String& prefix, + const String& suffix, + PositionInFlatTree search_start, + PositionInFlatTree search_end) { while (search_start != search_end) { - // Find in the whole block. - FindBuffer buffer(EphemeralRangeInFlatTree(search_start, search_end)); - const FindOptions find_options = kCaseInsensitive; + EphemeralRangeInFlatTree potential_match; - std::unique_ptr<FindBuffer::Results> match_results = - buffer.FindMatches(search_text, find_options); + if (!prefix.IsEmpty()) { + EphemeralRangeInFlatTree prefix_match = + FindMatchInRange(prefix, search_start, search_end); - if (!match_results->IsEmpty()) { - FindBuffer::BufferMatchResult match = match_results->front(); - return buffer.RangeFromBufferIndex(match.start, - match.start + match.length); + // No prefix_match in remaining range + if (prefix_match.IsNull()) + return EphemeralRangeInFlatTree(); + + search_start = prefix_match.EndPosition(); + potential_match = + FindImmediateMatch(search_text, search_start, search_end); + + // No search_text match after current prefix_match + if (potential_match.IsNull()) + continue; + } else { + potential_match = FindMatchInRange(search_text, search_start, search_end); + + // No search_text match in remaining range + if (potential_match.IsNull()) + return EphemeralRangeInFlatTree(); } - // At this point, all text in the block collected above has been - // processed. Now we move to the next block if there's any, - // otherwise we should stop. - search_start = buffer.PositionAfterBlock(); - if (search_start.IsNull()) - break; + DCHECK(potential_match.IsNotNull()); + search_start = potential_match.EndPosition(); + if (!suffix.IsEmpty()) { + EphemeralRangeInFlatTree suffix_match = + FindImmediateMatch(suffix, search_start, search_end); + + // No suffix match after current potential_match + if (suffix_match.IsNull()) + continue; + } + + // If we reach here without a return or continue, we have a full match. + return potential_match; } return EphemeralRangeInFlatTree(); @@ -67,27 +128,45 @@ } void TextFragmentFinder::FindMatch(Document& document) { - // TODO(crbug.com/930156): Make FindMatch work asynchronously. - EphemeralRangeInFlatTree start_match = - FindMatchFromPosition(selector_.Start(), document, - PositionInFlatTree::FirstPositionInNode(document)); - if (start_match.IsNull()) - return; - - if (selector_.End().IsEmpty()) { - client_.DidFindMatch(start_match); + PositionInFlatTree search_start = + PositionInFlatTree::FirstPositionInNode(document); + PositionInFlatTree search_end; + if (document.documentElement() && document.documentElement()->lastChild()) { + search_end = + PositionInFlatTree::AfterNode(*document.documentElement()->lastChild()); } else { + search_end = PositionInFlatTree::LastPositionInNode(document); + } + + // TODO(crbug.com/930156): Make FindMatch work asynchronously. + EphemeralRangeInFlatTree match; + if (selector_.Type() == TextFragmentSelector::kExact) { + match = FindMatchInRangeWithContext(selector_.Start(), selector_.Prefix(), + selector_.Suffix(), search_start, + search_end); + } else { + EphemeralRangeInFlatTree start_match = + FindMatchInRangeWithContext(selector_.Start(), selector_.Prefix(), + kNoContext, search_start, search_end); + if (start_match.IsNull()) + return; + // TODO(crbug.com/924964): Determine what we should do if the start text and // end text are the same (and there are no context terms). This // implementation continues searching for the next instance of the text, // from the end of the first instance. - EphemeralRangeInFlatTree end_match = FindMatchFromPosition( - selector_.End(), document, start_match.EndPosition()); - if (!end_match.IsNull()) { - client_.DidFindMatch(EphemeralRangeInFlatTree(start_match.StartPosition(), - end_match.EndPosition())); + search_start = start_match.EndPosition(); + EphemeralRangeInFlatTree end_match = FindMatchInRangeWithContext( + selector_.End(), kNoContext, selector_.Suffix(), search_start, + search_end); + if (end_match.IsNotNull()) { + match = EphemeralRangeInFlatTree(start_match.StartPosition(), + end_match.EndPosition()); } } + + if (match.IsNotNull()) + client_.DidFindMatch(match); } } // namespace blink
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.cc b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.cc index b4ac4b79..57f61ae 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.cc +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.cc
@@ -7,11 +7,47 @@ namespace blink { -TextFragmentSelector TextFragmentSelector::Create(const String& target_text) { +namespace { + +// The prefix and suffix terms are specified to begin/end with a '-' character. +// These methods will find the prefix/suffix and return it without the '-', and +// remove the prefix/suffix from the |target_text| string. If not found, we +// return an empty string to indicate no prefix/suffix was specified or it +// was malformed and should be ignored. +String ExtractPrefix(String* target_text) { + size_t comma_pos = target_text->find(','); + size_t hyphen_pos = target_text->find('-'); + + if (hyphen_pos != kNotFound && hyphen_pos == comma_pos - 1) { + String prefix = target_text->Substring(0, hyphen_pos); + target_text->Remove(0, comma_pos + 1); + return prefix; + } + return ""; +} + +String ExtractSuffix(String* target_text) { + size_t last_comma_pos = target_text->ReverseFind(','); + size_t last_hyphen_pos = target_text->ReverseFind('-'); + + if (last_hyphen_pos != kNotFound && last_hyphen_pos == last_comma_pos + 1) { + String suffix = target_text->Substring(last_hyphen_pos + 1); + target_text->Truncate(last_comma_pos); + return suffix; + } + return ""; +} + +} // namespace + +TextFragmentSelector TextFragmentSelector::Create(String target_text) { SelectorType type; String start; String end; + String prefix = ExtractPrefix(&target_text); + String suffix = ExtractSuffix(&target_text); + size_t comma_pos = target_text.find(','); if (comma_pos == kNotFound) { @@ -26,12 +62,16 @@ return TextFragmentSelector( type, DecodeURLEscapeSequences(start, DecodeURLMode::kUTF8), - DecodeURLEscapeSequences(end, DecodeURLMode::kUTF8)); + DecodeURLEscapeSequences(end, DecodeURLMode::kUTF8), + DecodeURLEscapeSequences(prefix, DecodeURLMode::kUTF8), + DecodeURLEscapeSequences(suffix, DecodeURLMode::kUTF8)); } TextFragmentSelector::TextFragmentSelector(SelectorType type, - String start, - String end) - : type_(type), start_(start), end_(end) {} + const String& start, + const String& end, + const String& prefix, + const String& suffix) + : type_(type), start_(start), end_(end), prefix_(prefix), suffix_(suffix) {} } // namespace blink
diff --git a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.h b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.h index a10d0cf9..bcc2ecc 100644 --- a/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.h +++ b/third_party/blink/renderer/core/page/scrolling/text_fragment_selector.h
@@ -14,7 +14,7 @@ // TextFragmentAnchor, parsed into its components. class CORE_EXPORT TextFragmentSelector final { public: - static TextFragmentSelector Create(const String& target_text); + static TextFragmentSelector Create(String target_text); enum SelectorType { // An exact selector on the string start_. @@ -23,17 +23,25 @@ kRange, }; - TextFragmentSelector(SelectorType type, String start, String end); + TextFragmentSelector(SelectorType type, + const String& start, + const String& end, + const String& prefix, + const String& suffix); ~TextFragmentSelector() = default; SelectorType Type() const { return type_; } String Start() const { return start_; } String End() const { return end_; } + String Prefix() const { return prefix_; } + String Suffix() const { return suffix_; } private: const SelectorType type_; String start_; String end_; + String prefix_; + String suffix_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc b/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc index e4e84ac..5a13c44 100644 --- a/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc +++ b/third_party/blink/renderer/core/paint/image_paint_timing_detector_test.cc
@@ -208,6 +208,23 @@ EXPECT_TRUE(record->loaded); } +TEST_F(ImagePaintTimingDetectorTest, LargestImagePaint_OpacityZero) { + SetBodyInnerHTML(R"HTML( + <style> + img { + opacity: 0; + } + </style> + <img id="target"></img> + )HTML"); + SetImageAndPaint("target", 5, 5); + UpdateAllLifecyclePhasesAndInvokeCallbackIfAny(); + EXPECT_EQ(CountVisibleImageRecords(), 0u); + EXPECT_EQ(CountVisibleBackgroundImageRecords(), 0u); + ImageRecord* record = FindLargestPaintCandidate(); + EXPECT_FALSE(record); +} + TEST_F(ImagePaintTimingDetectorTest, IgnoreImageUntilInvalidatedRectSizeNonZero) { SetBodyInnerHTML(R"HTML(
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc index 67ef788..cabd4a9f 100644 --- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc +++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -2832,7 +2832,8 @@ void PaintLayerScrollableArea::DidScrollWithScrollbar( ScrollbarPart part, - ScrollbarOrientation orientation) { + ScrollbarOrientation orientation, + WebInputEvent::Type type) { WebFeature scrollbar_use_uma; switch (part) { case kBackButtonStartPart: @@ -2861,7 +2862,26 @@ return; } - UseCounter::Count(GetLayoutBox()->GetDocument(), scrollbar_use_uma); + Document& document = GetLayoutBox()->GetDocument(); + + // TODO(alpastew): Remove the UseCounters kScrollbarUseVerticalScrollbarThumb + // and kScrollbarUseHorizontalScrollbarThumb to avoid redundancy in metrics. + UseCounter::Count(document, scrollbar_use_uma); + + if (scrollbar_use_uma == WebFeature::kScrollbarUseVerticalScrollbarThumb) { + WebFeature input_specific_uma = + (WebInputEvent::IsMouseEventType(type) + ? WebFeature::kVerticalScrollbarThumbScrollingWithMouse + : WebFeature::kVerticalScrollbarThumbScrollingWithTouch); + UseCounter::Count(document, input_specific_uma); + } else if (scrollbar_use_uma == + WebFeature::kScrollbarUseHorizontalScrollbarThumb) { + WebFeature input_specific_uma = + (WebInputEvent::IsMouseEventType(type) + ? WebFeature::kHorizontalScrollbarThumbScrollingWithMouse + : WebFeature::kHorizontalScrollbarThumbScrollingWithTouch); + UseCounter::Count(document, input_specific_uma); + } } CompositorElementId PaintLayerScrollableArea::GetCompositorElementId() const {
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h index 41b18f68..23c5038 100644 --- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h +++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
@@ -538,7 +538,9 @@ // Should be called when the previous visual rects are no longer valid. void ClearPreviousVisualRects(); - void DidScrollWithScrollbar(ScrollbarPart, ScrollbarOrientation) override; + void DidScrollWithScrollbar(ScrollbarPart, + ScrollbarOrientation, + WebInputEvent::Type) override; CompositorElementId GetCompositorElementId() const override; bool VisualViewportSuppliesScrollbars() const override;
diff --git a/third_party/blink/renderer/core/paint/paint_timing_detector.cc b/third_party/blink/renderer/core/paint/paint_timing_detector.cc index 2aad79c..20b1d48 100644 --- a/third_party/blink/renderer/core/paint/paint_timing_detector.cc +++ b/third_party/blink/renderer/core/paint/paint_timing_detector.cc
@@ -79,6 +79,8 @@ return; if (!cached_image) return; + if (!object->HasNonZeroEffectiveOpacity()) + return; PaintTimingDetector& detector = frame_view->GetPaintTimingDetector(); detector.GetImagePaintTimingDetector().RecordBackgroundImage( *object, image->Size(), cached_image, current_paint_chunk_properties); @@ -95,6 +97,8 @@ return; if (!cached_image) return; + if (!object.HasNonZeroEffectiveOpacity()) + return; PaintTimingDetector& detector = frame_view->GetPaintTimingDetector(); detector.GetImagePaintTimingDetector().RecordImage( object, intrinsic_size, cached_image, current_paint_chunk_properties); @@ -107,6 +111,8 @@ LocalFrameView* frame_view = object.GetFrameView(); if (!frame_view) return; + if (!object.HasNonZeroEffectiveOpacity()) + return; PaintTimingDetector& detector = frame_view->GetPaintTimingDetector(); detector.GetTextPaintTimingDetector().RecordText( object, current_paint_chunk_properties);
diff --git a/third_party/blink/renderer/core/paint/text_paint_timing_detector_test.cc b/third_party/blink/renderer/core/paint/text_paint_timing_detector_test.cc index 6f36791..e5a101d 100644 --- a/third_party/blink/renderer/core/paint/text_paint_timing_detector_test.cc +++ b/third_party/blink/renderer/core/paint/text_paint_timing_detector_test.cc
@@ -169,6 +169,19 @@ EXPECT_EQ(TextRecordOfLargestTextPaint()->node_id, NodeIdOfText(only_text)); } +TEST_F(TextPaintTimingDetectorTest, LargestTextPaint_OpacityZero) { + SetBodyInnerHTML(R"HTML( + <style> + div { + opacity: 0; + } + </style> + )HTML"); + AppendDivElementToBody("The only text"); + UpdateAllLifecyclePhasesAndSimulateSwapTime(); + EXPECT_EQ(CountVisibleTexts(), 0u); +} + TEST_F(TextPaintTimingDetectorTest, NodeRemovedBeforeAssigningSwapTime) { SetBodyInnerHTML(R"HTML( <div id="parent">
diff --git a/third_party/blink/renderer/core/scroll/scrollable_area.h b/third_party/blink/renderer/core/scroll/scrollable_area.h index d2dde161..fcd745d 100644 --- a/third_party/blink/renderer/core/scroll/scrollable_area.h +++ b/third_party/blink/renderer/core/scroll/scrollable_area.h
@@ -391,7 +391,9 @@ virtual bool RestoreScrollAnchor(const SerializedAnchor&) { return false; } virtual ScrollAnchor* GetScrollAnchor() { return nullptr; } - virtual void DidScrollWithScrollbar(ScrollbarPart, ScrollbarOrientation) {} + virtual void DidScrollWithScrollbar(ScrollbarPart, + ScrollbarOrientation, + WebInputEvent::Type) {} // Returns the task runner to be used for scrollable area timers. // Ideally a frame-specific throttled one can be used.
diff --git a/third_party/blink/renderer/core/scroll/scrollbar.cc b/third_party/blink/renderer/core/scroll/scrollbar.cc index cfae1db..51e9d5a 100644 --- a/third_party/blink/renderer/core/scroll/scrollbar.cc +++ b/third_party/blink/renderer/core/scroll/scrollbar.cc
@@ -328,7 +328,7 @@ hovered_part_ = part; } -void Scrollbar::SetPressedPart(ScrollbarPart part) { +void Scrollbar::SetPressedPart(ScrollbarPart part, WebInputEvent::Type type) { if (pressed_part_ != kNoPart // When we no longer have a pressed part, we can start drawing a hovered // state on the hovered part. @@ -336,8 +336,8 @@ SetNeedsPaintInvalidation( static_cast<ScrollbarPart>(pressed_part_ | hovered_part_ | part)); - if (GetScrollableArea()) - GetScrollableArea()->DidScrollWithScrollbar(part, Orientation()); + if (GetScrollableArea() && part != kNoPart) + GetScrollableArea()->DidScrollWithScrollbar(part, Orientation(), type); pressed_part_ = part; } @@ -348,7 +348,7 @@ switch (evt.GetType()) { case WebInputEvent::kGestureTapDown: { IntPoint position = FlooredIntPoint(evt.PositionInRootFrame()); - SetPressedPart(GetTheme().HitTest(*this, position)); + SetPressedPart(GetTheme().HitTest(*this, position), evt.GetType()); pressed_pos_ = Orientation() == kHorizontalScrollbar ? ConvertFromRootFrame(position).X() : ConvertFromRootFrame(position).Y(); @@ -367,7 +367,7 @@ // Update the state on GSB for touchpad since GestureTapDown // is not generated by that device. Touchscreen uses the tap down // gesture since the scrollbar enters a visual active state. - SetPressedPart(kNoPart); + SetPressedPart(kNoPart, evt.GetType()); pressed_pos_ = 0; return false; case WebGestureDevice::kTouchscreen: @@ -403,7 +403,7 @@ case WebInputEvent::kGestureFlingStart: scroll_pos_ = 0; pressed_pos_ = 0; - SetPressedPart(kNoPart); + SetPressedPart(kNoPart, evt.GetType()); return false; case WebInputEvent::kGestureTap: { if (pressed_part_ != kThumbPart && pressed_part_ != kNoPart && @@ -417,7 +417,7 @@ } scroll_pos_ = 0; pressed_pos_ = 0; - SetPressedPart(kNoPart); + SetPressedPart(kNoPart, evt.GetType()); return false; } default: @@ -484,7 +484,7 @@ void Scrollbar::MouseUp(const WebMouseEvent& mouse_event) { bool is_captured = pressed_part_ == kThumbPart; - SetPressedPart(kNoPart); + SetPressedPart(kNoPart, mouse_event.GetType()); pressed_pos_ = 0; dragging_document_ = false; StopTimerIfNeeded(); @@ -509,7 +509,7 @@ return; IntPoint position = FlooredIntPoint(evt.PositionInRootFrame()); - SetPressedPart(GetTheme().HitTest(*this, position)); + SetPressedPart(GetTheme().HitTest(*this, position), evt.GetType()); int pressed_pos = Orientation() == kHorizontalScrollbar ? ConvertFromRootFrame(position).X() : ConvertFromRootFrame(position).Y(); @@ -517,7 +517,7 @@ if ((pressed_part_ == kBackTrackPart || pressed_part_ == kForwardTrackPart) && GetTheme().ShouldCenterOnThumb(*this, evt)) { SetHoveredPart(kThumbPart); - SetPressedPart(kThumbPart); + SetPressedPart(kThumbPart, evt.GetType()); drag_origin_ = current_pos_; int thumb_len = GetTheme().ThumbLength(*this); int desired_pos = pressed_pos;
diff --git a/third_party/blink/renderer/core/scroll/scrollbar.h b/third_party/blink/renderer/core/scroll/scrollbar.h index a231d19..8b86ad3 100644 --- a/third_party/blink/renderer/core/scroll/scrollbar.h +++ b/third_party/blink/renderer/core/scroll/scrollbar.h
@@ -116,7 +116,7 @@ int PressedPos() const { return pressed_pos_; } virtual void SetHoveredPart(ScrollbarPart); - virtual void SetPressedPart(ScrollbarPart); + virtual void SetPressedPart(ScrollbarPart, WebInputEvent::Type); void SetProportion(int visible_size, int total_size); void SetPressedPos(int p) { pressed_pos_ = p; }
diff --git a/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_test.cc b/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_test.cc index f23a44cc..e7ad2998 100644 --- a/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_test.cc +++ b/third_party/blink/renderer/core/scroll/scrollbar_theme_overlay_test.cc
@@ -93,7 +93,7 @@ mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); // Pressing down should also cause an invalidation. - vertical_scrollbar->SetPressedPart(kThumbPart); + vertical_scrollbar->SetPressedPart(kThumbPart, WebInputEvent::kMouseDown); EXPECT_TRUE(vertical_scrollbar->ThumbNeedsRepaint()); EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation()); @@ -101,7 +101,7 @@ mock_scrollable_area->ClearNeedsPaintInvalidationForScrollControls(); // Release should cause invalidation. - vertical_scrollbar->SetPressedPart(kNoPart); + vertical_scrollbar->SetPressedPart(kNoPart, WebInputEvent::kMouseDown); EXPECT_TRUE(vertical_scrollbar->ThumbNeedsRepaint()); EXPECT_TRUE(mock_scrollable_area->VerticalScrollbarNeedsPaintInvalidation());
diff --git a/third_party/blink/renderer/devtools/front_end/profiler/IsolateSelector.js b/third_party/blink/renderer/devtools/front_end/profiler/IsolateSelector.js index eccc2ea8..ee2bcda8 100644 --- a/third_party/blink/renderer/devtools/front_end/profiler/IsolateSelector.js +++ b/third_party/blink/renderer/devtools/front_end/profiler/IsolateSelector.js
@@ -8,7 +8,7 @@ */ Profiler.IsolateSelector = class extends UI.VBox { constructor() { - super(true); + super(false); /** @type {!UI.ListModel<!Profiler.IsolateSelector.ListItem>} */ this._items = new UI.ListModel(); @@ -16,12 +16,18 @@ this._list = new UI.ListControl(this._items, this, UI.ListMode.NonViewport); this.contentElement.appendChild(this._list.element); - this.registerRequiredCSS('profiler/profileLauncherView.css'); /** @type {!Map<!SDK.IsolateManager.Isolate, !Profiler.IsolateSelector.ListItem>} */ this._itemByIsolate = new Map(); - SDK.isolateManager.observeIsolates(this); + this._totalElement = createElementWithClass('div', 'profile-memory-usage-item hbox'); + this._totalValueDiv = this._totalElement.createChild('div', 'profile-memory-usage-item-size'); + this._totalTrendDiv = this._totalElement.createChild('div', 'profile-memory-usage-item-trend'); + this._totalElement.createChild('div').textContent = ls`Total JS heap size`; + const trendIntervalMinutes = Math.round(SDK.IsolateManager.MemoryTrendWindowMs / 60e3); + this._totalTrendDiv.title = ls`Total page JS heap size change trend over the last ${trendIntervalMinutes} minutes.`; + this._totalValueDiv.title = ls`Total page JS heap size across all VM instances.`; + SDK.isolateManager.observeIsolates(this); SDK.targetManager.addEventListener(SDK.TargetManager.Events.NameChanged, this._targetChanged, this); SDK.targetManager.addEventListener(SDK.TargetManager.Events.InspectedURLChanged, this._targetChanged, this); } @@ -97,6 +103,40 @@ const listItem = this._itemByIsolate.get(isolate); if (listItem) listItem.updateStats(); + this._updateTotal(); + } + + _updateTotal() { + let total = 0; + let trend = 0; + for (const isolate of SDK.isolateManager.isolates()) { + total += isolate.usedHeapSize(); + trend += isolate.usedHeapSizeGrowRate(); + } + this._totalValueDiv.textContent = Number.bytesToString(total); + Profiler.IsolateSelector._formatTrendElement(trend, this._totalTrendDiv); + } + + /** + * @param {number} trendValueMs + * @param {!Element} element + */ + static _formatTrendElement(trendValueMs, element) { + const changeRateBytesPerSecond = trendValueMs * 1e3; + const changeRateThresholdBytesPerSecond = 1024; + if (Math.abs(changeRateBytesPerSecond) < changeRateThresholdBytesPerSecond) + return; + const changeRateText = Number.bytesToString(Math.abs(changeRateBytesPerSecond)); + const changeText = changeRateBytesPerSecond > 0 ? ls`\u2B06${changeRateText}/s` : ls`\u2B07${changeRateText}/s`; + element.classList.toggle('increasing', changeRateBytesPerSecond > 0); + element.textContent = changeText; + } + + /** + * @return {!Element} + */ + totalMemoryElement() { + return this._totalElement; } /** @@ -143,6 +183,7 @@ } _update() { + this._updateTotal(); this._list.invalidateRange(0, this._items.length); } }; @@ -154,12 +195,12 @@ constructor(isolate) { this._isolate = isolate; const trendIntervalMinutes = Math.round(SDK.IsolateManager.MemoryTrendWindowMs / 60e3); - this.element = createElementWithClass('div', 'profile-isolate-item hbox'); - this._heapDiv = this.element.createChild('div', 'profile-isolate-item-heap'); - this._trendDiv = this.element.createChild('div', 'profile-isolate-item-trend'); - this._trendDiv.setAttribute('title', ls`Heap size change trend over the last ${trendIntervalMinutes} minutes.`); - this._nameDiv = this.element.createChild('div', 'profile-isolate-item-name'); - this._heapDiv.setAttribute('title', ls`Heap size in use by live JS objects.`); + this.element = createElementWithClass('div', 'profile-memory-usage-item hbox'); + this._heapDiv = this.element.createChild('div', 'profile-memory-usage-item-size'); + this._trendDiv = this.element.createChild('div', 'profile-memory-usage-item-trend'); + this._nameDiv = this.element.createChild('div', 'profile-memory-usage-item-name'); + this._heapDiv.title = ls`Heap size in use by live JS objects.`; + this._trendDiv.title = ls`Heap size change trend over the last ${trendIntervalMinutes} minutes.`; this.updateTitle(); } @@ -171,18 +212,8 @@ } updateStats() { - this._heapDiv.removeChildren(); this._heapDiv.textContent = Number.bytesToString(this._isolate.usedHeapSize()); - - const changeRateBytesPerSecond = this._isolate.usedHeapSizeGrowRate() * 1e3; - const changeRateThresholdBytesPerSecond = 1024; - if (Math.abs(changeRateBytesPerSecond) < changeRateThresholdBytesPerSecond || this._isolate.samplesCount() < 5) - return; - const changeRateText = changeRateBytesPerSecond > 0 ? - ls`\u2B06${Number.bytesToString(changeRateBytesPerSecond)}/s` : - ls`\u2B07${Number.bytesToString(-changeRateBytesPerSecond)}/s`; - this._trendDiv.classList.toggle('increasing', changeRateBytesPerSecond > 0); - this._trendDiv.textContent = changeRateText; + Profiler.IsolateSelector._formatTrendElement(this._isolate.usedHeapSizeGrowRate(), this._trendDiv); } updateTitle() {
diff --git a/third_party/blink/renderer/devtools/front_end/profiler/ProfileLauncherView.js b/third_party/blink/renderer/devtools/front_end/profiler/ProfileLauncherView.js index 9b201bf6..b78bc66 100644 --- a/third_party/blink/renderer/devtools/front_end/profiler/ProfileLauncherView.js +++ b/third_party/blink/renderer/devtools/front_end/profiler/ProfileLauncherView.js
@@ -37,15 +37,20 @@ */ constructor(profilesPanel) { super(); + this.registerRequiredCSS('profiler/profileLauncherView.css'); + this._panel = profilesPanel; this.element.classList.add('profile-launcher-view'); + const isolateSelector = new Profiler.IsolateSelector(); this._contentElement = this.element.createChild('div', 'profile-launcher-view-content'); this._innerContentElement = this._contentElement.createChild('div'); const controlDiv = this._contentElement.createChild('div', 'vbox profile-launcher-control'); controlDiv.createChild('h1').textContent = ls`Select JavaScript VM instance`; + controlDiv.appendChild(isolateSelector.totalMemoryElement()); const targetDiv = controlDiv.createChild('div', 'vbox profile-launcher-target-list'); - new Profiler.IsolateSelector().show(targetDiv); + isolateSelector.show(targetDiv); + this._controlButton = UI.createTextButton('', this._controlButtonClicked.bind(this), 'profile-launcher-button', true /* primary */); this._contentElement.appendChild(this._controlButton);
diff --git a/third_party/blink/renderer/devtools/front_end/profiler/profileLauncherView.css b/third_party/blink/renderer/devtools/front_end/profiler/profileLauncherView.css index 85a773f..c73652a 100644 --- a/third_party/blink/renderer/devtools/front_end/profiler/profileLauncherView.css +++ b/third_party/blink/renderer/devtools/front_end/profiler/profileLauncherView.css
@@ -4,37 +4,42 @@ * found in the LICENSE file. */ -.profile-isolate-item { +.profile-memory-usage-item { padding: 4px; line-height: 16px; border-left: 2px solid transparent; overflow-x: hidden; } -.profile-isolate-item:hover { +.profile-launcher-target-list .profile-memory-usage-item:hover { background-color: hsla(0, 0%, 0%, 0.05); } -.profile-isolate-item.selected { +.profile-memory-usage-item.selected { border-color: #4285f4; background-color: #4285f420; } -.profile-isolate-item > div { +.profile-memory-usage-item > div { flex-shrink: 0; margin-right: 12px; } -.profile-isolate-item-heap { +.profile-memory-usage-item-size { width: 60px; text-align: right; } -.profile-isolate-item-trend { +.profile-memory-usage-item-trend { width: 80px; color: green; } -.profile-isolate-item-trend.increasing { +.profile-memory-usage-item-trend.increasing { color: red; } + +.profile-launcher-control > .profile-memory-usage-item { + margin-left: 1px; + margin-bottom: 6px; +}
diff --git a/third_party/blink/renderer/modules/vr/navigator_vr.idl b/third_party/blink/renderer/modules/vr/navigator_vr.idl index 6ec39bf..f196ca5 100644 --- a/third_party/blink/renderer/modules/vr/navigator_vr.idl +++ b/third_party/blink/renderer/modules/vr/navigator_vr.idl
@@ -7,7 +7,7 @@ ImplementedAs=NavigatorVR ] partial interface Navigator { // Latest API - [SecureContext, RuntimeEnabled=WebXR, MeasureAs=NavigatorXR] readonly attribute XR xr; + [SecureContext, RuntimeEnabled=WebXR, MeasureAs=NavigatorXR, SameObject] readonly attribute XR xr; // Legacy API [RuntimeEnabled=WebVR, CallWith=ScriptState] Promise<sequence<VRDisplay>> getVRDisplays();
diff --git a/third_party/blink/renderer/modules/xr/xr.cc b/third_party/blink/renderer/modules/xr/xr.cc index b6d309e..837a69b 100644 --- a/third_party/blink/renderer/modules/xr/xr.cc +++ b/third_party/blink/renderer/modules/xr/xr.cc
@@ -427,6 +427,8 @@ query->mode == XRSession::kModeImmersiveAR) { frameProvider()->BeginImmersiveSession(session, std::move(session_ptr)); if (environment_integration) { + // See Task Sources spreadsheet for more information: + // https://docs.google.com/spreadsheets/d/1b-dus1Ug3A8y0lX0blkmOjJILisUASdj8x9YN_XMwYc/view frameProvider()->GetDataProvider()->GetEnvironmentIntegrationProvider( mojo::MakeRequest(&environment_provider_, GetExecutionContext()->GetTaskRunner( @@ -436,16 +438,6 @@ } } else { magic_window_provider_.Bind(std::move(session_ptr->data_provider)); - if (environment_integration) { - // See https://bit.ly/2S0zRAS for task types. - magic_window_provider_->GetEnvironmentIntegrationProvider( - mojo::MakeRequest(&environment_provider_, - GetExecutionContext()->GetTaskRunner( - TaskType::kMiscPlatformAPI))); - - environment_provider_.set_connection_error_handler(WTF::Bind( - &XR::OnEnvironmentProviderDisconnect, WrapWeakPersistent(this))); - } } query->resolver->Resolve(session);
diff --git a/third_party/blink/renderer/modules/xr/xr_frame.idl b/third_party/blink/renderer/modules/xr/xr_frame.idl index 001a3fb..027c52a 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame.idl +++ b/third_party/blink/renderer/modules/xr/xr_frame.idl
@@ -8,7 +8,7 @@ Exposed=Window, RuntimeEnabled=WebXR ] interface XRFrame { - readonly attribute XRSession session; + [SameObject] readonly attribute XRSession session; // More details about the real-world understanding APIs can be found here: // https://github.com/immersive-web/real-world-geometry/blob/master/plane-detection-explainer.md
diff --git a/third_party/blink/renderer/modules/xr/xr_frame_provider.cc b/third_party/blink/renderer/modules/xr/xr_frame_provider.cc index 6b2d929b..67f4ce4 100644 --- a/third_party/blink/renderer/modules/xr/xr_frame_provider.cc +++ b/third_party/blink/renderer/modules/xr/xr_frame_provider.cc
@@ -217,11 +217,10 @@ if (!doc) return; - // This is cleared by either OnNonImmersiveFrameData (GetFrameData callback) - // or by OnNonImmersiveVSync (XRFrameProviderRequestCallback's invoke) - // Currently the only way for neither of these methods to be called is - // if we don't have a MagicWindowProvider and we have an AR Session - // which is guaranteed by our above DCheck. + // This is cleared by either OnNonImmersiveFrameData (GetFrameData callback, + // used if we have a magic window provider), or by OnNonImmersiveVSync + // (XRFrameProviderRequestCallback's invoke, used if there's no magic window + // provider). pending_non_immersive_vsync_ = true; // If we have a Magic Window provider, request frame data and flag that
diff --git a/third_party/blink/renderer/modules/xr/xr_input_source.idl b/third_party/blink/renderer/modules/xr/xr_input_source.idl index 908e163a..ad23e109 100644 --- a/third_party/blink/renderer/modules/xr/xr_input_source.idl +++ b/third_party/blink/renderer/modules/xr/xr_input_source.idl
@@ -21,7 +21,9 @@ ] interface XRInputSource { readonly attribute XRHandedness handedness; readonly attribute XRTargetRayMode targetRayMode; - readonly attribute XRSpace targetRaySpace; - readonly attribute XRSpace? gripSpace; + [SameObject] readonly attribute XRSpace targetRaySpace; + [SameObject] readonly attribute XRSpace? gripSpace; + + // TODO(https://crbug.com/955101): This should be tagged [SameObject]. readonly attribute Gamepad? gamepad; };
diff --git a/third_party/blink/renderer/modules/xr/xr_input_source_event.idl b/third_party/blink/renderer/modules/xr/xr_input_source_event.idl index 293379b0..2564a638 100644 --- a/third_party/blink/renderer/modules/xr/xr_input_source_event.idl +++ b/third_party/blink/renderer/modules/xr/xr_input_source_event.idl
@@ -8,7 +8,7 @@ RuntimeEnabled=WebXR, Constructor(DOMString type, XRInputSourceEventInit eventInitDict) ] interface XRInputSourceEvent : Event { - readonly attribute XRFrame frame; - readonly attribute XRInputSource inputSource; - readonly attribute long? buttonIndex; + [SameObject] readonly attribute XRFrame frame; + [SameObject] readonly attribute XRInputSource inputSource; + [SameObject] readonly attribute long? buttonIndex; };
diff --git a/third_party/blink/renderer/modules/xr/xr_pose.idl b/third_party/blink/renderer/modules/xr/xr_pose.idl index 9a28215..cee232b 100644 --- a/third_party/blink/renderer/modules/xr/xr_pose.idl +++ b/third_party/blink/renderer/modules/xr/xr_pose.idl
@@ -8,6 +8,6 @@ Exposed=Window, RuntimeEnabled=WebXR ] interface XRPose { - readonly attribute XRRigidTransform transform; + [SameObject] readonly attribute XRRigidTransform transform; readonly attribute boolean emulatedPosition; };
diff --git a/third_party/blink/renderer/modules/xr/xr_presentation_context.idl b/third_party/blink/renderer/modules/xr/xr_presentation_context.idl index 4d507e9e..6c586cb 100644 --- a/third_party/blink/renderer/modules/xr/xr_presentation_context.idl +++ b/third_party/blink/renderer/modules/xr/xr_presentation_context.idl
@@ -9,5 +9,5 @@ RuntimeEnabled=WebXR ] interface XRPresentationContext { // back-reference to the canvas - readonly attribute HTMLCanvasElement canvas; + [SameObject, SaveSameObject] readonly attribute HTMLCanvasElement canvas; };
diff --git a/third_party/blink/renderer/modules/xr/xr_ray.cc b/third_party/blink/renderer/modules/xr/xr_ray.cc index 0be5ebc..3204b96b 100644 --- a/third_party/blink/renderer/modules/xr/xr_ray.cc +++ b/third_party/blink/renderer/modules/xr/xr_ray.cc
@@ -100,10 +100,10 @@ // (0,0,0) with direction (0,0,-1) into ray originating at |origin_| with // direction |direction_|. - matrix_ = std::make_unique<TransformationMatrix>(); + TransformationMatrix matrix; // Translation from 0 to |origin_| is simply translation by |origin_|. - matrix_->Translate3d(origin_->x(), origin_->y(), origin_->z()); + matrix.Translate3d(origin_->x(), origin_->y(), origin_->z()); const blink::FloatPoint3D initialRayDirection = blink::FloatPoint3D{0.f, 0.f, -1.f}; @@ -122,23 +122,26 @@ blink::FloatPoint3D axis = FloatPoint3D{1, 0, 0}; cos_angle = -1; - matrix_->Rotate3d(axis.X(), axis.Y(), axis.Z(), - rad2deg(std::acos(cos_angle))); + matrix.Rotate3d(axis.X(), axis.Y(), axis.Z(), + rad2deg(std::acos(cos_angle))); } else { // Rotation needed - create it from axis-angle. blink::FloatPoint3D axis = initialRayDirection.Cross(desiredRayDirection); - matrix_->Rotate3d(axis.X(), axis.Y(), axis.Z(), - rad2deg(std::acos(cos_angle))); + matrix.Rotate3d(axis.X(), axis.Y(), axis.Z(), + rad2deg(std::acos(cos_angle))); } + + matrix_ = transformationMatrixToDOMFloat32Array(matrix); } - return transformationMatrixToDOMFloat32Array(*matrix_); + return matrix_; } void XRRay::Trace(blink::Visitor* visitor) { visitor->Trace(origin_); visitor->Trace(direction_); + visitor->Trace(matrix_); ScriptWrappable::Trace(visitor); }
diff --git a/third_party/blink/renderer/modules/xr/xr_ray.h b/third_party/blink/renderer/modules/xr/xr_ray.h index f30bbfaa..2652cd24 100644 --- a/third_party/blink/renderer/modules/xr/xr_ray.h +++ b/third_party/blink/renderer/modules/xr/xr_ray.h
@@ -45,7 +45,7 @@ Member<DOMPointReadOnly> origin_; Member<DOMPointReadOnly> direction_; - std::unique_ptr<TransformationMatrix> matrix_; + Member<DOMFloat32Array> matrix_; }; } // namespace blink
diff --git a/third_party/blink/renderer/modules/xr/xr_ray.idl b/third_party/blink/renderer/modules/xr/xr_ray.idl index 68d261a..3bdfaa9 100644 --- a/third_party/blink/renderer/modules/xr/xr_ray.idl +++ b/third_party/blink/renderer/modules/xr/xr_ray.idl
@@ -12,7 +12,7 @@ Constructor(DOMPointInit origin, DOMPointInit direction), Constructor(XRRigidTransform transform) ] interface XRRay { - readonly attribute DOMPointReadOnly origin; - readonly attribute DOMPointReadOnly direction; - readonly attribute Float32Array matrix; + [SameObject] readonly attribute DOMPointReadOnly origin; + [SameObject] readonly attribute DOMPointReadOnly direction; + [SameObject] readonly attribute Float32Array matrix; };
diff --git a/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl b/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl index 63263126..7a290ac 100644 --- a/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl +++ b/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl
@@ -9,6 +9,6 @@ OriginTrialEnabled=WebXR, Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict) ] interface XRReferenceSpaceEvent : Event { - readonly attribute XRReferenceSpace referenceSpace; - readonly attribute XRRigidTransform transform; + [SameObject] readonly attribute XRReferenceSpace referenceSpace; + [SameObject] readonly attribute XRRigidTransform transform; };
diff --git a/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl b/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl index 1abcda0..f76a795d1 100644 --- a/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl +++ b/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl
@@ -10,8 +10,8 @@ RuntimeEnabled=WebXR, Constructor(optional DOMPointInit position, optional DOMPointInit orientation) ] interface XRRigidTransform { - readonly attribute DOMPointReadOnly position; - readonly attribute DOMPointReadOnly orientation; - readonly attribute Float32Array matrix; + [SameObject] readonly attribute DOMPointReadOnly position; + [SameObject] readonly attribute DOMPointReadOnly orientation; + [SameObject] readonly attribute Float32Array matrix; [SameObject] readonly attribute XRRigidTransform inverse; };
diff --git a/third_party/blink/renderer/modules/xr/xr_session.idl b/third_party/blink/renderer/modules/xr/xr_session.idl index bec991ce2..54b874a 100644 --- a/third_party/blink/renderer/modules/xr/xr_session.idl +++ b/third_party/blink/renderer/modules/xr/xr_session.idl
@@ -22,8 +22,8 @@ RuntimeEnabled=WebXR ] interface XRSession : EventTarget { readonly attribute XREnvironmentBlendMode environmentBlendMode; - readonly attribute XRRenderState renderState; - readonly attribute XRSpace viewerSpace; + [SameObject] readonly attribute XRRenderState renderState; + [SameObject] readonly attribute XRSpace viewerSpace; attribute EventHandler onblur; attribute EventHandler onfocus;
diff --git a/third_party/blink/renderer/modules/xr/xr_session_event.idl b/third_party/blink/renderer/modules/xr/xr_session_event.idl index 46ef20f..0079794 100644 --- a/third_party/blink/renderer/modules/xr/xr_session_event.idl +++ b/third_party/blink/renderer/modules/xr/xr_session_event.idl
@@ -9,5 +9,5 @@ RuntimeEnabled=WebXR, Constructor(DOMString type, XRSessionEventInit eventInitDict) ] interface XRSessionEvent : Event { - readonly attribute XRSession session; + [SameObject] readonly attribute XRSession session; };
diff --git a/third_party/blink/renderer/modules/xr/xr_view.h b/third_party/blink/renderer/modules/xr/xr_view.h index 4f215d6d..d032c7c 100644 --- a/third_party/blink/renderer/modules/xr/xr_view.h +++ b/third_party/blink/renderer/modules/xr/xr_view.h
@@ -56,6 +56,7 @@ double canvas_width, double canvas_height); + // TODO(crbug.com/958014): Remove UpdatePoseMatrix to ensure SameObject. void UpdatePoseMatrix(TransformationMatrix pose_matrix); // TODO(bajones): Should eventually represent this as a full transform.
diff --git a/third_party/blink/renderer/modules/xr/xr_view.idl b/third_party/blink/renderer/modules/xr/xr_view.idl index aa17b8b..b82e9eb 100644 --- a/third_party/blink/renderer/modules/xr/xr_view.idl +++ b/third_party/blink/renderer/modules/xr/xr_view.idl
@@ -14,6 +14,7 @@ RuntimeEnabled=WebXR ] interface XRView { readonly attribute XREye eye; - readonly attribute Float32Array projectionMatrix; + [SameObject] readonly attribute Float32Array projectionMatrix; + // TODO(https://crbug.com/958014): Ensure that this can be SameObject. readonly attribute XRRigidTransform transform; };
diff --git a/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc b/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc index 1748556..f4d53ee 100644 --- a/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc +++ b/third_party/blink/renderer/modules/xr/xr_viewer_pose.cc
@@ -14,6 +14,8 @@ XRSession* session, std::unique_ptr<TransformationMatrix> pose_model_matrix) : XRPose(std::move(pose_model_matrix), session->EmulatedPosition()) { + // TODO(https://crbug.com/958014): Ensure that this copy doesn't still + // point to the underlying views objects from session. // session will update views if required // views array gets copied to views_ views_ = session->views();
diff --git a/third_party/blink/renderer/modules/xr/xr_viewer_pose.idl b/third_party/blink/renderer/modules/xr/xr_viewer_pose.idl index 4265678..5cb5d7a 100644 --- a/third_party/blink/renderer/modules/xr/xr_viewer_pose.idl +++ b/third_party/blink/renderer/modules/xr/xr_viewer_pose.idl
@@ -9,5 +9,6 @@ Exposed=Window, RuntimeEnabled=WebXR ] interface XRViewerPose : XRPose { + // TODO(https://crbug.com/958014): Ensure that this can be SameObject. readonly attribute FrozenArray<XRView> views; };
diff --git a/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl b/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl index 12e69650..d1091dd 100644 --- a/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl +++ b/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl
@@ -12,13 +12,13 @@ Constructor(XRSession session, XRWebGLRenderingContext context, optional XRWebGLLayerInit layerInit), RaisesException=Constructor ] interface XRWebGLLayer : XRLayer { - [ImplementedAs=getXRWebGLRenderingContext] readonly attribute XRWebGLRenderingContext context; + [SameObject, SaveSameObject, ImplementedAs=getXRWebGLRenderingContext] readonly attribute XRWebGLRenderingContext context; readonly attribute boolean antialias; readonly attribute boolean ignoreDepthValues; readonly attribute unsigned long framebufferWidth; readonly attribute unsigned long framebufferHeight; - readonly attribute WebGLFramebuffer framebuffer; + [SameObject] readonly attribute WebGLFramebuffer framebuffer; XRViewport? getViewport(XRView view); void requestViewportScaling(double viewportScaleFactor);
diff --git a/third_party/blink/renderer/platform/bindings/v8_private_property.h b/third_party/blink/renderer/platform/bindings/v8_private_property.h index 49fd7a79..9eb1a25d 100644 --- a/third_party/blink/renderer/platform/bindings/v8_private_property.h +++ b/third_party/blink/renderer/platform/bindings/v8_private_property.h
@@ -49,6 +49,8 @@ X(SameObject, NotificationVibrate) \ X(SameObject, PerformanceLongTaskTimingAttribution) \ X(SameObject, PushManagerSupportedContentEncodings) \ + X(SameObject, XRPresentationContextCanvas) \ + X(SameObject, XRWebGLLayerContext) \ SCRIPT_PROMISE_PROPERTIES(X, Promise) \ SCRIPT_PROMISE_PROPERTIES(X, Resolver)
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc index 899a849..8d64f78 100644 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -660,4 +660,8 @@ RuntimeEnabledFeatures::SetSkipTouchEventFilterEnabled(enable); } +void WebRuntimeFeatures::EnableStaleWhileRevalidate(bool enable) { + RuntimeEnabledFeatures::SetStaleWhileRevalidateEnabled(enable); +} + } // namespace blink
diff --git a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py index ef05641..1b2e7607 100644 --- a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py +++ b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
@@ -84,16 +84,32 @@ fs = host.filesystem web_tests_dir = port.web_tests_dir() virtual_suites = port.virtual_test_suites() + # Make sure ancestors come first (e.g. "virtual/foo/bar", "virtual/foo/bar/baz"). + virtual_suites.sort(key=lambda s: s.name) + seen = set() failures = [] for suite in virtual_suites: + suite_comps = suite.name.split(port.TEST_PATH_SEPARATOR) + # E.g. virtual/foo/fast/css/a.html will execute twice if + # both virtual/foo/fast and virtual/foo/fast/css are both defined. + for i in range(3, len(suite_comps)): + ancestor = port.TEST_PATH_SEPARATOR.join(suite_comps[:i]) + if ancestor in seen: + failure = ('{} is a subset of {}; you will see tests under the ' + 'former running multiple times (potentially with ' + 'different args).'.format(suite.name, ancestor)) + _log.error(failure) + failures.append(failure) + seen.add(suite.name) + # A virtual test suite needs either # - a top-level README.md (e.g. virtual/foo/README.md) # - a README.txt for each covered dir/file (e.g. # virtual/foo/http/tests/README.txt, virtual/foo/fast/README.txt, ...) - comps = [web_tests_dir] + suite.name.split('/') + ['README.txt'] + comps = [web_tests_dir] + suite_comps + ['README.txt'] path_to_readme_txt = fs.join(*comps) - comps = [web_tests_dir] + suite.name.split('/')[:2] + ['README.md'] + comps = [web_tests_dir] + suite_comps[:2] + ['README.md'] path_to_readme_md = fs.join(*comps) if not fs.exists(path_to_readme_txt) and not fs.exists(path_to_readme_md): failure = '{} and {} are both missing (each virtual suite must have one).'.format(
diff --git a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py index 3102a17..959b75c 100644 --- a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py +++ b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
@@ -34,6 +34,8 @@ from blinkpy.common.host_mock import MockHost from blinkpy.common.system.log_testing import LoggingTestCase from blinkpy.web_tests import lint_test_expectations +from blinkpy.web_tests.port.base import VirtualTestSuite +from blinkpy.web_tests.port.test import WEB_TEST_DIR class FakePort(object): @@ -139,7 +141,7 @@ host.port_factory.get = lambda platform, options=None: port host.port_factory.all_port_names = lambda platform=None: [port.name()] - host.filesystem.write_text_file('/test.checkout/wtests/LeakExpectations', '-- syntax error') + host.filesystem.write_text_file(WEB_TEST_DIR + '/LeakExpectations', '-- syntax error') res = lint_test_expectations.lint(host, options) @@ -167,20 +169,36 @@ class CheckVirtualSuiteTest(unittest.TestCase): - def test_check_virtual_test_suites(self): - host = MockHost() - options = optparse.Values({'platform': 'test', 'debug_rwt_logging': False}) - orig_get = host.port_factory.get - host.port_factory.get = lambda options: orig_get('test', options=options) + def setUp(self): + self.host = MockHost() + self.options = optparse.Values({'platform': 'test', 'debug_rwt_logging': False}) + self.port = self.host.port_factory.get('test', options=self.options) + self.host.port_factory.get = lambda options=None: self.port - res = lint_test_expectations.check_virtual_test_suites(host, options) - self.assertTrue(res) + def test_check_virtual_test_suites_readme(self): + self.port.virtual_test_suites = lambda: [ + VirtualTestSuite(prefix='foo', base='test', args='--foo'), + VirtualTestSuite(prefix='bar', base='test', args='--bar'), + ] - options = optparse.Values({'platform': 'test', 'debug_rwt_logging': False}) - host.filesystem.exists = lambda path: True - res = lint_test_expectations.check_virtual_test_suites(host, options) + res = lint_test_expectations.check_virtual_test_suites(self.host, self.options) + self.assertEqual(len(res), 2) + + self.host.filesystem.files[WEB_TEST_DIR + '/virtual/foo/README.md'] = '' + self.host.filesystem.files[WEB_TEST_DIR + '/virtual/bar/test/README.txt'] = '' + res = lint_test_expectations.check_virtual_test_suites(self.host, self.options) self.assertFalse(res) + def test_check_virtual_test_suites_inclusion(self): + self.port.virtual_test_suites = lambda: [ + VirtualTestSuite(prefix='foo', base='test/sub', args='--foo'), + VirtualTestSuite(prefix='foo', base='test', args='--foo'), + ] + + self.host.filesystem.exists = lambda _: True + res = lint_test_expectations.check_virtual_test_suites(self.host, self.options) + self.assertEqual(len(res), 1) + class MainTest(unittest.TestCase):
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index e4060b9..8519771e 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -306,7 +306,7 @@ crbug.com/887000 virtual/prefer_compositing_to_lcd_text/scrollbars/hidden-scrollbars-invisible.html [ Failure ] crbug.com/882975 virtual/threaded/fast/events/pinch/gesture-pinch-zoom-prevent-in-handler.html [ Failure Pass ] crbug.com/882975 virtual/threaded/fast/events/pinch/scroll-visual-viewport-send-boundary-events.html [ Failure Pass ] -crbug.com/884239 virtual/threaded/animations/animationworklet/worklet-animation-local-time-undefined.html [ Failure Pass ] +crbug.com/884239 virtual/threaded/animations/animationworklet/worklet-animation-local-time-undefined.html [ Timeout Failure Pass ] crbug.com/884239 virtual/disable-blink-gen-property-trees/animations/animationworklet/worklet-animation-local-time-undefined.html [ Skip ] # Subpixel rounding differences that are incorrect. crbug.com/836886 virtual/prefer_compositing_to_lcd_text/compositing/overflow/scaled-overflow.html [ Failure ] @@ -4050,7 +4050,7 @@ crbug.com/626703 external/wpt/media-source/mediasource-avtracks.html [ Failure Crash ] crbug.com/626703 external/wpt/media-source/mediasource-getvideoplaybackquality.html [ Timeout Failure ] crbug.com/626703 external/wpt/pointerevents/pointerevent_disabled_form_control-manual.html [ Timeout Pass ] -crbug.com/626703 external/wpt/presentation-api/controlling-ua/getAvailability.https.html [ Timeout ] +crbug.com/958104 external/wpt/presentation-api/controlling-ua/getAvailability.https.html [ Failure ] crbug.com/626703 external/wpt/requestidlecallback/callback-timeout.html [ Timeout ] crbug.com/626703 external/wpt/requestidlecallback/callback-xhr-sync.html [ Timeout ] crbug.com/626703 external/wpt/screen-orientation/onchange-event-subframe.html [ Timeout ] @@ -6318,13 +6318,8 @@ crbug.com/954998 [ Mac ] http/tests/devtools/tracing/timeline-js/timeline-js-line-level-profile-end-to-end.js [ Pass Timeout ] # Sheriff 2019-04-25 -crbug.com/956547 fast/dom/raf-throttling-out-of-view-cross-origin-page.html [ Pass Timeout ] -crbug.com/956547 fast/dom/timer-throttling-out-of-view-cross-origin-page.html [ Pass Timeout ] crbug.com/956736 virtual/gpu-rasterization/images/imagemap-focus-ring-outline-color-not-inherited-from-map.html [ Pass Failure ] -# Sheriff 2019-04-25 -crbug.com/956547 http/tests/dom/raf-throttling-out-of-view-cross-origin-page.html [ Pass Timeout ] - # Sheriff 2019-04-30 crbug.com/946534 [ Mac10.10 Mac10.11 ] external/wpt/animation-worklet/worklet-animation-with-scroll-timeline-root-scroller.https.html [ Pass Failure ] crbug.com/948785 [ Debug ] fast/events/pointerevents/pointer-event-consumed-touchstart-in-slop-region.html [ Pass Failure ]
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites index 26ef64b..a9facb10 100644 --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -21,11 +21,6 @@ }, { "prefix": "threaded", - "base": "animations/animationworklet", - "args": ["--enable-threaded-compositing"] - }, - { - "prefix": "threaded", "base": "external/wpt/animation-worklet", "args": ["--enable-threaded-compositing"] },
diff --git a/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/getAvailability.https.html b/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/getAvailability.https.html index b6d8736..71b19e6a 100644 --- a/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/getAvailability.https.html +++ b/third_party/blink/web_tests/external/wpt/presentation-api/controlling-ua/getAvailability.https.html
@@ -17,6 +17,10 @@ // Presentation Availability Tests - begin // --------------------------------------- + const catchNotSupported = err => { + assert_equals(err.name, 'NotSupportedError', 'getAvailability() rejects a Promise with a NotSupportedError exception, if the browser can find presentation displays only when starting a connection.') + }; + promise_test(t => { let availability; @@ -24,39 +28,27 @@ assert_true(request instanceof PresentationRequest, 'The request is an instance of PresentationRequest.'); const promise = request.getAvailability(); - assert_equals(promise, request.getAvailability(), 'If the PresentationRequest object has an unsettled Promise, getAvailability returns that Promise.'); - - function catchNotSupported(err) { - assert_equals(err.name, 'NotSupportedError', 'getAvailability() rejects a Promise with a NotSupportedError exception, if the browser can find presentation displays only when starting a connection.') - } + assert_true(promise instanceof Promise, 'PresentationRequest.getAvailability() returns a Promise.'); + const samePromise = request.getAvailability(); + assert_true(samePromise instanceof Promise, 'PresentationRequest.getAvailabilty() returns a Promise.'); + assert_equals(promise, samePromise, 'If the PresentationRequest object has an unsettled Promise, getAvailability returns that Promise.'); return promise.then(a => { - availability = a; + availability = a; + assert_true(availability instanceof PresentationAvailability, 'The promise is resolved with an instance of PresentationAvailability.'); + assert_equals(typeof availability.value, 'boolean', 'The availability has an boolean value.'); - assert_true(availability instanceof PresentationAvailability, 'The promise is resolved with an instance of PresentationAvailability.'); - assert_equals(typeof availability.value, 'boolean', 'The availability has an boolean value.'); + const request2 = new PresentationRequest('https://example.com'); + return request2.getAvailability(); + }).then(a => { + assert_not_equals(availability, a, 'A presentation availability object is newly created if the presentation request has a newly added presentation URLs.'); - // The value of the presentation availability object is set to false, when the object is newly created. - const waitForChange = () => { - const eventWatcher = new EventWatcher(t, availability, 'change'); - return eventWatcher.wait_for('change'); - }; + const newPromise = request.getAvailability(); + assert_not_equals(promise, newPromise, 'If the Promise from a previous call to getAvailability has already been settled, getAvailability returns a new Promise.'); - return (availability.value ? Promise.resolve() : waitForChange()).then(() => { - assert_true(availability.value, 'The availability value is true when any presentation display is available.'); - - const request2 = new PresentationRequest('https://example.com'); - return request2.getAvailability(); - }).then(a => { - assert_not_equals(availability, a, 'A presentation availability object is newly created if the presentation request has a newly added presentation URLs.'); - - const newPromise = request.getAvailability(); - assert_not_equals(promise, newPromise, 'If the Promise from a previous call to getAvailability has already been settled, getAvailability returns a new Promise.'); - - return newPromise.then(newAvailability => { - assert_equals(availability, newAvailability, 'Promises from a PresentationRequest\'s getAvailability are resolved with the same PresentationAvailability object.'); - }, catchNotSupported); - }, catchNotSupported); + return newPromise.then(newAvailability => { + assert_equals(availability, newAvailability, 'Promises from a PresentationRequest\'s getAvailability are resolved with the same PresentationAvailability object.'); + }, catchNotSupported); }, catchNotSupported); }); </script>
diff --git a/third_party/blink/web_tests/fast/dom/raf-throttling-out-of-view-cross-origin-page.html b/third_party/blink/web_tests/fast/dom/raf-throttling-out-of-view-cross-origin-page.html index 4949bb6..c827d6a 100644 --- a/third_party/blink/web_tests/fast/dom/raf-throttling-out-of-view-cross-origin-page.html +++ b/third_party/blink/web_tests/fast/dom/raf-throttling-out-of-view-cross-origin-page.html
@@ -28,7 +28,9 @@ let rafCount = e.data; // TODO(skyostil): Chrome always runs one animation frame while the layout // test harness does none. Find out where the difference is coming from. - assert_less_than_equal(rafCount, 1, "requestAnimationFrame() callback count") + throttlingTest.step(() => { + assert_less_than_equal(rafCount, 1, "requestAnimationFrame() callback count") + }); throttlingTest.done(); }); </script>
diff --git a/third_party/blink/web_tests/fast/dom/timer-throttling-out-of-view-cross-origin-page.html b/third_party/blink/web_tests/fast/dom/timer-throttling-out-of-view-cross-origin-page.html index 137d52d..2fafd8b 100644 --- a/third_party/blink/web_tests/fast/dom/timer-throttling-out-of-view-cross-origin-page.html +++ b/third_party/blink/web_tests/fast/dom/timer-throttling-out-of-view-cross-origin-page.html
@@ -26,7 +26,9 @@ addEventListener('message', (e) => { let timerDelay = e.data; - assert_greater_than(timerDelay, 900, "Timer interval") + throttlingTest.step(() => { + assert_greater_than(timerDelay, 900, "Timer interval") + }); throttlingTest.done(); }); </script>
diff --git a/third_party/blink/web_tests/http/tests/dom/raf-throttling-out-of-view-cross-origin-page.html b/third_party/blink/web_tests/http/tests/dom/raf-throttling-out-of-view-cross-origin-page.html index 0080d956..e8da561 100644 --- a/third_party/blink/web_tests/http/tests/dom/raf-throttling-out-of-view-cross-origin-page.html +++ b/third_party/blink/web_tests/http/tests/dom/raf-throttling-out-of-view-cross-origin-page.html
@@ -48,7 +48,9 @@ }); } else { let rafCount = e.data; - assert_equals(rafCount, firstRafCount, "requestAnimationFrame() callback count") + throttlingTest.step(() => { + assert_equals(rafCount, firstRafCount, "requestAnimationFrame() callback count") + }); throttlingTest.done(); } });
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces.html index b64a050..762b753 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/animationworklet-origin-trial-interfaces.html
@@ -28,12 +28,12 @@ OriginTrialsHelper.add_token(token); test(t => { - OriginTrialsHelper.check_interfaces(this, interfaces_to_check); + OriginTrialsHelper.check_interfaces_exist(this, interfaces_to_check); }, 'AnimationWorklet related interfaces in Origin-Trial enabled document.'); test(t => { assert_own_property(CSS, 'animationWorklet'); - OriginTrialsHelper.check_properties(this, properties_to_check); + OriginTrialsHelper.check_properties_exist(this, properties_to_check); }, 'AnimationWorklet related properties in Origin-Trial enabled document.'); </script>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/auto-picture-in-picture-origin-trial-properties.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/auto-picture-in-picture-origin-trial-properties.html index 8c843b42..9d3d6bc 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/auto-picture-in-picture-origin-trial-properties.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/auto-picture-in-picture-origin-trial-properties.html
@@ -11,7 +11,7 @@ <script src="/resources/origin-trials-helper.js"></script> <script> test(t => { - OriginTrialsHelper.check_properties(this, + OriginTrialsHelper.check_properties_exist(this, { 'HTMLVideoElement': ['autoPictureInPicture'] }); }, 'Auto Picture-in-Picture properties in Origin-Trial enabled document.'); </script> \ No newline at end of file
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/contacts-manager-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/contacts-manager-trial-interfaces.html index 76f03ed..16c7c9d 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/contacts-manager-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/contacts-manager-trial-interfaces.html
@@ -10,6 +10,6 @@ <script src="/resources/origin-trials-helper.js"></script> <script> test(() => { - OriginTrialsHelper.check_properties(this, { 'ContactsManager': ['select'] }); + OriginTrialsHelper.check_properties_exist(this, { 'ContactsManager': ['select'] }); }, 'Contact API interfaces and properties in Origin-Trial enabled document.'); </script>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/cookiestore-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/cookiestore-origin-trial-interfaces.html index 7df2c0a2..3c27e19 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/cookiestore-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/cookiestore-origin-trial-interfaces.html
@@ -11,7 +11,7 @@ <script src="/serviceworker/resources/test-helpers.js"></script> <script> test(t => { - OriginTrialsHelper.check_properties(this, { + OriginTrialsHelper.check_properties_exist(this, { 'CookieStore': ['get', 'getAll', 'set', 'delete', 'onchange'], 'CookieChangeEvent': ['changed', 'deleted'], });
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/eventtiming-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/eventtiming-origin-trial-interfaces.html index 435b04a..362286e7 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/eventtiming-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/eventtiming-origin-trial-interfaces.html
@@ -10,7 +10,7 @@ <script src="/resources/origin-trials-helper.js"></script> <script> test(t => { - OriginTrialsHelper.check_properties(this, + OriginTrialsHelper.check_properties_exist(this, {'PerformanceEventTiming': ['processingStart', 'cancelable'], 'Performance': ['clearEventTimings', 'setEventTimingBufferMaxSize', 'oneventtimingbufferfull'], });
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/genericsensor-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/genericsensor-origin-trial-interfaces.html index 91bd898..8150f0a 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/genericsensor-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/genericsensor-origin-trial-interfaces.html
@@ -10,7 +10,7 @@ <script src="../../resources/origin-trials-helper.js"></script> <script> test(t => { - OriginTrialsHelper.check_properties(this, + OriginTrialsHelper.check_properties_exist(this, {'Sensor': ['start', 'stop', 'hasReading', 'activated', 'timestamp', 'onerror', 'onreading', 'onactivate'], 'Accelerometer': ['x', 'y', 'z'], 'Gyroscope': ['x', 'y', 'z'],
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces-script-added.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces-script-added.html index 5465f78..b1a9e0f1 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces-script-added.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces-script-added.html
@@ -23,6 +23,6 @@ OriginTrialsHelper.add_token(token); test(t => { - OriginTrialsHelper.check_properties(this, properties_to_check); + OriginTrialsHelper.check_properties_exist(this, properties_to_check); }, "InstalledApp related properties is on interfaces after adding trial token via script."); </script>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces.html index 142ec49..296a44da 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/installedapp-origin-trial-interfaces.html
@@ -10,7 +10,7 @@ <script src="../../resources/origin-trials-helper.js"></script> <script> test(t => { - OriginTrialsHelper.check_properties(this, + OriginTrialsHelper.check_properties_exist(this, {'Navigator': ['getInstalledRelatedApps']}); }, "InstalledApp related properties is on interfaces in Origin-Trial enabled document."); </script>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/isinputpending-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/isinputpending-origin-trial-interfaces.html index f89bfa0..f864b9b0 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/isinputpending-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/isinputpending-origin-trial-interfaces.html
@@ -12,7 +12,7 @@ <script> test(t => { - OriginTrialsHelper.check_properties(this, + OriginTrialsHelper.check_properties_exist(this, { 'Navigator': ['scheduling'], 'Scheduling': ['isInputPending'],
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/resources/cookiestore-origin-trial-interfaces-serviceworker-enabled.php b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/resources/cookiestore-origin-trial-interfaces-serviceworker-enabled.php index c2323c52..34067c79 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/resources/cookiestore-origin-trial-interfaces-serviceworker-enabled.php +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/resources/cookiestore-origin-trial-interfaces-serviceworker-enabled.php
@@ -8,7 +8,7 @@ '/resources/origin-trials-helper.js'); test(t => { - OriginTrialsHelper.check_properties(this, { + OriginTrialsHelper.check_properties_exist(this, { 'CookieStore': ['get', 'getAll', 'set', 'delete', 'subscribeToChanges', 'getChangeSubscriptions'], 'ExtendableCookieChangeEvent': ['changed', 'deleted'],
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-jitter-buffer-delay-hint.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-jitter-buffer-delay-hint.html index 2bea5de..4cf5ffb 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-jitter-buffer-delay-hint.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-jitter-buffer-delay-hint.html
@@ -20,7 +20,7 @@ OriginTrialsHelper.add_token(token); test(t => { - OriginTrialsHelper.check_properties( + OriginTrialsHelper.check_properties_exist( this, {'RTCRtpReceiver': ['jitterBufferDelayHint']}); }, 'RTCRtpReceiver jitterBufferDelayHint is in Origin-Trial enabled document');
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-quic-transport-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-quic-transport-origin-trial-interfaces.html index 306a950..4ae1c795 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-quic-transport-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/rtc-quic-transport-origin-trial-interfaces.html
@@ -29,7 +29,7 @@ }; test(t => { - OriginTrialsHelper.check_properties(this, properties_to_check); + OriginTrialsHelper.check_properties_exist(this, properties_to_check); }, 'RTCQuicTransport and RTCIceTransport properties are available.'); </script>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-gamepad-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-gamepad-origin-trial-interfaces.html index c2f5dc0..b3872cf 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-gamepad-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-gamepad-origin-trial-interfaces.html
@@ -36,13 +36,13 @@ OriginTrialsHelper.add_token(token); test(t => { - OriginTrialsHelper.check_properties(this, properties_to_check); + OriginTrialsHelper.check_properties_exist(this, properties_to_check); }, 'The WebVR-specific Gamepad properties are available.'); test(t => { - OriginTrialsHelper.check_interfaces(this, interfaces_to_check); + OriginTrialsHelper.check_interfaces_exist(this, interfaces_to_check); // Check the properties of the interfaces_to_check. - OriginTrialsHelper.check_properties(this, { + OriginTrialsHelper.check_properties_exist(this, { 'GamepadPose': [ 'hasOrientation', 'hasPosition',
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-origin-trial-interfaces.html index 875094c..f6b1ebcf 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webvr-origin-trial-interfaces.html
@@ -27,11 +27,11 @@ OriginTrialsHelper.add_token(token); test(t => { - OriginTrialsHelper.check_properties(this, properties_to_check); + OriginTrialsHelper.check_properties_exist(this, properties_to_check); }, 'WebVR properties are available.'); test(t => { - OriginTrialsHelper.check_properties(this, { + OriginTrialsHelper.check_properties_exist(this, { 'Navigator': ['getVRDisplays'], 'VRDisplay':[ 'displayId',
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html index 28c4ad3..103842d 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html
@@ -5,57 +5,37 @@ <script src="../../../resources/testharnessreport.js"></script> <script src="../../../resources/origin-trials-helper.js"></script> <script> + let properties_to_check = {'Navigator': ['xr']}; -// Can only run these two tests if webXR is not enabled via a Chrome flag. -// That is only the case when running this in a virtual test suite (by default, -// runtime enabled features are on for layout tests). -// To run in virtual test suite: -// tools/run_web_tests.py virtual/origin-trials-runtimeflags-disabled/http/tests/origin_trials/webexposed -if (!self.internals.runtimeFlags.webXREnabled) { - test(t => { - OriginTrialsHelper.check_properties_missing(this, properties_to_check); - }, "WebXR's entrypoint properties are not available without a token."); - - // The WebXRDeviceM69 token has been disabled due to breaking webxr API - // changes made in M73. - // generated with command - // tools/origin_trials/generate_token.py http://127.0.0.1:8000 WebXRDeviceM69 --expire-timestamp=2000000000 - let token_m69 = "AkvrKmuIjbDoP4zBBuZLWVMJLzFCV+2l8Iv2RPYCSbeSjFRRidSbIgW41p+jnCcOukYZ3tE4ZvQsR6qNhiIW5QoAAABWeyJvcmlnaW4iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZlYXR1cmUiOiAiV2ViWFJEZXZpY2VNNjkiLCAiZXhwaXJ5IjogMjAwMDAwMDAwMH0="; - OriginTrialsHelper.add_token(token_m69); - test(t => { - OriginTrialsHelper.check_properties_missing(this, properties_to_check); - }, "WebXR's entrypoint properties are not available with WebXRDeviceM69 token."); -} - -// generated with command -// tools/origin_trials/generate_token.py http://127.0.0.1:8000 WebXRDeviceM73 --expire-timestamp=2000000000 -let token_m73 = "AkdUKG/76uPyi1gvtP+q4o8XF9C6DWpF45h6xzMHwBFS+cfXrgo0zMHkA1T9ovuz+VVtxacaS/dc8F8JeWpcqAoAAABWeyJvcmlnaW4iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZlYXR1cmUiOiAiV2ViWFJEZXZpY2VNNzMiLCAiZXhwaXJ5IjogMjAwMDAwMDAwMH0="; -OriginTrialsHelper.add_token(token_m73); +// The WebXR APIs should not be present without the token. test(t => { - OriginTrialsHelper.check_properties(this, properties_to_check); -}, "WebXR's entrypoint properties are available with WebXRDeviceM73 token."); + OriginTrialsHelper.check_properties_missing_unless_runtime_flag(this, properties_to_check, 'webXREnabled'); +}, "WebXR's entrypoint properties are not available without a token."); + +// Add the token, which was generated with the following command: +// tools/origin_trials/generate_token.py http://127.0.0.1:8000 WebXRDeviceM73 --expire-timestamp=2000000000 +let token = "AkdUKG/76uPyi1gvtP+q4o8XF9C6DWpF45h6xzMHwBFS+cfXrgo0zMHkA1T9ovuz+VVtxacaS/dc8F8JeWpcqAoAAABWeyJvcmlnaW4iOiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIiwgImZlYXR1cmUiOiAiV2ViWFJEZXZpY2VNNzMiLCAiZXhwaXJ5IjogMjAwMDAwMDAwMH0="; +OriginTrialsHelper.add_token(token); + +// The WebXR APIs should be available now. +test(t => { + OriginTrialsHelper.check_properties_exist(this, properties_to_check); +}, "WebXR's entrypoint properties are available with origin trial token."); -// Ensure that no Gamepad Extensions are enabled. +// Ensure that Gamepad Extensions are NOT enabled by the origin trial token. +test(t => { + webvr_gamepad_properties = { + 'Gamepad': ['pose', 'hand', 'displayId'], + }; + OriginTrialsHelper.check_properties_missing_unless_runtime_flag(this, webvr_gamepad_properties, 'webVREnabled'); +}, "WebVR-specific Gamepad properties are not available with a token."); -gamepad_properties_to_check = { - 'Gamepad': ['pose', 'hand', 'displayId'], -}; - -gamepad_interfaces_to_check = [ - 'GamepadPose' -]; - -// Experimental web platform features are always enabled when this test is run -// normally, so do not check in that case. -if (!self.internals.runtimeFlags.webVREnabled) { - test(t => { - OriginTrialsHelper.check_properties_missing(this, gamepad_properties_to_check); - }, "WebVR-specific Gamepad properties are not available."); - - test(t => { - OriginTrialsHelper.check_interfaces_missing(this, gamepad_interfaces_to_check); - }, "WebVR-specific Gamepad interfaces are not available."); -} +test(t => { + webvr_gamepad_interfaces = [ + 'GamepadPose' + ]; + OriginTrialsHelper.check_interfaces_missing_unless_runtime_flag(this, webvr_gamepad_interfaces, 'webVREnabled'); +}, "WebVR-specific Gamepad interfaces are not available with a token."); </script>
diff --git a/third_party/blink/web_tests/http/tests/resources/origin-trials-helper.js b/third_party/blink/web_tests/http/tests/resources/origin-trials-helper.js index 667696a9..1d4aa411 100644 --- a/third_party/blink/web_tests/http/tests/resources/origin-trials-helper.js +++ b/third_party/blink/web_tests/http/tests/resources/origin-trials-helper.js
@@ -2,89 +2,133 @@ // LayoutTests that are checking members exposed to script by origin trials. // // The current available methods are: -// check_properties: -// Tests for the existence of the given property names, on the given interface -// names, on the global object. As well, it can test for properties of the -// global object itself, by giving 'global' as the interface name. +// check_properties_exist: +// Tests that the given property names exist on the given interface +// names on the global object. It can also test for properties of the +// global object itself by giving 'global' as the interface name. // Example: -// OriginTrialsHelper.check_properties( +// OriginTrialsHelper.check_properties_exist( // this, // {'InstallEvent':['registerForeignFetch'], 'global':['onforeignfetch']}); // // check_properties_missing: -// Tests that the given property names do not exist on the global object. That -// is, tests for the opposite of check_properties(). +// Tests that the given property names do NOT exist on the given interface +// names on the global object. It can also test for properties of the +// global object itself by giving 'global' as the interface name. +// In other words, tests for the opposite of check_properties_exist(). // Example: // OriginTrialsHelper.check_properties_missing( // this, // {'InstallEvent':['registerForeignFetch'], 'global':['onforeignfetch']}); // -// check_interfaces: -// Tests for the existence of the given interface names, on the global object. +// check_properties_missing_unless_runtime_flag +// Tests that the given property names exist on the given interface +// names on the global object if and only if the specified runtime flag is +// enabled. It can also test for properties of the global object itself by +// giving 'global' as the interface name. +// Equivalent to calling check_properties_exist() if the specified runtime +// flag is enabled and calling check_properties_missing() otherwise. // Example: -// OriginTrialsHelper.check_interfaces( +// OriginTrialsHelper.check_properties_missing_unless_runtime_flag( +// this, +// {'InstallEvent':['registerForeignFetch'], 'global':['onforeignfetch']}, +// 'foreignFetchEnabled'); +// +// check_interfaces_exist: +// Tests that the given interface names exist on the global object. +// Example: +// OriginTrialsHelper.check_interfaces_exist( // this, // ['USBAlternateInterface', 'USBConfiguration']); // // check_interfaces_missing: -// Tests that the given interface names do not exist on the global object. -// That is, tests for the opposite of check_interfaces(). +// Tests that the given interface names do NOT exist on the global object. +// In other words, tests for the opposite of check_interfaces_exist(). // Example: // OriginTrialsHelper.check_interfaces_missing( // this, // ['USBAlternateInterface', 'USBConfiguration']); // +// check_interfaces_missing_unless_runtime_flag +// Tests that the given interface names exist on the global object if and +// only if the specified runtime flag is enabled. +// Equivalent to calling check_interfaces_exist() if the specified runtime +// flag is enabled and calling check_interfaces_missing() otherwise. +// Example: +// OriginTrialsHelper.check_interfaces_missing_unless_runtime_flag( +// this, +// ['USBAlternateInterface', 'USBConfiguration'], +// 'webUSBEnabled'); +// // add_token: // Adds a trial token to the document, to enable a trial via script // Example: // OriginTrialsHelper.add_token('token produced by generate_token.py'); +// +// is_runtime_flag_enabled: +// Returns whether the specified runtime flag is enabled. +// Throws if the specified flag does not exist, making it more robust against +// typos and changes than checking self.internals.runtimeFlags directly. +// Prefer using other methods except in rare cases not covered by them. +// Example: +// if (!OriginTrialsHelper.is_runtime_flag_enabled('webXREnabled')... 'use strict'; var OriginTrialsHelper = (function() { - return { - check_properties_impl: (global_object, property_filters, should_exist) => { - let interface_names = Object.getOwnPropertyNames(property_filters).sort(); - interface_names.forEach(function(interface_name) { - let interface_prototype; - if (interface_name === 'global') { - interface_prototype = global_object; - } else { - let interface_object = global_object[interface_name]; - if (interface_object) { - interface_prototype = interface_object.prototype; - } + function check_properties_impl(global_object, property_filters, should_exist) { + let interface_names = Object.getOwnPropertyNames(property_filters).sort(); + interface_names.forEach(function(interface_name) { + let interface_prototype; + if (interface_name === 'global') { + interface_prototype = global_object; + } else { + let interface_object = global_object[interface_name]; + if (interface_object) { + interface_prototype = interface_object.prototype; } - assert_true(interface_prototype !== undefined, 'Interface ' + interface_name + ' exists'); - property_filters[interface_name].forEach(function(property_name) { - assert_equals(interface_prototype.hasOwnProperty(property_name), - should_exist, - 'Property ' + property_name + ' exists on ' + interface_name); - }); + } + assert_true(interface_prototype !== undefined, 'Interface ' + interface_name + ' exists'); + property_filters[interface_name].forEach(function(property_name) { + assert_equals(interface_prototype.hasOwnProperty(property_name), + should_exist, + 'Property ' + property_name + ' exists on ' + interface_name); }); - }, + }); + } - check_properties: (global_object, property_filters) => { - OriginTrialsHelper.check_properties_impl(global_object, property_filters, true); + function check_interfaces_impl(global_object, interface_names, should_exist) { + interface_names.sort(); + interface_names.forEach(function(interface_name) { + assert_equals(global_object.hasOwnProperty(interface_name), should_exist, + 'Interface ' + interface_name + ' exists on provided object'); + }); + } + + return { + check_properties_exist: (global_object, property_filters) => { + check_properties_impl(global_object, property_filters, true); }, check_properties_missing: (global_object, property_filters) => { - OriginTrialsHelper.check_properties_impl(global_object, property_filters, false); + check_properties_impl(global_object, property_filters, false); }, - check_interfaces_impl: (global_object, interface_names, should_exist) => { - interface_names.sort(); - interface_names.forEach(function(interface_name) { - assert_equals(global_object.hasOwnProperty(interface_name), should_exist, - 'Interface ' + interface_name + ' exists on provided object'); - }); + check_properties_missing_unless_runtime_flag: (global_object, property_filters, flag_name) => { + check_properties_impl(global_object, property_filters, + OriginTrialsHelper.is_runtime_flag_enabled(flag_name)); }, - check_interfaces: (global_object, interface_names) => { - OriginTrialsHelper.check_interfaces_impl(global_object, interface_names, true); + check_interfaces_exist: (global_object, interface_names) => { + check_interfaces_impl(global_object, interface_names, true); }, check_interfaces_missing: (global_object, interface_names) => { - OriginTrialsHelper.check_interfaces_impl(global_object, interface_names, false); + check_interfaces_impl(global_object, interface_names, false); + }, + + check_interfaces_missing_unless_runtime_flag: (global_object, interface_names, flag_name) => { + check_interfaces_impl(global_object, interface_names, + OriginTrialsHelper.is_runtime_flag_enabled(flag_name)); }, add_token: (token_string) => { @@ -92,6 +136,13 @@ tokenElement.httpEquiv = 'origin-trial'; tokenElement.content = token_string; document.head.appendChild(tokenElement); + }, + + is_runtime_flag_enabled: (flag_name) => { + if (!(flag_name in self.internals.runtimeFlags)) + throw 'Runtime flag "' + flag_name + '" does not exist on self.internals.runtimeFlags'; + let flagValue = self.internals.runtimeFlags[flag_name]; + return flagValue; } } })();
diff --git a/third_party/blink/web_tests/presentation/presentationrequest-getavailability.html b/third_party/blink/web_tests/presentation/presentationrequest-getavailability.html new file mode 100644 index 0000000..48d8c6c --- /dev/null +++ b/third_party/blink/web_tests/presentation/presentationrequest-getavailability.html
@@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> +<body> +<script src="../resources/testharness.js"></script> +<script src="../resources/testharnessreport.js"></script> +<script> + +const httpsUrl = "https://example.com"; + +test(() => { + const request = new PresentationRequest(httpsUrl); + const promise = request.getAvailability(); + assert_true(promise instanceof Promise); +}, "Test that PresentationRequest.getAvailability() returns a Promise."); + +test(() => { + const request = new PresentationRequest(httpsUrl); + const promise = request.getAvailability(); + assert_true(promise instanceof Promise); + const samePromise = request.getAvailability(); + assert_true(samePromise instanceof Promise, "PresentationRequest.getAvailabilty() returns a Promise if called again on the same request."); + assert_equals(promise, samePromise, "If the PresentationRequest object has an unsettled Promise, getAvailability returns that Promise."); +}, "Tests that PresentationRequest.getAvailability() returns the same unsettled Promise when called twice."); + +</script> +</body> +</html>
diff --git a/third_party/sqlite/fuzz/README.md b/third_party/sqlite/fuzz/README.md new file mode 100644 index 0000000..a4485b6 --- /dev/null +++ b/third_party/sqlite/fuzz/README.md
@@ -0,0 +1,57 @@ +"[Clusterfuzz](https://google.github.io/clusterfuzz/) is a scalable fuzzing +infrastructure which finds security and stabilty issues in software". Chromium +uses Clusterfuzz to find bugs in sqlite, among others. + +Given access to a clusterfuzz test case, this README will describe how one can +reproduce and help diagnose sqlite bugs found by clusterfuzz. + +Example bug: https://crbug.com/956851 + +# Simple automated repro +TODO: Move to [here](https://google.github.io/clusterfuzz/using-clusterfuzz/)? +If just trying to verify that the bug still repros on the current trunk: +1. Open the relevant bug (ex. https://crbug.com/956851). +2. Open the clusterfuzz "Detailed report" (ex. https://clusterfuzz.com/testcase?key=5756437473656832). +3. Click on the "REDO TASK" button. +4. Check on "Check if bug still reproduces", and click "Commit". +5. The bottom of the clusterfuzz "Detailed report" from (2) should reflect that +the "Redo task(s): progression" task has started. +6. Wait for a few hours to a day, and this link should update to reflect that +the "Progression task finished.". If the bug has been fixed in master, then it +will automatically be closed. Otherwise, the bug still repro's, and the updated +stack trace will be displayed in the "Detailed report". + +# Local repro context +1. Run from your Chromium source directory. + +# Local repro using clusterfuzz testcase id +If the fuzzer that identified this bug is public (ex. dbfuzz2), reproduce +locally. +1. Set ${TESTCASE_ID}, where TESTCASE_ID is the ID at the end of the clusterfuzz +link (ex. `export TESTCASE_ID=5756437473656832`). +2. `/google/data/ro/teams/clusterfuzz-tools/releases/clusterfuzz reproduce --current --skip-deps ${TESTCASE_ID}`, +For more information, see the [Reproduce Tool on Github](https://github.com/google/clusterfuzz-tools). + +# Local repro using clusterfuzz testcase +If the fuzzer is not public (ex. LPM-based fuzzers, including fts_lpm), or if +more data is needed, reproduce a bit more manually by first building the target. +To build the target, first set .gn args to match those in the clusterfuzz link, +then build and run the fuzzer. + +1. `export FUZZER_NAME=sqlite3_fts3_lpm_fuzzer # FUZZER_NAME is listed in the crbug as the Fuzz target binary` +2. Download the clusterfuzz minimized testcase and set it's path to CLUSTERFUZZ_TESTCASE using `export CLUSTERFUZZ_TESTCASE=./clusterfuzz-testcase-minimized-sqlite3_fts3_lpm_fuzzer-5756437473656832` +3. `gn gen args out/Fuzzer # Set arguments to matches those in the clusterfuzz"Detailed report"'s "GN CONFIG (ARGS.GN)" section` +4. `autoninja -C out/Fuzzer/ ${FUZZER_NAME} # Build the fuzzer target` +5. `./out/Fuzzer/${FUZZER_NAME} ${CLUSTERFUZZ_TESTCASE} # Verify repro by running fuzzer` +6. `LPM_DUMP_NATIVE_INPUT=1 SQL_SKIP_QUERIES=AlterTable ./out/Fuzzer/${FUZZER_NAME} ${CLUSTERFUZZ_TESTCASE} # Try using different args to get SQL statements that will repro the bug` +7. Optionally, take output from (6) into a repro.sql file for further testing. +To do so, either copy the SQL query in the output from (6) into a .sql file, or +run the final command in (6) with a `> repro.sql` at the end, and filter out +non-sql content afterwards. Either way, ensure that the case continues to repro +given filters placed in (6). + +# Local repro using SQL commands +Please have a SQL query ready, preferably in .sql format. For this context, +we'll refer to this query as repro.sql. +1. `autoninja -C out/Fuzzer/ sqlite_shell # Build the sqlite_shell` +2. `out/Fuzzer/sqlite_shell < repro.sql # Try running this sql query in sqlite` \ No newline at end of file
diff --git a/third_party/sqlite/fuzz/sql_fuzzer.cc b/third_party/sqlite/fuzz/sql_fuzzer.cc index 5b5c800..3cfd77f7 100644 --- a/third_party/sqlite/fuzz/sql_fuzzer.cc +++ b/third_party/sqlite/fuzz/sql_fuzzer.cc
@@ -15,12 +15,15 @@ using namespace sql_query_grammar; -// TODO(mpdenton) Fuzzing tasks -// 5. Definitely fix a lot of the syntax errors that SQlite spits out -// 12. CORPUS Indexes on expressions (https://www.sqlite.org/expridx.html) and +// Environment variable LPM_DUMP_NATIVE_INPUT can be used to print the +// SQL queries used in the Clusterfuzz test case. + +// TODO(mpdenton): Fuzzing tasks +// 1. Definitely fix a lot of the syntax errors that SQlite spits out +// 2. CORPUS Indexes on expressions (https://www.sqlite.org/expridx.html) and // other places using functions on columns??? -// 17. Generate a nice big random, well-formed corpus. -// 18. Possibly very difficult for fuzzer to find certain areas of code, because +// 3. Generate a nice big random, well-formed corpus. +// 4. Possibly very difficult for fuzzer to find certain areas of code, because // some protobufs need to be mutated together. For example, an index on an // expression is useless to change, if you don't change the SELECTs that use // that expression. May need to create a mechanism for the protobufs to @@ -28,12 +31,10 @@ // and then protobufs can simple reference those expressions later (similarly to // columns or tables, with just an index). This should be added if coverage // shows it is the case. - -// FIXME in the future -// 1. Rest of the pragmas -// 2. Make sure defensive config is off -// 3. Fuzz the recover extension from the third patch -// 5. Temp-file database, for better fuzzing of VACUUM and journalling. +// 5. Add coverage for the rest of the pragmas +// 6. Make sure defensive config is off +// 7. Fuzz the recover extension from the third patch +// 8. Temp-file database, for better fuzzing of VACUUM and journalling. DEFINE_BINARY_PROTO_FUZZER(const SQLQueries& sql_queries) { char* skip_queries = ::getenv("SQL_SKIP_QUERIES");
diff --git a/third_party/unrar/BUILD.gn b/third_party/unrar/BUILD.gn index f315ffed..333a008 100644 --- a/third_party/unrar/BUILD.gn +++ b/third_party/unrar/BUILD.gn
@@ -61,7 +61,12 @@ } configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs += [ + "//build/config/compiler:no_chromium_code", + + # This must be after no_chromium_code for warning flags to be ordered correctly + ":unrar_warnings", + ] defines = [ "_FILE_OFFSET_BITS=64", @@ -83,3 +88,22 @@ ] } } + +config("unrar_warnings") { + cflags = [ + # unrar frequently drops parentheses around logical ops + "-Wno-logical-op-parentheses", + + # unrar frequently has dangling elses + "-Wno-dangling-else", + + # unrar has several non-exhaustive switch statements + "-Wno-switch", + + # unrar has several unused functions + "-Wno-unused-function", + + # unrar has missing braces for initialization in rarvm.cpp + "-Wno-missing-braces", + ] +}
diff --git a/third_party/webxr_test_pages/webxr-samples/input-selection.html b/third_party/webxr_test_pages/webxr-samples/input-selection.html index 80fcf3f6..9bc27ff 100644 --- a/third_party/webxr_test_pages/webxr-samples/input-selection.html +++ b/third_party/webxr_test_pages/webxr-samples/input-selection.html
@@ -211,7 +211,11 @@ document.querySelector('header').appendChild(xrButton.domElement); if (navigator.xr) { - navigator.xr.requestSession('inline').then(onSessionStarted); + const mode = 'inline'; + navigator.xr.requestSession(mode).then((session) => { + session.mode = mode; + onSessionStarted(session); + }); } else { initFallback(); } @@ -282,7 +286,9 @@ } function onRequestSession() { - navigator.xr.requestSession('immersive-vr').then((session) => { + const mode = 'immersive-vr'; + navigator.xr.requestSession(mode).then((session) => { + session.mode = mode; xrButton.setSession(session); onSessionStarted(session); });
diff --git a/tools/fuchsia/local-sdk.py b/tools/fuchsia/local-sdk.py index 94fdb8c..671f4ead 100755 --- a/tools/fuchsia/local-sdk.py +++ b/tools/fuchsia/local-sdk.py
@@ -33,9 +33,9 @@ def BuildForArch(arch): build_dir = 'out/release-' + arch - Run('scripts/fx', '--dir', build_dir, 'set', 'sdk_image.' + arch, - '--with=//topaz/packages/sdk:topaz', '--args=is_debug=false', - '--args=build_sdk_archives=true') + Run('scripts/fx', '--dir', build_dir, 'set', 'terminal.' + arch, + '--with=//topaz/packages/sdk:topaz', '--with-base=//sdk/bundles:tools', + '--args=is_debug=false', '--args=build_sdk_archives=true') Run('scripts/fx', 'build', 'topaz/public/sdk:topaz', 'sdk:images_archive')
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index ec44b9e..3b140bd1 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -19139,6 +19139,8 @@ <int value="1332" label="MANAGEMENT_INSTALLREPLACEMENTWEBAPP"/> <int value="1333" label="FILEMANAGERPRIVATE_GETANDROIDPICKERAPPS"/> <int value="1334" label="FILEMANAGERPRIVATE_SELECTANDROIDPICKERAPP"/> + <int value="1335" label="AUTOTESTPRIVATE_GETSHELFALIGNMENT"/> + <int value="1336" label="AUTOTESTPRIVATE_SETSHELFALIGNMENT"/> </enum> <enum name="ExtensionIconState"> @@ -22936,6 +22938,10 @@ <int value="2873" label="WebShareSuccessfulWithoutFiles"/> <int value="2874" label="WebShareUnsuccessfulContainingFiles"/> <int value="2875" label="WebShareUnsuccessfulWithoutFiles"/> + <int value="2876" label="VerticalScrollbarThumbScrollingWithMouse"/> + <int value="2877" label="VerticalScrollbarThumbScrollingWithTouch"/> + <int value="2878" label="HorizontalScrollbarThumbScrollingWithMouse"/> + <int value="2879" label="HorizontalScrollbarThumbScrollingWithTouch"/> </enum> <enum name="FeaturePolicyFeature"> @@ -32354,6 +32360,7 @@ <int value="-2009622663" label="WebRtcHWH264Encoding:enabled"/> <int value="-2008272679" label="disable-webrtc-hw-encoding"/> <int value="-2005089558" label="BackgroundVideoTrackOptimization:disabled"/> + <int value="-2004882388" label="AutofillPruneSuggestions:enabled"/> <int value="-2004231189" label="AppNotificationStatusMessaging:disabled"/> <int value="-2003354337" label="enable-search-button-in-omnibox-for-str-or-iip"/> @@ -32378,7 +32385,6 @@ <int value="-1971086581" label="print-scaling"/> <int value="-1965587041" label="omnibox-tab-switch-suggestions"/> <int value="-1964261747" label="WebVrVsyncAlign:disabled"/> - LoginCustomFlags <int value="-1963427770" label="EmojiHandwritingVoiceInput:disabled"/> <int value="-1963402827" label="enable-topchrome-md"/> <int value="-1962749353" label="SimplifiedNTP:enabled"/> @@ -33229,6 +33235,7 @@ <int value="-734301625" label="AutofillImportNonFocusableCreditCardForms:disabled"/> <int value="-731133967" label="AutofillSettingsCardTypeSplit:disabled"/> + <int value="-728461030" label="AutofillPruneSuggestions:disabled"/> <int value="-727860269" label="WebAuthenticationBle:disabled"/> <int value="-726892130" label="AndroidMessagesIntegration:disabled"/> <int value="-723224470" label="enable-password-force-saving:enabled"/> @@ -40992,7 +40999,7 @@ <enum name="NTPSearchSuggestionsRequestStatus"> <int value="0" label="Unknown Error"/> - <int value="1" label="Sent"/> + <int value="1" label="ReceivedResponse"/> <int value="2" label="SignedOut"/> <int value="3" label="OptedOut"/> <int value="4" label="ImpressionCap"/> @@ -56642,6 +56649,10 @@ <int value="0" label="VAAPI_ERROR"/> </enum> +<enum name="VAJDAWorkerDecoderFailure"> + <int value="0" label="kVaapiError"/> +</enum> + <enum name="VAJEAEncoderResult"> <int value="0" label="VAAPI_SUCCESS"/> <int value="1" label="VAAPI_ERROR"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index f65dca6c..1df53ff 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -37222,6 +37222,15 @@ </summary> </histogram> +<histogram name="Extensions.HomepageOverrides" expires_after="M85"> + <owner>rdevlin.cronin@chromium.org</owner> + <owner>kelvinjiang@chromium.org</owner> + <summary> + The number of enabled extensions with a homepage override specified in their + manifest. Recorded once per profile at profile initialization. + </summary> +</histogram> + <histogram name="Extensions.HostedAppLaunchContainer" enum="AppLaunchContainer"> <owner>benwells@chromium.org</owner> <summary> @@ -38635,6 +38644,15 @@ <summary>Length of the path under which a CRX is unpacked.</summary> </histogram> +<histogram name="Extensions.SearchEngineOverrides" expires_after="M85"> + <owner>rdevlin.cronin@chromium.org</owner> + <owner>kelvinjiang@chromium.org</owner> + <summary> + The number of enabled extensions with a search engine override specified in + their manifest. Recorded once per profile at profile initialization. + </summary> +</histogram> + <histogram name="Extensions.SettingsQuotaExceeded.BytesPerSetting" expires_after="2016-09-13"> <obsolete> @@ -38713,6 +38731,15 @@ </summary> </histogram> +<histogram name="Extensions.StartupPagesOverrides" expires_after="M85"> + <owner>rdevlin.cronin@chromium.org</owner> + <owner>kelvinjiang@chromium.org</owner> + <summary> + The number of enabled extensions with startup page overrides specified in + their manifest. Recorded once per profile at profile initialization. + </summary> +</histogram> + <histogram name="Extensions.StorageFrontendInitTime" units="ms" expires_after="M77"> <owner>rkaplow@chromium.org</owner> @@ -54703,6 +54730,16 @@ </summary> </histogram> +<histogram name="Media.VAJDAWorker.DecoderFailure" + enum="VAJDAWorkerDecoderFailure" expires_after="2020-05-01"> + <owner>andrescj@chromium.org</owner> + <owner>chromeos-gfx@chromium.org</owner> + <summary> + Count of VAAPI errors that occur inside the VaapiWrapper due to + functionality needed by the VaapiJpegDecodeAcceleratorWorker. + </summary> +</histogram> + <histogram name="Media.VAJEA.EncoderResult" enum="VAJEAEncoderResult" expires_after="M77"> <owner>shenghao@chromium.org</owner> @@ -76939,8 +76976,28 @@ </summary> </histogram> -<histogram name="NewTabPage.SearchSuggestions.RequestLatency" units="ms" - expires_after="M76"> +<histogram name="NewTabPage.SearchSuggestions.IndexClicked" expires_after="M78"> + <owner>kmilka@chromium.org</owner> + <owner>ramyan@chromium.org</owner> + <summary> + The index of the search suggestion tile that was clicked on the local NTP. + </summary> +</histogram> + +<histogram name="NewTabPage.SearchSuggestions.RequestLatency" units="ms"> + <obsolete> + Deprecated 2019-03 as it doesn't correctly capture all request states. + </obsolete> + <owner>kmilka@chromium.org</owner> + <owner>ramyan@chromium.org</owner> + <summary> + The time it took until a request from the New Tab page for the search + suggestions script was served. Recorded only on the local NTP. + </summary> +</histogram> + +<histogram name="NewTabPage.SearchSuggestions.RequestLatencyV2" units="ms" + expires_after="M78"> <owner>kmilka@chromium.org</owner> <owner>ramyan@chromium.org</owner> <summary> @@ -76951,6 +77008,10 @@ <histogram name="NewTabPage.SearchSuggestions.RequestStatus" enum="NTPSearchSuggestionsRequestStatus" expires_after="M76"> + <obsolete> + Deprecated 2019-03 as it grouped together requests that returned no + suggestions with those that failed completely, which is misleading. + </obsolete> <owner>kmilka@chromium.org</owner> <owner>ramyan@chromium.org</owner> <summary> @@ -76959,6 +77020,24 @@ </summary> </histogram> +<histogram name="NewTabPage.SearchSuggestions.RequestStatusV2" + enum="NTPSearchSuggestionsRequestStatus" expires_after="M76"> + <owner>kmilka@chromium.org</owner> + <owner>ramyan@chromium.org</owner> + <summary> + Whether a request was made for search suggestions on NTP load; and if a + request was not made, the reason why. + </summary> +</histogram> + +<histogram name="NewTabPage.SearchSuggestions.ShownCount" expires_after="M78"> + <owner>kmilka@chromium.org</owner> + <owner>ramyan@chromium.org</owner> + <summary> + The number of search suggestion tiles that were shown on the local NTP. + </summary> +</histogram> + <histogram name="NewTabPage.SearchURLs.Total" expires_after="2016-02-19"> <obsolete> Deprecated 2016-02 (and not recorded for some time before that). @@ -150575,11 +150654,27 @@ <histogram_suffixes name="NewTabPage.SearchSuggestions.RequestLatency" separator="."> + <obsolete> + Deprecated April 2019, replaced by + NewTabPage.SearchSuggestions.RequestLatencyV2. + </obsolete> <suffix name="Failure" label="Failed to fetch search suggestions"/> <suffix name="Success" label="Successfully fetched search suggestions"/> <affected-histogram name="NewTabPage.SearchSuggestions.RequestLatency"/> </histogram_suffixes> +<histogram_suffixes name="NewTabPage.SearchSuggestions.RequestLatencyV2" + separator="."> + <suffix name="Failure" label="Failed to fetch search suggestion data"/> + <suffix name="SuccessWithoutSuggestions" + label="Successfully fetched search suggestion data which did not + contain suggestions"/> + <suffix name="SuccessWithSuggestions" + label="Successfully fetched search suggestion data which contained + suggestions"/> + <affected-histogram name="NewTabPage.SearchSuggestions.RequestLatencyV2"/> +</histogram_suffixes> + <histogram_suffixes name="NewTabPageIconTypes" separator="."> <suffix name="IconsColor" label="Icons using a fallback color (favicon resolution too low)."/>
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config index 1cbe92ac..6ed6550 100644 --- a/tools/perf/expectations.config +++ b/tools/perf/expectations.config
@@ -6,7 +6,7 @@ # tags: Android_Webview Android_but_not_webview Mac Win Linux # tags: ChromeOS Android Desktop Nexus_5 Nexus_5X Nexus_6P # tags: Nexus_7 Mac_10.11 Mac_10.12 Nexus6_Webview Nexus5X_Webview -# tags: Pixel_2 Win_7 Win_10 +# tags: Pixel_2 Win_7 Win_10 Android_Go_Webview # Benchmark: blink_perf.bindings crbug.com/882881 [ Nexus_5 ] blink_perf.bindings/structured-clone-json-deserialize.html [ Skip ] @@ -321,6 +321,8 @@ crbug.com/954959 [ Linux ] v8.browsing_desktop/browse:media:pinterest:2018 [ Skip ] crbug.com/954959 [ Linux ] v8.browsing_desktop/browse:tools:maps [ Skip ] crbug.com/958422 [ Linux ] v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ] +crbug.com/958507 [ Mac ] v8.browsing_desktop/browse:social:tumblr_infinite_scroll:2018 [ Skip ] +crbug.com/958507 [ Mac ] v8.browsing_desktop/browse:media:imgur [ Skip ] # Benchmark v8.browsing_desktop-future crbug.com/788796 [ Linux ] v8.browsing_desktop-future/browse:media:imgur [ Skip ] @@ -329,8 +331,11 @@ crbug.com/906654 [ All ] v8.browsing_desktop-future/browse:search:google [ Skip ] crbug.com/953371 [ Win ] v8.browsing_desktop-future/browse:social:twitter_infinite_scroll:2018 [ Skip ] crbug.com/958422 [ Linux ] v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018 [ Skip ] +crbug.com/958507 [ Mac ] v8.browsing_desktop-future/browse:media:imgur [ Skip ] +crbug.com/958507 [ Mac ] v8.browsing_desktop-future/browse:social:tumblr_infinite_scroll:2018 [ Skip ] # Benchmark: v8.browsing_mobile +crbug.com/958034 [ Android_Go_Webview ] v8.browsing_mobile/* [ Skip ] crbug.com/714650 [ Android ] v8.browsing_mobile/browse:news:globo [ Skip ] crbug.com/767970 [ Android ] v8.browsing_mobile/browse:shopping:flipkart [ Skip ] crbug.com/708300 [ Android ] v8.browsing_mobile/browse:shopping:flipkart [ Skip ]
diff --git a/ui/keyboard/BUILD.gn b/ui/keyboard/BUILD.gn index 1cbb657..b67d1d8 100644 --- a/ui/keyboard/BUILD.gn +++ b/ui/keyboard/BUILD.gn
@@ -27,8 +27,8 @@ "keyboard_controller.cc", "keyboard_controller.h", "keyboard_controller_observer.h", - "keyboard_event_filter.cc", - "keyboard_event_filter.h", + "keyboard_event_handler.cc", + "keyboard_event_handler.h", "keyboard_export.h", "keyboard_layout_delegate.h", "keyboard_layout_manager.cc", @@ -157,7 +157,7 @@ "container_floating_behavior_unittest.cc", "container_full_width_behavior_unittest.cc", "keyboard_controller_unittest.cc", - "keyboard_event_filter_unittest.cc", + "keyboard_event_handler_unittest.cc", "keyboard_ukm_recorder_unittest.cc", "keyboard_util_unittest.cc", "notification_manager_unittest.cc",
diff --git a/ui/keyboard/keyboard_controller.cc b/ui/keyboard/keyboard_controller.cc index 156e25d..7202a02a 100644 --- a/ui/keyboard/keyboard_controller.cc +++ b/ui/keyboard/keyboard_controller.cc
@@ -356,7 +356,7 @@ aura::Window* keyboard_window = GetKeyboardWindow(); if (keyboard_window) { - keyboard_window->RemovePreTargetHandler(&event_filter_); + keyboard_window->RemovePreTargetHandler(&event_handler_); if (keyboard_window->parent()) { DCHECK_EQ(parent_container_, keyboard_window->parent()); parent_container_->RemoveChild(keyboard_window); @@ -773,7 +773,7 @@ DVLOG(1) << "LoadKeyboardWindow"; aura::Window* keyboard_window = ui_->LoadKeyboardWindow(base::BindOnce( &KeyboardController::NotifyKeyboardWindowLoaded, base::Unretained(this))); - keyboard_window->AddPreTargetHandler(&event_filter_); + keyboard_window->AddPreTargetHandler(&event_handler_); keyboard_window->AddObserver(this); parent_container_->AddChild(keyboard_window);
diff --git a/ui/keyboard/keyboard_controller.h b/ui/keyboard/keyboard_controller.h index 315d1ca..af5ca1df 100644 --- a/ui/keyboard/keyboard_controller.h +++ b/ui/keyboard/keyboard_controller.h
@@ -22,7 +22,7 @@ #include "ui/gfx/geometry/vector2d.h" #include "ui/keyboard/container_behavior.h" #include "ui/keyboard/display_util.h" -#include "ui/keyboard/keyboard_event_filter.h" +#include "ui/keyboard/keyboard_event_handler.h" #include "ui/keyboard/keyboard_export.h" #include "ui/keyboard/keyboard_layout_delegate.h" #include "ui/keyboard/keyboard_ukm_recorder.h" @@ -439,7 +439,7 @@ // If true, the keyboard is always visible even if no window has input focus. bool keyboard_locked_ = false; - KeyboardEventFilter event_filter_; + KeyboardEventHandler event_handler_; base::ObserverList<KeyboardControllerObserver>::Unchecked observer_list_;
diff --git a/ui/keyboard/keyboard_event_filter.cc b/ui/keyboard/keyboard_event_handler.cc similarity index 67% rename from ui/keyboard/keyboard_event_filter.cc rename to ui/keyboard/keyboard_event_handler.cc index 1d903f2..4a48ed6d 100644 --- a/ui/keyboard/keyboard_event_filter.cc +++ b/ui/keyboard/keyboard_event_handler.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ui/keyboard/keyboard_event_filter.h" +#include "ui/keyboard/keyboard_event_handler.h" #include "ui/events/event.h" #include "ui/gfx/geometry/vector2d.h" @@ -10,7 +10,7 @@ namespace keyboard { -void KeyboardEventFilter::OnGestureEvent(ui::GestureEvent* event) { +void KeyboardEventHandler::OnGestureEvent(ui::GestureEvent* event) { switch (event->type()) { case ui::ET_GESTURE_PINCH_BEGIN: case ui::ET_GESTURE_PINCH_END: @@ -22,18 +22,18 @@ } } -void KeyboardEventFilter::OnMouseEvent(ui::MouseEvent* event) { +void KeyboardEventHandler::OnMouseEvent(ui::MouseEvent* event) { ProcessPointerEvent(event); } -void KeyboardEventFilter::OnTouchEvent(ui::TouchEvent* event) { +void KeyboardEventHandler::OnTouchEvent(ui::TouchEvent* event) { ProcessPointerEvent(event); } -void KeyboardEventFilter::ProcessPointerEvent(ui::LocatedEvent* event) { +void KeyboardEventHandler::ProcessPointerEvent(ui::LocatedEvent* event) { auto* controller = KeyboardController::Get(); if (controller->IsEnabled() && controller->HandlePointerEvent(*event)) event->SetHandled(); } -} // nemespace keyboard +} // namespace keyboard
diff --git a/ui/keyboard/keyboard_event_filter.h b/ui/keyboard/keyboard_event_handler.h similarity index 60% rename from ui/keyboard/keyboard_event_filter.h rename to ui/keyboard/keyboard_event_handler.h index d320132..e8b715d 100644 --- a/ui/keyboard/keyboard_event_filter.h +++ b/ui/keyboard/keyboard_event_handler.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 UI_KEYBOARD_KEYBOARD_EVENT_FILTER_H_ -#define UI_KEYBOARD_KEYBOARD_EVENT_FILTER_H_ +#ifndef UI_KEYBOARD_KEYBOARD_EVENT_HANDLER_H_ +#define UI_KEYBOARD_KEYBOARD_EVENT_HANDLER_H_ #include "base/macros.h" #include "ui/events/event.h" @@ -12,12 +12,12 @@ namespace keyboard { -// EventFilter for the keyboard window, which intercepts events before they are +// EventHandler for the keyboard window, which intercepts events before they are // processed by the keyboard window. -class KEYBOARD_EXPORT KeyboardEventFilter : public ui::EventHandler { +class KEYBOARD_EXPORT KeyboardEventHandler : public ui::EventHandler { public: - KeyboardEventFilter() = default; - ~KeyboardEventFilter() override = default; + KeyboardEventHandler() = default; + ~KeyboardEventHandler() override = default; // ui::EventHandler overrides: void OnGestureEvent(ui::GestureEvent* event) override; @@ -27,9 +27,9 @@ private: void ProcessPointerEvent(ui::LocatedEvent* event); - DISALLOW_COPY_AND_ASSIGN(KeyboardEventFilter); + DISALLOW_COPY_AND_ASSIGN(KeyboardEventHandler); }; } // namespace keyboard -#endif // UI_KEYBOARD_KEYBOARD_EVENT_FILTER_H_ +#endif // UI_KEYBOARD_KEYBOARD_EVENT_HANDLER_H_
diff --git a/ui/keyboard/keyboard_event_filter_unittest.cc b/ui/keyboard/keyboard_event_handler_unittest.cc similarity index 87% rename from ui/keyboard/keyboard_event_filter_unittest.cc rename to ui/keyboard/keyboard_event_handler_unittest.cc index e859f61..520ed0d 100644 --- a/ui/keyboard/keyboard_event_filter_unittest.cc +++ b/ui/keyboard/keyboard_event_handler_unittest.cc
@@ -2,15 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ui/keyboard/keyboard_event_filter.h" +#include "ui/keyboard/keyboard_event_handler.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/events/event.h" namespace keyboard { -TEST(KeyboardEventFilterTest, FilterGestureEvents) { - KeyboardEventFilter filter; +TEST(KeyboardEventHandlerTest, HandleGestureEvents) { + KeyboardEventHandler filter; ui::GestureEvent pinch_begin( 15, 15, 0, base::TimeTicks(), ui::GestureEventDetails(ui::ET_GESTURE_PINCH_BEGIN)); @@ -33,4 +33,4 @@ EXPECT_FALSE(tap.stopped_propagation()); } -} // namespace keybaord +} // namespace keyboard
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc index a12445dd..5ccb893a 100644 --- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc +++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.cc
@@ -14,6 +14,7 @@ #include "gpu/vulkan/vulkan_surface.h" #include "gpu/vulkan/vulkan_util.h" #include "ui/gfx/gpu_fence.h" +#include "ui/gfx/gpu_memory_buffer.h" namespace ui { @@ -154,4 +155,21 @@ return VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT; } +bool VulkanImplementationGbm::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return false; +} + +bool VulkanImplementationGbm::CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) { + NOTIMPLEMENTED(); + return false; +} + } // namespace ui
diff --git a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h index 7cd3b39c..e787a0e1 100644 --- a/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h +++ b/ui/ozone/platform/drm/gpu/vulkan_implementation_gbm.h
@@ -37,6 +37,16 @@ gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; + bool CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) override; private: gpu::VulkanInstance vulkan_instance_;
diff --git a/ui/ozone/platform/scenic/BUILD.gn b/ui/ozone/platform/scenic/BUILD.gn index 36cff36..67d670f 100644 --- a/ui/ozone/platform/scenic/BUILD.gn +++ b/ui/ozone/platform/scenic/BUILD.gn
@@ -30,6 +30,10 @@ "scenic_window_canvas.h", "scenic_window_manager.cc", "scenic_window_manager.h", + "sysmem_buffer_collection.cc", + "sysmem_buffer_collection.h", + "sysmem_buffer_manager.cc", + "sysmem_buffer_manager.h", ] defines = [ @@ -45,6 +49,7 @@ "//third_party/fuchsia-sdk/sdk:images", "//third_party/fuchsia-sdk/sdk:mem", "//third_party/fuchsia-sdk/sdk:scenic_cpp", + "//third_party/fuchsia-sdk/sdk:sysmem", "//third_party/fuchsia-sdk/sdk:ui_gfx", "//third_party/fuchsia-sdk/sdk:ui_scenic", "//ui/base",
diff --git a/ui/ozone/platform/scenic/client_native_pixmap_factory_scenic.cc b/ui/ozone/platform/scenic/client_native_pixmap_factory_scenic.cc index 6227bb31..be96f8f 100644 --- a/ui/ozone/platform/scenic/client_native_pixmap_factory_scenic.cc +++ b/ui/ozone/platform/scenic/client_native_pixmap_factory_scenic.cc
@@ -4,12 +4,113 @@ #include "ui/ozone/platform/scenic/client_native_pixmap_factory_scenic.h" -#include "ui/ozone/common/stub_client_native_pixmap_factory.h" +#include <lib/zx/vmar.h> +#include <lib/zx/vmo.h> +#include <vector> + +#include "base/fuchsia/fuchsia_logging.h" +#include "base/system/sys_info.h" +#include "ui/gfx/client_native_pixmap.h" +#include "ui/gfx/client_native_pixmap_factory.h" +#include "ui/gfx/native_pixmap_handle.h" namespace ui { +class ClientNativePixmapFuchsia : public gfx::ClientNativePixmap { + public: + explicit ClientNativePixmapFuchsia(gfx::NativePixmapHandle handle) + : handle_(std::move(handle)) { + DCHECK(!handle_.planes.empty()); + } + + ~ClientNativePixmapFuchsia() override { + if (mapping_) + Unmap(); + } + + bool Map() override { + if (mapping_) + return true; + + if (!handle_.planes[0].vmo) { + NOTREACHED(); + return false; + } + + uintptr_t addr; + + // Assume that last plane is at the end of the VMO. + mapping_size_ = handle_.planes.back().offset + handle_.planes.back().size; + + // Verify that all planes fall within the mapped range. + for (auto& plane : handle_.planes) { + DCHECK_LE(plane.offset + plane.size, mapping_size_); + } + + // Round mapping size to align with the page size. + size_t page_size = base::SysInfo::VMAllocationGranularity(); + mapping_size_ = (mapping_size_ + page_size - 1) & ~(page_size - 1); + + zx_status_t status = + zx::vmar::root_self()->map(0, handle_.planes[0].vmo, 0, mapping_size_, + ZX_VM_PERM_READ | ZX_VM_PERM_WRITE, &addr); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) << "zx_vmar_map"; + return false; + } + mapping_ = reinterpret_cast<uint8_t*>(addr); + + return true; + } + + void Unmap() override { + DCHECK(mapping_); + zx_status_t status = zx::vmar::root_self()->unmap( + reinterpret_cast<uintptr_t>(mapping_), mapping_size_); + ZX_DCHECK(status == ZX_OK, status) << "zx_vmar_unmap"; + mapping_ = nullptr; + } + + void* GetMemoryAddress(size_t plane) const override { + DCHECK_LT(plane, handle_.planes.size()); + DCHECK(mapping_); + return mapping_ + handle_.planes[plane].offset; + } + + int GetStride(size_t plane) const override { + DCHECK_LT(plane, handle_.planes.size()); + return handle_.planes[plane].stride; + } + + private: + gfx::NativePixmapHandle handle_; + + uint8_t* mapping_ = nullptr; + size_t mapping_size_ = 0; + + DISALLOW_COPY_AND_ASSIGN(ClientNativePixmapFuchsia); +}; + +class ScenicClientNativePixmapFactory : public gfx::ClientNativePixmapFactory { + public: + ScenicClientNativePixmapFactory() = default; + ~ScenicClientNativePixmapFactory() override = default; + + std::unique_ptr<gfx::ClientNativePixmap> ImportFromHandle( + gfx::NativePixmapHandle handle, + const gfx::Size& size, + gfx::BufferUsage usage) override { + if (handle.planes.empty()) + return nullptr; + return std::make_unique<ClientNativePixmapFuchsia>(std::move(handle)); + } + + private: + DISALLOW_COPY_AND_ASSIGN(ScenicClientNativePixmapFactory); +}; + gfx::ClientNativePixmapFactory* CreateClientNativePixmapFactoryScenic() { - return CreateStubClientNativePixmapFactory(); + return new ScenicClientNativePixmapFactory(); } } // namespace ui
diff --git a/ui/ozone/platform/scenic/ozone_platform_scenic.cc b/ui/ozone/platform/scenic/ozone_platform_scenic.cc index 565d0efe..0635e97 100644 --- a/ui/ozone/platform/scenic/ozone_platform_scenic.cc +++ b/ui/ozone/platform/scenic/ozone_platform_scenic.cc
@@ -24,6 +24,7 @@ #include "ui/ozone/platform/scenic/scenic_surface_factory.h" #include "ui/ozone/platform/scenic/scenic_window.h" #include "ui/ozone/platform/scenic/scenic_window_manager.h" +#include "ui/ozone/platform/scenic/sysmem_buffer_collection.h" #include "ui/ozone/platform_selection.h" #include "ui/ozone/public/cursor_factory_ozone.h" #include "ui/ozone/public/gpu_platform_support_host.h" @@ -160,6 +161,11 @@ base::ThreadTaskRunnerHandle::Get()); } + bool IsNativePixmapConfigSupported(gfx::BufferFormat format, + gfx::BufferUsage usage) const override { + return SysmemBufferCollection::IsNativePixmapConfigSupported(format, usage); + } + private: // base::MessageLoopCurrent::DestructionObserver implementation. void WillDestroyCurrentMessageLoop() override {
diff --git a/ui/ozone/platform/scenic/scenic_surface_factory.cc b/ui/ozone/platform/scenic/scenic_surface_factory.cc index 24a771c..8237c592 100644 --- a/ui/ozone/platform/scenic/scenic_surface_factory.cc +++ b/ui/ozone/platform/scenic/scenic_surface_factory.cc
@@ -23,6 +23,7 @@ #include "ui/ozone/platform/scenic/scenic_window.h" #include "ui/ozone/platform/scenic/scenic_window_canvas.h" #include "ui/ozone/platform/scenic/scenic_window_manager.h" +#include "ui/ozone/platform/scenic/sysmem_buffer_collection.h" #if BUILDFLAG(ENABLE_VULKAN) #include "ui/ozone/platform/scenic/vulkan_implementation_scenic.h" @@ -63,53 +64,14 @@ DISALLOW_COPY_AND_ASSIGN(GLOzoneEGLScenic); }; -// TODO(crbug.com/852011): Implement this class - currently it's just a stub. -class ScenicPixmap : public gfx::NativePixmap { - public: - explicit ScenicPixmap(gfx::AcceleratedWidget widget, - gfx::Size size, - gfx::BufferFormat format) - : size_(size), format_(format) { - NOTIMPLEMENTED_LOG_ONCE(); - } - - bool AreDmaBufFdsValid() const override { return false; } - int GetDmaBufFd(size_t plane) const override { return -1; } - int GetDmaBufPitch(size_t plane) const override { return 0; } - int GetDmaBufOffset(size_t plane) const override { return 0; } - uint64_t GetDmaBufModifier(size_t plane) const override { return 0; } - gfx::BufferFormat GetBufferFormat() const override { return format_; } - gfx::Size GetBufferSize() const override { return size_; } - uint32_t GetUniqueId() const override { return 0; } - bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, - int plane_z_order, - gfx::OverlayTransform plane_transform, - const gfx::Rect& display_bounds, - const gfx::RectF& crop_rect, - bool enable_blend, - std::unique_ptr<gfx::GpuFence> gpu_fence) override { - NOTIMPLEMENTED(); - return false; - } - gfx::NativePixmapHandle ExportHandle() override { - NOTIMPLEMENTED(); - return gfx::NativePixmapHandle(); - } - - private: - ~ScenicPixmap() override {} - - gfx::Size size_; - gfx::BufferFormat format_; - - DISALLOW_COPY_AND_ASSIGN(ScenicPixmap); -}; - } // namespace ScenicSurfaceFactory::ScenicSurfaceFactory(mojom::ScenicGpuHost* gpu_host) : gpu_host_(gpu_host), egl_implementation_(std::make_unique<GLOzoneEGLScenic>()), + sysmem_buffer_manager_( + base::fuchsia::ServiceDirectoryClient::ForCurrentProcess() + ->ConnectToServiceSync<fuchsia::sysmem::Allocator>()), weak_ptr_factory_(this) { // TODO(spang, crbug.com/923445): Add message loop to GPU tests. if (base::ThreadTaskRunnerHandle::IsSet()) @@ -160,7 +122,12 @@ gfx::Size size, gfx::BufferFormat format, gfx::BufferUsage usage) { - return new ScenicPixmap(widget, size, format); + auto collection = sysmem_buffer_manager_.CreateCollection(vk_device, size, + format, usage, 1); + if (!collection) + return nullptr; + + return collection->CreateNativePixmap(0); } #if BUILDFLAG(ENABLE_VULKAN) @@ -170,7 +137,8 @@ if (!gpu_host_) LOG(FATAL) << "Vulkan implementation requires InitializeForGPU"; - return std::make_unique<ui::VulkanImplementationScenic>(this); + return std::make_unique<ui::VulkanImplementationScenic>( + this, &sysmem_buffer_manager_); } #endif
diff --git a/ui/ozone/platform/scenic/scenic_surface_factory.h b/ui/ozone/platform/scenic/scenic_surface_factory.h index b62f255..0228b166 100644 --- a/ui/ozone/platform/scenic/scenic_surface_factory.h +++ b/ui/ozone/platform/scenic/scenic_surface_factory.h
@@ -17,6 +17,7 @@ #include "base/threading/thread_checker.h" #include "gpu/vulkan/buildflags.h" #include "mojo/public/cpp/system/handle.h" +#include "ui/ozone/platform/scenic/sysmem_buffer_manager.h" #include "ui/ozone/public/gl_ozone.h" #include "ui/ozone/public/interfaces/scenic_gpu_host.mojom.h" #include "ui/ozone/public/surface_factory_ozone.h" @@ -91,6 +92,8 @@ // Task runner for thread that |scenic_| and |gpu_host_| are bound on. scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_; + SysmemBufferManager sysmem_buffer_manager_; + THREAD_CHECKER(thread_checker_); base::WeakPtrFactory<ScenicSurfaceFactory> weak_ptr_factory_;
diff --git a/ui/ozone/platform/scenic/sysmem_buffer_collection.cc b/ui/ozone/platform/scenic/sysmem_buffer_collection.cc new file mode 100644 index 0000000..fedc834 --- /dev/null +++ b/ui/ozone/platform/scenic/sysmem_buffer_collection.cc
@@ -0,0 +1,388 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/ozone/platform/scenic/sysmem_buffer_collection.h" + +#include "base/bits.h" +#include "base/fuchsia/fuchsia_logging.h" +#include "gpu/vulkan/vulkan_device_queue.h" +#include "gpu/vulkan/vulkan_function_pointers.h" +#include "ui/gfx/native_pixmap.h" + +namespace ui { + +namespace { + +class SysmemNativePixmap : public gfx::NativePixmap { + public: + SysmemNativePixmap(scoped_refptr<SysmemBufferCollection> collection, + gfx::NativePixmapHandle handle) + : collection_(collection), handle_(std::move(handle)) {} + + bool AreDmaBufFdsValid() const override { return false; } + int GetDmaBufFd(size_t plane) const override { + NOTREACHED(); + return -1; + } + int GetDmaBufPitch(size_t plane) const override { + NOTREACHED(); + return 0; + } + int GetDmaBufOffset(size_t plane) const override { + NOTREACHED(); + return 0; + } + uint64_t GetDmaBufModifier(size_t plane) const override { + NOTREACHED(); + return 0; + } + + gfx::BufferFormat GetBufferFormat() const override { + return collection_->format(); + } + gfx::Size GetBufferSize() const override { return collection_->size(); } + uint32_t GetUniqueId() const override { return 0; } + bool ScheduleOverlayPlane(gfx::AcceleratedWidget widget, + int plane_z_order, + gfx::OverlayTransform plane_transform, + const gfx::Rect& display_bounds, + const gfx::RectF& crop_rect, + bool enable_blend, + std::unique_ptr<gfx::GpuFence> gpu_fence) override { + NOTIMPLEMENTED(); + + return false; + } + gfx::NativePixmapHandle ExportHandle() override { + return gfx::CloneHandleForIPC(handle_); + } + + private: + ~SysmemNativePixmap() override = default; + + // Keep reference to the collection to make sure it outlives the pixmap. + scoped_refptr<SysmemBufferCollection> collection_; + gfx::NativePixmapHandle handle_; + + DISALLOW_COPY_AND_ASSIGN(SysmemNativePixmap); +}; + +size_t RoundUp(size_t value, size_t alignment) { + return ((value + alignment - 1) / alignment) * alignment; +} + +VkFormat VkFormatForBufferFormat(gfx::BufferFormat buffer_format) { + switch (buffer_format) { + case gfx::BufferFormat::YUV_420_BIPLANAR: + return VK_FORMAT_G8_B8R8_2PLANE_420_UNORM; + + case gfx::BufferFormat::R_8: + return VK_FORMAT_R8_UNORM; + + case gfx::BufferFormat::RG_88: + return VK_FORMAT_R8G8_UNORM; + + case gfx::BufferFormat::BGRA_8888: + case gfx::BufferFormat::BGRX_8888: + return VK_FORMAT_B8G8R8A8_UNORM; + + case gfx::BufferFormat::RGBA_8888: + case gfx::BufferFormat::RGBX_8888: + return VK_FORMAT_R8G8B8A8_UNORM; + + default: + NOTREACHED(); + return VK_FORMAT_UNDEFINED; + } +} + +} // namespace + +// static +bool SysmemBufferCollection::IsNativePixmapConfigSupported( + gfx::BufferFormat format, + gfx::BufferUsage usage) { + bool format_supported = format == gfx::BufferFormat::YUV_420_BIPLANAR || + format == gfx::BufferFormat::R_8 || + format == gfx::BufferFormat::RG_88 || + format == gfx::BufferFormat::RGBA_8888 || + format == gfx::BufferFormat::RGBX_8888 || + format == gfx::BufferFormat::BGRA_8888 || + format == gfx::BufferFormat::BGRX_8888; + bool usage_supported = usage == gfx::BufferUsage::SCANOUT || + usage == gfx::BufferUsage::SCANOUT_CPU_READ_WRITE || + usage == gfx::BufferUsage::GPU_READ_CPU_READ_WRITE; + return format_supported && usage_supported; +} + +SysmemBufferCollection::SysmemBufferCollection() + : id_(gfx::SysmemBufferCollectionId::Create()) {} + +bool SysmemBufferCollection::Initialize( + fuchsia::sysmem::Allocator_Sync* allocator, + gfx::Size size, + gfx::BufferFormat format, + gfx::BufferUsage usage, + VkDevice vk_device, + size_t num_buffers) { + DCHECK(IsNativePixmapConfigSupported(format, usage)); + DCHECK(!collection_); + + // Currently all supported |usage| values require GPU access, which requires + // a valid VkDevice. + if (vk_device == VK_NULL_HANDLE) + return false; + + size_ = size; + format_ = format; + usage_ = usage; + vk_device_ = vk_device; + + fuchsia::sysmem::BufferCollectionTokenSyncPtr collection_token; + zx_status_t status = + allocator->AllocateSharedCollection(collection_token.NewRequest()); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) + << "fuchsia.sysmem.Allocator.AllocateSharedCollection()"; + return false; + } + + fuchsia::sysmem::BufferCollectionTokenPtr vulkan_collection_token; + collection_token->Duplicate(ZX_RIGHT_SAME_RIGHTS, + vulkan_collection_token.NewRequest()); + status = collection_token->Sync(); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) << "fuchsia.sysmem.BufferCollectionToken.Sync()"; + return false; + } + + status = allocator->BindSharedCollection(std::move(collection_token), + collection_.NewRequest()); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) << "fuchsia.sysmem.Allocator.BindSharedCollection()"; + return false; + } + + fuchsia::sysmem::BufferCollectionConstraints constraints; + if (is_mappable()) { + constraints.usage.cpu = + fuchsia::sysmem::cpuUsageRead | fuchsia::sysmem::cpuUsageWrite; + } + constraints.min_buffer_count_for_camping = num_buffers; + constraints.image_format_constraints_count = 0; + + status = collection_->SetConstraints(/*has_constraints=*/true, + std::move(constraints)); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) + << "fuchsia.sysmem.BufferCollection.SetConstraints()"; + return false; + } + + zx::channel token_channel = vulkan_collection_token.Unbind().TakeChannel(); + VkBufferCollectionCreateInfoFUCHSIA buffer_collection_create_info = { + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA}; + buffer_collection_create_info.collectionToken = token_channel.get(); + if (vkCreateBufferCollectionFUCHSIA(vk_device_, + &buffer_collection_create_info, nullptr, + &vk_buffer_collection_) != VK_SUCCESS) { + vk_buffer_collection_ = VK_NULL_HANDLE; + DLOG(ERROR) << "vkCreateBufferCollectionFUCHSIA() failed"; + return false; + } + + // vkCreateBufferCollectionFUCHSIA() takes ownership of the token on success. + ignore_result(token_channel.release()); + + VkImageCreateInfo image_create_info; + InitializeImageCreateInfo(&image_create_info); + + // sysmem currently doesn't support R8 and R8G8 images. To workaround this + // issue they are masqueraded as RGBA images with shorter rows. + if (format_ == gfx::BufferFormat::R_8) { + image_create_info.format = VK_FORMAT_B8G8R8A8_UNORM; + image_create_info.extent.width = size_.width() / 4; + } else if (format_ == gfx::BufferFormat::RG_88) { + image_create_info.format = VK_FORMAT_B8G8R8A8_UNORM; + image_create_info.extent.width = size_.width() / 2; + } + + if (vkSetBufferCollectionConstraintsFUCHSIA(vk_device_, vk_buffer_collection_, + &image_create_info) != + VK_SUCCESS) { + DLOG(ERROR) << "vkSetBufferCollectionConstraintsFUCHSIA() failed"; + return false; + } + + zx_status_t wait_status; + status = collection_->WaitForBuffersAllocated(&wait_status, &buffers_info_); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) << "fuchsia.sysmem.BufferCollection failed"; + return false; + } + + if (wait_status != ZX_OK) { + ZX_DLOG(ERROR, status) << "fuchsia.sysmem.BufferCollection::" + "WaitForBuffersAllocated() failed."; + return false; + } + + DCHECK_GE(buffers_info_.buffer_count, num_buffers); + DCHECK(buffers_info_.settings.has_image_format_constraints); + + buffer_size_ = buffers_info_.settings.buffer_settings.size_bytes; + + // CreateVkImage() should always be called on the same thread, but it may be + // different from the thread that called Initialize(). + DETACH_FROM_THREAD(vulkan_thread_checker_); + + return true; +} + +scoped_refptr<gfx::NativePixmap> SysmemBufferCollection::CreateNativePixmap( + size_t buffer_index) { + CHECK_LT(buffer_index, num_buffers()); + + gfx::NativePixmapHandle handle; + handle.buffer_collection_id = id(); + handle.buffer_index = buffer_index; + + zx::vmo main_plane_vmo; + if (is_mappable()) { + DCHECK(buffers_info_.buffers[buffer_index].vmo.is_valid()); + zx_status_t status = buffers_info_.buffers[buffer_index].vmo.duplicate( + ZX_RIGHT_SAME_RIGHTS, &main_plane_vmo); + if (status != ZX_OK) { + ZX_DLOG(ERROR, status) << "zx_handle_duplicate"; + return nullptr; + } + } + + const fuchsia::sysmem::ImageFormatConstraints& format = + buffers_info_.settings.image_format_constraints; + + size_t stride = RoundUp(format.min_bytes_per_row, format.coded_width_divisor); + size_t plane_offset = buffers_info_.buffers[buffer_index].vmo_usable_start; + size_t plane_size = stride * format.min_coded_height; + handle.planes.emplace_back(stride, plane_offset, plane_size, + std::move(main_plane_vmo)); + + // For YUV images add a second plane. + if (format_ == gfx::BufferFormat::YUV_420_BIPLANAR) { + size_t uv_plane_offset = plane_offset + plane_size; + size_t uv_plane_size = plane_size / 2; + handle.planes.emplace_back(stride, uv_plane_offset, uv_plane_size, + zx::vmo()); + DCHECK_LE(uv_plane_offset + uv_plane_size, buffer_size_); + } + + return new SysmemNativePixmap(this, std::move(handle)); +} + +bool SysmemBufferCollection::CreateVkImage(size_t buffer_index, + VkDevice vk_device, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) { + DCHECK_CALLED_ON_VALID_THREAD(vulkan_thread_checker_); + DCHECK_LT(buffer_index, num_buffers()); + + if (vk_device_ != vk_device) { + DLOG(FATAL) << "Tried to import NativePixmap that was created for a " + "different VkDevice."; + return false; + } + + VkBufferCollectionPropertiesFUCHSIA properties = { + VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA}; + if (vkGetBufferCollectionPropertiesFUCHSIA(vk_device_, vk_buffer_collection_, + &properties) != VK_SUCCESS) { + DLOG(ERROR) << "vkGetBufferCollectionPropertiesFUCHSIA_ failed"; + return false; + } + + InitializeImageCreateInfo(vk_image_info); + if (vkCreateImage(vk_device_, vk_image_info, nullptr, vk_image) != + VK_SUCCESS) { + DLOG(ERROR) << "Failed to create VkImage."; + return false; + } + + VkMemoryRequirements requirements; + vkGetImageMemoryRequirements(vk_device, *vk_image, &requirements); + + uint32_t viable_memory_types = + properties.memoryTypeBits & requirements.memoryTypeBits; + uint32_t memory_type = + base::bits::CountLeadingZeroBits32(viable_memory_types); + + VkImportMemoryBufferCollectionFUCHSIA buffer_collection_info = { + VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA}; + buffer_collection_info.collection = vk_buffer_collection_; + buffer_collection_info.index = buffer_index; + + VkMemoryAllocateInfo alloc_info = {VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO, + &buffer_collection_info}; + alloc_info.allocationSize = buffer_size_; + alloc_info.memoryTypeIndex = memory_type; + + if (vkAllocateMemory(vk_device_, &alloc_info, nullptr, vk_device_memory) != + VK_SUCCESS) { + DLOG(ERROR) << "Failed to create import sysmem buffer."; + vkDestroyImage(vk_device_, *vk_image, nullptr); + *vk_image = VK_NULL_HANDLE; + return false; + } + + if (vkBindImageMemory(vk_device_, *vk_image, *vk_device_memory, 0u) != + VK_SUCCESS) { + DLOG(ERROR) << "Failed to bind sysmem buffer to an image."; + vkDestroyImage(vk_device_, *vk_image, nullptr); + *vk_image = VK_NULL_HANDLE; + vkFreeMemory(vk_device_, *vk_device_memory, nullptr); + *vk_device_memory = VK_NULL_HANDLE; + return false; + } + + *mem_allocation_size = buffer_size_; + + return true; +} + +void SysmemBufferCollection::SetOnDeletedCallback( + base::OnceClosure on_deleted) { + DCHECK(!on_deleted_); + on_deleted_ = std::move(on_deleted); +} + +SysmemBufferCollection::~SysmemBufferCollection() { + if (vk_buffer_collection_ != VK_NULL_HANDLE) { + vkDestroyBufferCollectionFUCHSIA(vk_device_, vk_buffer_collection_, + nullptr); + } + + collection_->Close(); + + if (on_deleted_) + std::move(on_deleted_).Run(); +} + +void SysmemBufferCollection::InitializeImageCreateInfo( + VkImageCreateInfo* vk_image_info) { + *vk_image_info = {VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO}; + vk_image_info->imageType = VK_IMAGE_TYPE_2D; + vk_image_info->format = VkFormatForBufferFormat(format_); + vk_image_info->extent = VkExtent3D{size_.width(), size_.height(), 1}; + vk_image_info->mipLevels = 1; + vk_image_info->arrayLayers = 1; + vk_image_info->samples = VK_SAMPLE_COUNT_1_BIT; + vk_image_info->tiling = + is_mappable() ? VK_IMAGE_TILING_LINEAR : VK_IMAGE_TILING_OPTIMAL; + vk_image_info->usage = VK_IMAGE_USAGE_SAMPLED_BIT; + vk_image_info->sharingMode = VK_SHARING_MODE_EXCLUSIVE; + vk_image_info->initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; +} + +} // namespace ui \ No newline at end of file
diff --git a/ui/ozone/platform/scenic/sysmem_buffer_collection.h b/ui/ozone/platform/scenic/sysmem_buffer_collection.h new file mode 100644 index 0000000..7b83780 --- /dev/null +++ b/ui/ozone/platform/scenic/sysmem_buffer_collection.h
@@ -0,0 +1,113 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_OZONE_PLATFORM_SCENIC_SYSMEM_BUFFER_COLLECTION_H_ +#define UI_OZONE_PLATFORM_SCENIC_SYSMEM_BUFFER_COLLECTION_H_ + +#include <fuchsia/sysmem/cpp/fidl.h> +#include <vulkan/vulkan.h> + +#include "base/callback.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/threading/thread_checker.h" +#include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h" +#include "ui/gfx/buffer_types.h" +#include "ui/gfx/geometry/size.h" +#include "ui/gfx/native_pixmap_handle.h" + +namespace gfx { +class NativePixmap; +} // namespace gfx + +namespace ui { + +// SysmemBufferCollection keeps sysmem.BufferCollection interface along with the +// corresponding VkBufferCollectionFUCHSIA. It allows to create either +// gfx::NativePixmap or VkImage from the buffers in the collection. +// A collection can be initialized and used on any thread. CreateVkImage() must +// be called on the same thread (because it may be be safe to use +// VkBufferCollectionFUCHSIA concurrently on different threads). +class SysmemBufferCollection + : public base::RefCountedThreadSafe<SysmemBufferCollection> { + public: + static bool IsNativePixmapConfigSupported(gfx::BufferFormat format, + gfx::BufferUsage usage); + + SysmemBufferCollection(); + + bool Initialize(fuchsia::sysmem::Allocator_Sync* allocator, + gfx::Size size, + gfx::BufferFormat format, + gfx::BufferUsage usage, + VkDevice vk_device, + size_t num_buffers); + + // Must not be called more than once. + void SetOnDeletedCallback(base::OnceClosure on_deleted); + + // Creates a NativePixmap the buffer with the specified index. Returned + // NativePixmap holds a reference to the collection, so the collection is not + // deleted until all NativePixmap are destroyed. + scoped_refptr<gfx::NativePixmap> CreateNativePixmap(size_t buffer_index); + + // Creates a new Vulkan image for the buffer with the specified index. + bool CreateVkImage(size_t buffer_index, + VkDevice vk_device, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size); + + gfx::SysmemBufferCollectionId id() const { return id_; } + size_t num_buffers() const { return buffers_info_.buffer_count; } + gfx::Size size() const { return size_; } + gfx::BufferFormat format() const { return format_; } + size_t buffer_size() const { + return buffers_info_.settings.buffer_settings.size_bytes; + } + + private: + friend class base::RefCountedThreadSafe<SysmemBufferCollection>; + + ~SysmemBufferCollection(); + + void InitializeImageCreateInfo(VkImageCreateInfo* vk_image_info); + + bool is_mappable() const { + return usage_ == gfx::BufferUsage::SCANOUT_CPU_READ_WRITE || + usage_ == gfx::BufferUsage::GPU_READ_CPU_READ_WRITE; + } + + const gfx::SysmemBufferCollectionId id_; + + gfx::Size size_; + gfx::BufferFormat format_ = gfx::BufferFormat::RGBA_8888; + gfx::BufferUsage usage_ = gfx::BufferUsage::GPU_READ_CPU_READ_WRITE; + + fuchsia::sysmem::BufferCollectionSyncPtr collection_; + fuchsia::sysmem::BufferCollectionInfo_2 buffers_info_; + + // Vulkan device for which the collection was initialized. + VkDevice vk_device_ = VK_NULL_HANDLE; + + // Handle for the Vulkan object that holds the same logical buffer collection + // that is referenced by |collection_|. + VkBufferCollectionFUCHSIA vk_buffer_collection_ = VK_NULL_HANDLE; + + // Thread checker used to verify that CreateVkImage() is always called from + // the same thread. It may be unsafe to use vk_buffer_collection_ on different + // threads. + THREAD_CHECKER(vulkan_thread_checker_); + + size_t buffer_size_ = 0; + + base::OnceClosure on_deleted_; + + DISALLOW_COPY_AND_ASSIGN(SysmemBufferCollection); +}; + +} // namespace ui + +#endif // UI_OZONE_PLATFORM_SCENIC_SYSMEM_BUFFER_COLLECTION_H_ \ No newline at end of file
diff --git a/ui/ozone/platform/scenic/sysmem_buffer_manager.cc b/ui/ozone/platform/scenic/sysmem_buffer_manager.cc new file mode 100644 index 0000000..1e040ec --- /dev/null +++ b/ui/ozone/platform/scenic/sysmem_buffer_manager.cc
@@ -0,0 +1,62 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/ozone/platform/scenic/sysmem_buffer_manager.h" + +#include <zircon/rights.h> + +#include "base/bind.h" +#include "base/hash/hash.h" +#include "ui/ozone/platform/scenic/sysmem_buffer_collection.h" + +namespace ui { + +SysmemBufferManager::SysmemBufferManager( + fuchsia::sysmem::AllocatorSyncPtr allocator) + : allocator_(std::move(allocator)) {} + +SysmemBufferManager::~SysmemBufferManager() { + base::AutoLock auto_lock(collections_lock_); + DCHECK(collections_.empty()); +} + +scoped_refptr<SysmemBufferCollection> SysmemBufferManager::CreateCollection( + VkDevice vk_device, + gfx::Size size, + gfx::BufferFormat format, + gfx::BufferUsage usage, + size_t num_buffers) { + auto result = base::MakeRefCounted<SysmemBufferCollection>(); + if (!result->Initialize(allocator_.get(), size, format, usage, vk_device, + num_buffers)) { + return nullptr; + } + + { + base::AutoLock auto_lock(collections_lock_); + collections_[result->id()] = result.get(); + } + + result->SetOnDeletedCallback( + base::BindOnce(&SysmemBufferManager::OnCollectionDestroyed, + base::Unretained(this), result->id())); + + return result; +} + +scoped_refptr<SysmemBufferCollection> SysmemBufferManager::GetCollectionById( + gfx::SysmemBufferCollectionId id) { + base::AutoLock auto_lock(collections_lock_); + auto it = collections_.find(id); + return it == collections_.end() ? nullptr : it->second; +} + +void SysmemBufferManager::OnCollectionDestroyed( + gfx::SysmemBufferCollectionId id) { + base::AutoLock auto_lock(collections_lock_); + int erased = collections_.erase(id); + DCHECK_EQ(erased, 1); +} + +} // namespace ui
diff --git a/ui/ozone/platform/scenic/sysmem_buffer_manager.h b/ui/ozone/platform/scenic/sysmem_buffer_manager.h new file mode 100644 index 0000000..c90ce76 --- /dev/null +++ b/ui/ozone/platform/scenic/sysmem_buffer_manager.h
@@ -0,0 +1,57 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_OZONE_PLATFORM_SCENIC_SYSMEM_BUFFER_MANAGER_H_ +#define UI_OZONE_PLATFORM_SCENIC_SYSMEM_BUFFER_MANAGER_H_ + +#include <fuchsia/sysmem/cpp/fidl.h> +#include <vulkan/vulkan.h> + +#include <unordered_map> + +#include "base/containers/small_map.h" +#include "base/macros.h" +#include "base/memory/ref_counted.h" +#include "base/synchronization/lock.h" +#include "base/unguessable_token.h" +#include "ui/gfx/buffer_types.h" +#include "ui/gfx/geometry/size.h" +#include "ui/gfx/native_pixmap_handle.h" + +namespace ui { + +class SysmemBufferCollection; + +class SysmemBufferManager { + public: + explicit SysmemBufferManager(fuchsia::sysmem::AllocatorSyncPtr allocator); + ~SysmemBufferManager(); + + scoped_refptr<SysmemBufferCollection> CreateCollection( + VkDevice vk_device, + gfx::Size size, + gfx::BufferFormat format, + gfx::BufferUsage usage, + size_t num_buffers); + + scoped_refptr<SysmemBufferCollection> GetCollectionById( + gfx::SysmemBufferCollectionId id); + + private: + void OnCollectionDestroyed(gfx::SysmemBufferCollectionId id); + + fuchsia::sysmem::AllocatorSyncPtr allocator_; + + base::small_map<std::unordered_map<gfx::SysmemBufferCollectionId, + SysmemBufferCollection*, + base::UnguessableTokenHash>> + collections_ GUARDED_BY(collections_lock_); + base::Lock collections_lock_; + + DISALLOW_COPY_AND_ASSIGN(SysmemBufferManager); +}; + +} // namespace ui + +#endif // UI_OZONE_PLATFORM_SCENIC_SYSMEM_BUFFER_MANAGER_H_ \ No newline at end of file
diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc index a0f167a..3102ce8d 100644 --- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc +++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.cc
@@ -22,16 +22,20 @@ #include "gpu/vulkan/vulkan_util.h" #include "mojo/public/cpp/system/platform_handle.h" #include "ui/gfx/gpu_fence.h" +#include "ui/gfx/gpu_memory_buffer.h" #include "ui/ozone/platform/scenic/scenic_surface.h" #include "ui/ozone/platform/scenic/scenic_surface_factory.h" #include "ui/ozone/platform/scenic/scenic_window.h" #include "ui/ozone/platform/scenic/scenic_window_manager.h" +#include "ui/ozone/platform/scenic/sysmem_buffer_collection.h" namespace ui { VulkanImplementationScenic::VulkanImplementationScenic( - ScenicSurfaceFactory* scenic_surface_factory) - : scenic_surface_factory_(scenic_surface_factory) {} + ScenicSurfaceFactory* scenic_surface_factory, + SysmemBufferManager* sysmem_buffer_manager) + : scenic_surface_factory_(scenic_surface_factory), + sysmem_buffer_manager_(sysmem_buffer_manager) {} VulkanImplementationScenic::~VulkanImplementationScenic() = default; @@ -111,7 +115,9 @@ std::vector<const char*> VulkanImplementationScenic::GetRequiredDeviceExtensions() { return {VK_KHR_SWAPCHAIN_EXTENSION_NAME, - VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME}; + VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME, + VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME, + VK_FUCHSIA_BUFFER_COLLECTION_EXTENSION_NAME}; } VkFence VulkanImplementationScenic::CreateVkFenceForGpuFence( @@ -199,4 +205,45 @@ return VK_EXTERNAL_MEMORY_HANDLE_TYPE_TEMP_ZIRCON_VMO_BIT_FUCHSIA; } +bool VulkanImplementationScenic::CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) { + return memory_buffer_type == gfx::NATIVE_PIXMAP; +} + +bool VulkanImplementationScenic::CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) { + if (gmb_handle.type != gfx::NATIVE_PIXMAP) + return false; + + if (!gmb_handle.native_pixmap_handle.buffer_collection_id) { + DLOG(ERROR) << "NativePixmapHandle.buffer_collection_id is not set."; + return false; + } + + auto collection = sysmem_buffer_manager_->GetCollectionById( + gmb_handle.native_pixmap_handle.buffer_collection_id.value()); + if (!collection) { + DLOG(ERROR) << "Tried to use an unknown buffer collection ID"; + return false; + } + + if (gmb_handle.native_pixmap_handle.buffer_index >= + collection->num_buffers() || + size != collection->size()) { + DLOG(ERROR) + << "Can't import GpuMemoryBuffer to an image with a different size."; + return false; + } + + return collection->CreateVkImage(gmb_handle.native_pixmap_handle.buffer_index, + vk_device, vk_image, vk_image_info, + vk_device_memory, mem_allocation_size); +} + } // namespace ui
diff --git a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h index 7b0149b..f5dc09b 100644 --- a/ui/ozone/platform/scenic/vulkan_implementation_scenic.h +++ b/ui/ozone/platform/scenic/vulkan_implementation_scenic.h
@@ -15,10 +15,12 @@ namespace ui { class ScenicSurfaceFactory; +class SysmemBufferManager; class VulkanImplementationScenic : public gpu::VulkanImplementation { public: - VulkanImplementationScenic(ScenicSurfaceFactory* scenic_surface_factory); + VulkanImplementationScenic(ScenicSurfaceFactory* scenic_surface_factory, + SysmemBufferManager* sysmem_buffer_manager); ~VulkanImplementationScenic() override; // VulkanImplementation: @@ -41,9 +43,21 @@ gpu::SemaphoreHandle GetSemaphoreHandle(VkDevice vk_device, VkSemaphore vk_semaphore) override; VkExternalMemoryHandleTypeFlagBits GetExternalImageHandleType() override; + bool CanImportGpuMemoryBuffer( + gfx::GpuMemoryBufferType memory_buffer_type) override; + bool CreateImageFromGpuMemoryHandle( + VkDevice vk_device, + gfx::GpuMemoryBufferHandle gmb_handle, + gfx::Size size, + VkImage* vk_image, + VkImageCreateInfo* vk_image_info, + VkDeviceMemory* vk_device_memory, + VkDeviceSize* mem_allocation_size) override; private: ScenicSurfaceFactory* const scenic_surface_factory_; + SysmemBufferManager* const sysmem_buffer_manager_; + gpu::VulkanInstance vulkan_instance_; PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA_ =