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_