Remove TestingProfile::ForceIncognito() API

Use incognito WebContents created for profile()->GetOffTheRecordProfile()
which is exactly as in production code.

Bug: 277296
Change-Id: Ia7fc636fe1d84306adcae3f8e7d6b02e6fccdc4a
Reviewed-on: https://chromium-review.googlesource.com/c/1419559
Reviewed-by: Scott Violet <[email protected]>
Commit-Queue: Alexey Baskakov <[email protected]>
Cr-Commit-Position: refs/heads/master@{#624425}
diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc
index 66fbc4b..4816246 100644
--- a/chrome/browser/extensions/extension_protocols_unittest.cc
+++ b/chrome/browser/extensions/extension_protocols_unittest.cc
@@ -184,14 +184,15 @@
 // This test lives in src/chrome instead of src/extensions because it tests
 // functionality delegated back to Chrome via ChromeExtensionsBrowserClient.
 // See chrome/browser/extensions/chrome_url_request_util.cc.
-class ExtensionProtocolsTest
+class ExtensionProtocolsTestBase
     : public testing::Test,
       public testing::WithParamInterface<RequestHandlerType> {
  public:
-  ExtensionProtocolsTest()
+  explicit ExtensionProtocolsTestBase(bool force_incognito)
       : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
         rvh_test_enabler_(new content::RenderViewHostTestEnabler()),
-        old_factory_(NULL) {}
+        old_factory_(NULL),
+        force_incognito_(force_incognito) {}
 
   void SetUp() override {
     testing::Test::SetUp();
@@ -229,7 +230,6 @@
         test_url_request_context_.set_job_factory(&job_factory_);
         break;
     }
-    testing_profile_->ForceIncognito(is_incognito);
   }
 
   GetResult RequestOrLoad(const GURL& url, ResourceType resource_type) {
@@ -287,7 +287,10 @@
     return ExtensionSystem::Get(browser_context())->info_map();
   }
 
-  content::BrowserContext* browser_context() { return testing_profile_.get(); }
+  content::BrowserContext* browser_context() {
+    return force_incognito_ ? testing_profile_->GetOffTheRecordProfile()
+                            : testing_profile_.get();
+  }
 
   void SimulateSystemSuspendForRequests() {
     power_monitor_source_ = new base::PowerMonitorTestSource();
@@ -376,6 +379,7 @@
   std::unique_ptr<TestingProfile> testing_profile_;
   net::TestDelegate test_delegate_;
   std::unique_ptr<content::WebContents> contents_;
+  const bool force_incognito_;
 
   std::unique_ptr<base::PowerMonitor> power_monitor_;
 
@@ -383,11 +387,23 @@
   base::PowerMonitorTestSource* power_monitor_source_ = nullptr;
 };
 
+class ExtensionProtocolsTest : public ExtensionProtocolsTestBase {
+ public:
+  ExtensionProtocolsTest()
+      : ExtensionProtocolsTestBase(false /*force_incognito*/) {}
+};
+
+class ExtensionProtocolsIncognitoTest : public ExtensionProtocolsTestBase {
+ public:
+  ExtensionProtocolsIncognitoTest()
+      : ExtensionProtocolsTestBase(true /*force_incognito*/) {}
+};
+
 // Tests that making a chrome-extension request in an incognito context is
 // only allowed under the right circumstances (if the extension is allowed
 // in incognito, and it's either a non-main-frame request or a split-mode
 // extension).
-TEST_P(ExtensionProtocolsTest, IncognitoRequest) {
+TEST_P(ExtensionProtocolsIncognitoTest, IncognitoRequest) {
   // Register an incognito extension protocol handler.
   SetProtocolHandler(true);
 
@@ -825,4 +841,8 @@
                         ExtensionProtocolsTest,
                         ::testing::ValuesIn(kTestModes));
 
+INSTANTIATE_TEST_CASE_P(Extensions,
+                        ExtensionProtocolsIncognitoTest,
+                        ::testing::ValuesIn(kTestModes));
+
 }  // namespace extensions