webui: Remove UntrustedWebUIControllerFactory
UntrustedWebUIControllerFactory has been deprecated in favor of
WebUIConfigMap. This CL changes all usages of the untrusted factory
to using WebUIConfigMap instead.
Bug: 1317510
Change-Id: I586d612cd692bc3c0b9957eba4e51733bc8c0fb5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3596358
Reviewed-by: Christopher Lam <calamity@chromium.org>
Commit-Queue: Giovanni Ortuno Urquidi <ortuno@chromium.org>
Cr-Commit-Position: refs/heads/main@{#996083}
diff --git a/chrome/browser/ui/webui/chrome_webui_navigation_browsertest.cc b/chrome/browser/ui/webui/chrome_webui_navigation_browsertest.cc
index 1428348..f781d64 100644
--- a/chrome/browser/ui/webui/chrome_webui_navigation_browsertest.cc
+++ b/chrome/browser/ui/webui/chrome_webui_navigation_browsertest.cc
@@ -8,6 +8,7 @@
#include "chrome/browser/ui/webui/chrome_web_ui_controller_factory.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/browser/webui_config_map.h"
#include "content/public/common/url_constants.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
@@ -28,17 +29,10 @@
ASSERT_TRUE(embedded_test_server()->Start());
}
- ui::TestUntrustedWebUIControllerFactory& untrusted_factory() {
- return untrusted_factory_;
- }
-
private:
content::TestWebUIControllerFactory factory_;
content::ScopedWebUIControllerFactoryRegistration factory_registration_{
&factory_};
- ui::TestUntrustedWebUIControllerFactory untrusted_factory_;
- content::ScopedWebUIControllerFactoryRegistration
- untrusted_factory_registration_{&untrusted_factory_};
};
// Verify that a browser check stops websites from embeding chrome:// iframes.
@@ -98,7 +92,7 @@
content::TestNavigationObserver observer(web_contents);
content::TestUntrustedDataSourceHeaders headers;
headers.no_xfo = true;
- untrusted_factory().add_web_ui_config(
+ content::WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-iframe-host",
headers));
diff --git a/content/browser/webui/web_ui_browsertest.cc b/content/browser/webui/web_ui_browsertest.cc
index dc1c0ec..ac1c9450 100644
--- a/content/browser/webui/web_ui_browsertest.cc
+++ b/content/browser/webui/web_ui_browsertest.cc
@@ -31,6 +31,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui_data_source.h"
#include "content/public/browser/web_ui_message_handler.h"
+#include "content/public/browser/webui_config_map.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"
#include "content/public/test/browser_test.h"
@@ -54,17 +55,7 @@
namespace {
-class WebUIImplBrowserTest : public ContentBrowserTest {
- protected:
- ui::TestUntrustedWebUIControllerFactory& untrusted_factory() {
- return untrusted_factory_;
- }
-
- private:
- ui::TestUntrustedWebUIControllerFactory untrusted_factory_;
- content::ScopedWebUIControllerFactoryRegistration
- untrusted_factory_registration_{&untrusted_factory_};
-};
+using WebUIImplBrowserTest = ContentBrowserTest;
// TODO(crbug.com/154571): Shared workers are not available on Android.
#if !BUILDFLAG(IS_ANDROID)
@@ -253,7 +244,7 @@
// SiteInstance swap.
IN_PROC_BROWSER_TEST_F(WebUIImplBrowserTest, ForceSwapOnFromChromeToUntrusted) {
WebContents* web_contents = shell()->web_contents();
- untrusted_factory().add_web_ui_config(
+ content::WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
const GURL web_ui_url(GetWebUIURL(kChromeUIHistogramHost));
@@ -285,7 +276,7 @@
// SiteInstance swap.
IN_PROC_BROWSER_TEST_F(WebUIImplBrowserTest, ForceSwapOnFromUntrustedToChrome) {
WebContents* web_contents = shell()->web_contents();
- untrusted_factory().add_web_ui_config(
+ content::WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
ASSERT_TRUE(NavigateToURL(web_contents,
@@ -404,7 +395,7 @@
// Verify that we can successfully navigate to a chrome-untrusted:// URL.
IN_PROC_BROWSER_TEST_F(WebUIImplBrowserTest, UntrustedSchemeLoads) {
- untrusted_factory().add_web_ui_config(
+ content::WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
const GURL untrusted_url(GetChromeUntrustedUIURL("test-host/title2.html"));
@@ -457,7 +448,7 @@
TestUntrustedDataSourceHeaders headers;
headers.cross_origin_opener_policy =
network::mojom::CrossOriginOpenerPolicyValue::kSameOriginPlusCoep;
- untrusted_factory().add_web_ui_config(
+ content::WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("isolated", headers));
const GURL isolated_url(GetChromeUntrustedUIURL("isolated/title2.html"));
@@ -598,7 +589,7 @@
headers.script_src = "worker-src chrome-untrusted://untrusted;";
headers.no_trusted_types = true;
- untrusted_factory().add_web_ui_config(
+ content::WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("untrusted", headers));
if (allow_embedded_frame) {
AddUntrustedDataSource(shell()->web_contents()->GetBrowserContext(),
@@ -617,17 +608,10 @@
EXECUTE_SCRIPT_DEFAULT_OPTIONS, 1 /* world_id */);
}
- ui::TestUntrustedWebUIControllerFactory& untrusted_factory() {
- return untrusted_factory_;
- }
-
private:
TestWebUIControllerFactory factory_;
content::ScopedWebUIControllerFactoryRegistration factory_registration_{
&factory_};
- ui::TestUntrustedWebUIControllerFactory untrusted_factory_;
- content::ScopedWebUIControllerFactoryRegistration
- untrusted_factory_registration_{&untrusted_factory_};
};
class WebUIDedicatedWorkerTest : public WebUIWorkerTest,
diff --git a/content/browser/webui/web_ui_navigation_browsertest.cc b/content/browser/webui/web_ui_navigation_browsertest.cc
index 527e0b2..caf0a60 100644
--- a/content/browser/webui/web_ui_navigation_browsertest.cc
+++ b/content/browser/webui/web_ui_navigation_browsertest.cc
@@ -13,6 +13,7 @@
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/frame.mojom.h"
#include "content/public/browser/web_contents.h"
+#include "content/public/browser/webui_config_map.h"
#include "content/public/common/bindings_policy.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"
@@ -72,10 +73,6 @@
ASSERT_TRUE(embedded_test_server()->Start());
}
- ui::TestUntrustedWebUIControllerFactory& untrusted_factory() {
- return untrusted_factory_;
- }
-
// Verify that a document running in a process that has WebUI bindings,
// regardless of scheme, can navigate an iframe to web content and the
// resulting document is properly site isolated.
@@ -203,9 +200,6 @@
private:
TestWebUIControllerFactory factory_;
ScopedWebUIControllerFactoryRegistration factory_registration_{&factory_};
- ui::TestUntrustedWebUIControllerFactory untrusted_factory_;
- ScopedWebUIControllerFactoryRegistration untrusted_factory_registration_{
- &untrusted_factory_};
};
// Verify that a chrome: scheme document can add iframes with web content, as
@@ -269,7 +263,7 @@
// Add an untrusted WebUI with no iframe restrictions.
TestUntrustedDataSourceHeaders headers;
headers.child_src = "child-src * data:;";
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host", headers));
GURL main_frame_url(GetChromeUntrustedUIURL("test-host/title1.html"));
@@ -343,7 +337,7 @@
IN_PROC_BROWSER_TEST_F(WebUINavigationBrowserTest,
WebFrameInChromeUntrustedSchemeDisallowedByCSP) {
// Add an untrusted WebUI which disallows iframes by default.
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
GURL main_frame_url(GetChromeUntrustedUIURL("test-host/title1.html"));
EXPECT_TRUE(NavigateToURL(shell(), main_frame_url));
@@ -382,7 +376,7 @@
// Add a DataSource for chrome-untrusted:// that can be iframe'd.
TestUntrustedDataSourceHeaders headers;
headers.no_xfo = true;
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-iframe-host",
headers));
GURL untrusted_url(GetChromeUntrustedUIURL("test-iframe-host/title1.html"));
@@ -448,7 +442,7 @@
TestUntrustedDataSourceHeaders headers;
headers.no_xfo = true;
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-iframe-host",
headers));
@@ -640,7 +634,7 @@
// Add a DataSource for chrome-untrusted:// that can be iframe'd.
TestUntrustedDataSourceHeaders headers;
headers.no_xfo = true;
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host", headers));
GURL untrusted_url(GetChromeUntrustedUIURL("test-host/title1.html"));
@@ -690,7 +684,7 @@
// Add a DataSource for the chrome-untrusted:// iframe with frame ancestor
// chrome://web-ui.
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host", headers));
GURL untrusted_url(GetChromeUntrustedUIURL("test-host/title1.html"));
TestNavigationObserver observer(shell()->web_contents());
@@ -790,7 +784,7 @@
TestUntrustedDataSourceHeaders headers;
headers.no_xfo = false;
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-iframe-host",
headers));
GURL untrusted_url(GetChromeUntrustedUIURL("test-iframe-host/title1.html"));
@@ -981,7 +975,7 @@
IsolationContext isolation_context(browser_context);
// Add a DataSource which disallows iframes by default.
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
GURL chrome_untrusted_url(GetChromeUntrustedUIURL("test-host/title1.html"));
auto expected_site_info = SiteInfo::CreateForTesting(
diff --git a/content/browser/webui/web_ui_security_browsertest.cc b/content/browser/webui/web_ui_security_browsertest.cc
index 2024b5e..73cebdc 100644
--- a/content/browser/webui/web_ui_security_browsertest.cc
+++ b/content/browser/webui/web_ui_security_browsertest.cc
@@ -22,6 +22,7 @@
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_data_source.h"
+#include "content/public/browser/webui_config_map.h"
#include "content/public/common/bindings_policy.h"
#include "content/public/common/content_paths.h"
#include "content/public/common/content_switches.h"
@@ -51,22 +52,16 @@
WebUISecurityTest& operator=(const WebUISecurityTest&) = delete;
TestWebUIControllerFactory* factory() { return &factory_; }
- ui::TestUntrustedWebUIControllerFactory& untrusted_factory() {
- return untrusted_factory_;
- }
private:
TestWebUIControllerFactory factory_;
ScopedWebUIControllerFactoryRegistration factory_registration_{&factory_};
- ui::TestUntrustedWebUIControllerFactory untrusted_factory_;
- ScopedWebUIControllerFactoryRegistration untrusted_factory_registration_{
- &untrusted_factory_};
};
// Verify chrome-untrusted:// have no bindings.
IN_PROC_BROWSER_TEST_F(WebUISecurityTest, UntrustedNoBindings) {
auto* web_contents = shell()->web_contents();
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
const GURL untrusted_url(GetChromeUntrustedUIURL("test-host/title1.html"));
@@ -452,7 +447,7 @@
DisallowResourceRequestToChromeUntrusted) {
ASSERT_TRUE(embedded_test_server()->Start());
GURL web_url(embedded_test_server()->GetURL("/title2.html"));
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>("test-host"));
EXPECT_TRUE(NavigateToURL(shell(), web_url));
@@ -622,7 +617,7 @@
IN_PROC_BROWSER_TEST_F(WebUISecurityTest,
DisallowWebPageFetchRequestToChromeUntrusted) {
const GURL untrusted_url = GURL("chrome-untrusted://test/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url.host()));
ASSERT_TRUE(embedded_test_server()->Start());
@@ -653,7 +648,7 @@
// Verify a chrome-untrusted:// document can fetch itself.
IN_PROC_BROWSER_TEST_F(WebUISecurityTest, ChromeUntrustedFetchRequestToSelf) {
const GURL untrusted_url = GURL("chrome-untrusted://test/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url.host()));
EXPECT_TRUE(NavigateToURL(shell(), untrusted_url));
@@ -668,7 +663,7 @@
WebUISecurityTest,
DisallowCrossOriginFetchRequestToChromeUntrustedByDefault) {
const GURL untrusted_url1 = GURL("chrome-untrusted://test1/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url1.host()));
const GURL untrusted_url2 = GURL("chrome-untrusted://test2/title2.html");
@@ -714,7 +709,7 @@
TestUntrustedDataSourceHeaders headers;
headers.default_src = "default-src chrome-untrusted://test2;";
const GURL untrusted_url1 = GURL("chrome-untrusted://test1/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url1.host(),
headers));
@@ -737,7 +732,7 @@
TestUntrustedDataSourceHeaders headers;
headers.default_src = "default-src chrome://webui;";
const GURL untrusted_url = GURL("chrome-untrusted://test1/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url.host(),
headers));
@@ -792,7 +787,7 @@
IN_PROC_BROWSER_TEST_F(WebUISecurityTest,
DisallowWebPageXHRRequestToChromeUntrusted) {
const GURL untrusted_url = GURL("chrome-untrusted://test/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url.host()));
ASSERT_TRUE(embedded_test_server()->Start());
const GURL web_url = embedded_test_server()->GetURL("/title2.html");
@@ -811,7 +806,7 @@
IN_PROC_BROWSER_TEST_F(WebUISecurityTest,
AllowChromeUntrustedXHRRequestToSelf) {
const GURL untrusted_url = GURL("chrome-untrusted://test/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url.host()));
EXPECT_TRUE(NavigateToURL(shell(), untrusted_url));
@@ -825,7 +820,7 @@
WebUISecurityTest,
DisallowCrossOriginXHRRequestToChromeUntrustedByDefault) {
const GURL untrusted_url1 = GURL("chrome-untrusted://test1/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url1.host()));
const GURL untrusted_url2 = GURL("chrome-untrusted://test2/");
@@ -856,7 +851,7 @@
TestUntrustedDataSourceHeaders headers;
headers.default_src = "default-src chrome-untrusted://test2;";
const GURL untrusted_url1 = GURL("chrome-untrusted://test1/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url1.host(),
headers));
@@ -876,7 +871,7 @@
TestUntrustedDataSourceHeaders headers;
headers.default_src = "default-src chrome://webui;";
const GURL untrusted_url = GURL("chrome-untrusted://test1/title1.html");
- untrusted_factory().add_web_ui_config(
+ WebUIConfigMap::GetInstance().AddUntrustedWebUIConfig(
std::make_unique<ui::TestUntrustedWebUIConfig>(untrusted_url.host(),
headers));
diff --git a/ui/webui/untrusted_web_ui_browsertest_util.cc b/ui/webui/untrusted_web_ui_browsertest_util.cc
index 018fe45..2144eea 100644
--- a/ui/webui/untrusted_web_ui_browsertest_util.cc
+++ b/ui/webui/untrusted_web_ui_browsertest_util.cc
@@ -6,19 +6,27 @@
#include "content/public/browser/web_contents.h"
#include "content/public/common/url_constants.h"
+#include "ui/webui/untrusted_web_ui_controller.h"
namespace ui {
-TestUntrustedWebUIControllerFactory::TestUntrustedWebUIControllerFactory() =
- default;
+namespace {
-TestUntrustedWebUIControllerFactory::~TestUntrustedWebUIControllerFactory() =
- default;
+class TestUntrustedWebUIController : public ui::UntrustedWebUIController {
+ public:
+ TestUntrustedWebUIController(
+ content::WebUI* web_ui,
+ const std::string& host,
+ const content::TestUntrustedDataSourceHeaders& headers)
+ : ui::UntrustedWebUIController(web_ui) {
+ content::AddUntrustedDataSource(
+ web_ui->GetWebContents()->GetBrowserContext(), host, headers);
+ }
-const ui::UntrustedWebUIControllerFactory::WebUIConfigMap&
-TestUntrustedWebUIControllerFactory::GetWebUIConfigMap() {
- return configs_;
-}
+ ~TestUntrustedWebUIController() override = default;
+};
+
+} // namespace
TestUntrustedWebUIConfig::TestUntrustedWebUIConfig(base::StringPiece host)
: WebUIConfig(content::kChromeUIUntrustedScheme, host) {}
@@ -36,15 +44,4 @@
headers_);
}
-TestUntrustedWebUIController::TestUntrustedWebUIController(
- content::WebUI* web_ui,
- const std::string& host,
- const content::TestUntrustedDataSourceHeaders& headers)
- : ui::UntrustedWebUIController(web_ui) {
- content::AddUntrustedDataSource(web_ui->GetWebContents()->GetBrowserContext(),
- host, headers);
-}
-
-TestUntrustedWebUIController::~TestUntrustedWebUIController() = default;
-
} // namespace ui
diff --git a/ui/webui/untrusted_web_ui_browsertest_util.h b/ui/webui/untrusted_web_ui_browsertest_util.h
index 2180447..ca57a3c 100644
--- a/ui/webui/untrusted_web_ui_browsertest_util.h
+++ b/ui/webui/untrusted_web_ui_browsertest_util.h
@@ -7,29 +7,13 @@
#include "content/public/browser/webui_config.h"
#include "content/public/test/web_ui_browsertest_util.h"
-#include "ui/webui/untrusted_web_ui_controller.h"
-#include "ui/webui/untrusted_web_ui_controller_factory.h"
+
+namespace content {
+class WebUIController;
+}
namespace ui {
-class TestUntrustedWebUIControllerFactory
- : public ui::UntrustedWebUIControllerFactory {
- public:
- TestUntrustedWebUIControllerFactory();
- ~TestUntrustedWebUIControllerFactory() override;
-
- void add_web_ui_config(std::unique_ptr<content::WebUIConfig> config) {
- const std::string host = config->host();
- configs_.insert(std::make_pair(host, std::move(config)));
- }
-
- protected:
- const WebUIConfigMap& GetWebUIConfigMap() override;
-
- private:
- WebUIConfigMap configs_;
-};
-
class TestUntrustedWebUIConfig : public content::WebUIConfig {
public:
explicit TestUntrustedWebUIConfig(base::StringPiece host);
@@ -44,15 +28,6 @@
const content::TestUntrustedDataSourceHeaders headers_;
};
-class TestUntrustedWebUIController : public ui::UntrustedWebUIController {
- public:
- TestUntrustedWebUIController(
- content::WebUI* web_ui,
- const std::string& host,
- const content::TestUntrustedDataSourceHeaders& headers);
- ~TestUntrustedWebUIController() override;
-};
-
} // namespace ui
#endif // UI_WEBUI_UNTRUSTED_WEB_UI_BROWSERTEST_UTIL_H_