Remove web test code from ShellContentBrowserClient
There is a web test override class already, named
WebTestContentBrowserClient. Any test-only code should live in that
class.
[email protected]
Bug: 866140
Change-Id: Ib14d8cd15a577fe5244eb83b3a9dabfb8ef1f139
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2119376
Auto-Submit: danakj <[email protected]>
Commit-Queue: Avi Drissman <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Cr-Commit-Position: refs/heads/master@{#753636}
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index d4235d0e..fe62004 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -29,11 +29,9 @@
#include "content/public/browser/storage_partition.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
-#include "content/public/common/service_names.mojom.h"
#include "content/public/common/url_constants.h"
#include "content/public/common/user_agent.h"
#include "content/public/common/web_preferences.h"
-#include "content/public/test/test_service.h"
#include "content/shell/browser/shell.h"
#include "content/shell/browser/shell_browser_context.h"
#include "content/shell/browser/shell_browser_main_parts.h"
@@ -41,18 +39,11 @@
#include "content/shell/browser/shell_quota_permission_context.h"
#include "content/shell/browser/shell_web_contents_view_delegate_creator.h"
#include "content/shell/common/shell_switches.h"
-#include "content/shell/common/web_test/fake_bluetooth_chooser.mojom.h"
-#include "content/shell/common/web_test/web_test_bluetooth_fake_adapter_setter.mojom.h"
-#include "content/shell/common/web_test/web_test_switches.h"
-#include "content/test/data/mojo_web_test_helper_test.mojom.h"
-#include "device/bluetooth/public/mojom/test/fake_bluetooth.mojom.h"
#include "media/mojo/buildflags.h"
#include "media/mojo/mojom/media_service.mojom.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/ssl/client_cert_identity.h"
#include "services/network/public/mojom/network_service.mojom.h"
-#include "services/service_manager/public/cpp/manifest.h"
-#include "services/service_manager/public/cpp/manifest_builder.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/user_agent/user_agent_metadata.h"
#include "ui/base/ui_base_features.h"
@@ -107,20 +98,6 @@
}
#endif
-const service_manager::Manifest& GetContentBrowserOverlayManifest() {
- static base::NoDestructor<service_manager::Manifest> manifest{
- service_manager::ManifestBuilder()
- .ExposeCapability(
- "renderer",
- service_manager::Manifest::InterfaceList<
- mojom::MojoWebTestHelper, mojom::FakeBluetoothChooser,
- mojom::FakeBluetoothChooserFactory,
- mojom::WebTestBluetoothFakeAdapterSetter,
- bluetooth::mojom::FakeBluetooth>())
- .Build()};
- return *manifest;
-}
-
} // namespace
std::string GetShellUserAgent() {
@@ -200,14 +177,6 @@
return false;
}
-base::Optional<service_manager::Manifest>
-ShellContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
- if (name == content::mojom::kBrowserServiceName)
- return GetContentBrowserOverlayManifest();
-
- return base::nullopt;
-}
-
void ShellContentBrowserClient::AppendExtraCommandLineSwitches(
base::CommandLine* command_line,
int child_process_id) {
@@ -419,27 +388,9 @@
BrowserContext* context,
bool in_memory,
const base::FilePath& relative_partition_path) {
- mojo::Remote<network::mojom::NetworkContext> network_context;
network::mojom::NetworkContextParamsPtr context_params =
- network::mojom::NetworkContextParams::New();
- UpdateCorsExemptHeader(context_params.get());
- context_params->user_agent = GetUserAgent();
- context_params->accept_language = GetAcceptLangs(context);
-
-#if BUILDFLAG(ENABLE_REPORTING)
- if (base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kRunWebTests)) {
- // Configure the Reporting service in a manner expected by certain Web
- // Platform Tests (network-error-logging and reporting-api).
- //
- // (1) Always send reports (irrespective of BACKGROUND_SYNC permission)
- // (2) Lower the timeout for sending reports.
- context_params->reporting_delivery_interval =
- kReportingDeliveryIntervalTimeForWebTests;
- context_params->skip_reporting_send_permission_check = true;
- }
-#endif
-
+ CreateNetworkContextParams(context);
+ mojo::Remote<network::mojom::NetworkContext> network_context;
GetNetworkService()->CreateNetworkContext(
network_context.BindNewPipeAndPassReceiver(), std::move(context_params));
return network_context;
@@ -459,4 +410,14 @@
return shell_browser_main_parts_->off_the_record_browser_context();
}
+network::mojom::NetworkContextParamsPtr
+ShellContentBrowserClient::CreateNetworkContextParams(BrowserContext* context) {
+ network::mojom::NetworkContextParamsPtr context_params =
+ network::mojom::NetworkContextParams::New();
+ UpdateCorsExemptHeader(context_params.get());
+ context_params->user_agent = GetUserAgent();
+ context_params->accept_language = GetAcceptLangs(context);
+ return context_params;
+}
+
} // namespace content
diff --git a/content/shell/browser/shell_content_browser_client.h b/content/shell/browser/shell_content_browser_client.h
index 9acb46b..04f77b29 100644
--- a/content/shell/browser/shell_content_browser_client.h
+++ b/content/shell/browser/shell_content_browser_client.h
@@ -39,8 +39,6 @@
bool IsHandledURL(const GURL& url) override;
bool ShouldTerminateOnServiceQuit(
const service_manager::Identity& id) override;
- base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
- base::StringPiece name) override;
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
int child_process_id) override;
std::string GetAcceptLangs(BrowserContext* context) override;
@@ -135,10 +133,16 @@
}
protected:
+ // Call this if CreateBrowserMainParts() is overridden in a subclass.
void set_browser_main_parts(ShellBrowserMainParts* parts) {
shell_browser_main_parts_ = parts;
}
+ // Used by CreateNetworkContext(), and can be overridden to change the
+ // parameters used there.
+ virtual network::mojom::NetworkContextParamsPtr CreateNetworkContextParams(
+ BrowserContext* context);
+
private:
base::OnceClosure select_client_certificate_callback_;
base::OnceCallback<bool(const service_manager::Identity&)>
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 21d8a74..fdf5409 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
@@ -25,6 +25,7 @@
#include "content/public/browser/site_isolation_policy.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/content_switches.h"
+#include "content/public/common/service_names.mojom.h"
#include "content/shell/browser/shell_browser_context.h"
#include "content/shell/browser/web_test/blink_test_controller.h"
#include "content/shell/browser/web_test/fake_bluetooth_chooser.h"
@@ -39,14 +40,20 @@
#include "content/shell/browser/web_test/web_test_tts_controller_delegate.h"
#include "content/shell/browser/web_test/web_test_tts_platform.h"
#include "content/shell/common/blink_test.mojom.h"
+#include "content/shell/common/web_test/web_test_bluetooth_fake_adapter_setter.mojom.h"
#include "content/shell/common/web_test/web_test_switches.h"
#include "content/shell/renderer/web_test/blink_test_helpers.h"
+#include "content/test/data/mojo_web_test_helper_test.mojom.h"
#include "content/test/mock_clipboard_host.h"
#include "content/test/mock_platform_notification_service.h"
+#include "device/bluetooth/public/mojom/test/fake_bluetooth.mojom.h"
#include "device/bluetooth/test/fake_bluetooth.h"
#include "gpu/config/gpu_switches.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "services/network/public/mojom/network_service.mojom.h"
#include "services/service_manager/public/cpp/binder_map.h"
+#include "services/service_manager/public/cpp/manifest.h"
+#include "services/service_manager/public/cpp/manifest_builder.h"
#include "storage/browser/quota/quota_settings.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
#include "url/origin.h"
@@ -62,15 +69,31 @@
MojoWebTestHelper::Create(std::move(receiver));
}
-class TestOverlayWindow : public OverlayWindow {
- public:
- TestOverlayWindow() = default;
- ~TestOverlayWindow() override {}
+const service_manager::Manifest& GetWebTestContentBrowserOverlayManifest() {
+ static base::NoDestructor<service_manager::Manifest> manifest{
+ service_manager::ManifestBuilder()
+ .ExposeCapability(
+ "renderer",
+ service_manager::Manifest::InterfaceList<
+ mojom::MojoWebTestHelper, mojom::FakeBluetoothChooser,
+ mojom::FakeBluetoothChooserFactory,
+ mojom::WebTestBluetoothFakeAdapterSetter,
+ bluetooth::mojom::FakeBluetooth>())
+ .Build()};
+ return *manifest;
+}
- static std::unique_ptr<OverlayWindow> Create(
- PictureInPictureWindowController* controller) {
- return std::unique_ptr<OverlayWindow>(new TestOverlayWindow());
- }
+// An OverlayWindow that returns the last given video natural size as the
+// window's bounds.
+class BoundsMatchVideoSizeOverlayWindow : public OverlayWindow {
+ public:
+ BoundsMatchVideoSizeOverlayWindow() = default;
+ ~BoundsMatchVideoSizeOverlayWindow() override = default;
+
+ BoundsMatchVideoSizeOverlayWindow(const BoundsMatchVideoSizeOverlayWindow&) =
+ delete;
+ BoundsMatchVideoSizeOverlayWindow& operator=(
+ const BoundsMatchVideoSizeOverlayWindow&) = delete;
bool IsActive() override { return false; }
void Close() override {}
@@ -92,8 +115,6 @@
private:
gfx::Size size_;
-
- DISALLOW_COPY_AND_ASSIGN(TestOverlayWindow);
};
} // namespace
@@ -193,6 +214,14 @@
partition->GetNetworkContext()));
}
+base::Optional<service_manager::Manifest>
+WebTestContentBrowserClient::GetServiceManifestOverlay(base::StringPiece name) {
+ if (name == content::mojom::kBrowserServiceName)
+ return GetWebTestContentBrowserOverlayManifest();
+
+ return base::nullopt;
+}
+
void WebTestContentBrowserClient::BindClientHintsControllerDelegate(
mojo::PendingReceiver<client_hints::mojom::ClientHints> receiver) {
ClientHintsControllerDelegate* delegate =
@@ -255,7 +284,7 @@
std::unique_ptr<OverlayWindow>
WebTestContentBrowserClient::CreateWindowForPictureInPicture(
PictureInPictureWindowController* controller) {
- return TestOverlayWindow::Create(controller);
+ return std::make_unique<BoundsMatchVideoSizeOverlayWindow>();
}
std::vector<url::Origin>
@@ -397,7 +426,26 @@
return nullptr;
}
-// private
+network::mojom::NetworkContextParamsPtr
+WebTestContentBrowserClient::CreateNetworkContextParams(
+ BrowserContext* context) {
+ network::mojom::NetworkContextParamsPtr context_params =
+ ShellContentBrowserClient::CreateNetworkContextParams(context);
+
+#if BUILDFLAG(ENABLE_REPORTING)
+ // Configure the Reporting service in a manner expected by certain Web
+ // Platform Tests (network-error-logging and reporting-api).
+ //
+ // (1) Always send reports (irrespective of BACKGROUND_SYNC permission)
+ // (2) Lower the timeout for sending reports.
+ context_params->reporting_delivery_interval =
+ kReportingDeliveryIntervalTimeForWebTests;
+ context_params->skip_reporting_send_permission_check = true;
+#endif
+
+ return context_params;
+}
+
void WebTestContentBrowserClient::CreateFakeBluetoothChooserFactory(
mojo::PendingReceiver<mojom::FakeBluetoothChooserFactory> receiver) {
DCHECK(!fake_bluetooth_chooser_factory_);
diff --git a/content/shell/browser/web_test/web_test_content_browser_client.h b/content/shell/browser/web_test/web_test_content_browser_client.h
index 1f2c92d..4b3d15b3 100644
--- a/content/shell/browser/web_test/web_test_content_browser_client.h
+++ b/content/shell/browser/web_test/web_test_content_browser_client.h
@@ -64,6 +64,8 @@
service_manager::BinderRegistry* registry,
blink::AssociatedInterfaceRegistry* associated_registry,
RenderProcessHost* render_process_host) override;
+ base::Optional<service_manager::Manifest> GetServiceManifestOverlay(
+ base::StringPiece name) override;
void OverrideWebkitPrefs(RenderViewHost* render_view_host,
WebPreferences* prefs) override;
void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
@@ -110,6 +112,10 @@
LoginAuthRequiredCallback auth_required_callback) override;
private:
+ // ShellContentBrowserClient overrides.
+ network::mojom::NetworkContextParamsPtr CreateNetworkContextParams(
+ BrowserContext* context) override;
+
// Creates and stores a FakeBluetoothChooserFactory instance.
void CreateFakeBluetoothChooserFactory(
mojo::PendingReceiver<mojom::FakeBluetoothChooserFactory> receiver);