From: csagan5 <32685696+csagan5@users.noreply.github.com>
Date: Sun, 6 Mar 2022 11:29:27 +0100
Subject: Revert Permit blocking of view-source

This reverts commit e72fc9b64116bf259e516096fcc60b58ae8ae1b3.

License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
 .../test/url_blocklist_policy_browsertest.cc  | 78 -------------------
 .../policy/url_blocking_policy_test_utils.cc  | 11 ---
 .../policy/url_blocking_policy_test_utils.h   |  3 -
 .../policy_blocklist_navigation_throttle.cc   | 19 -----
 .../policy_blocklist_navigation_throttle.h    |  4 -
 5 files changed, 115 deletions(-)

diff --git a/chrome/browser/policy/test/url_blocklist_policy_browsertest.cc b/chrome/browser/policy/test/url_blocklist_policy_browsertest.cc
--- a/chrome/browser/policy/test/url_blocklist_policy_browsertest.cc
+++ b/chrome/browser/policy/test/url_blocklist_policy_browsertest.cc
@@ -60,14 +60,6 @@ void CheckCanOpenURL(Browser* browser, const std::string& spec) {
   EXPECT_NE(blocked_page_title, contents->GetTitle());
 }
 
-void CheckCanOpenViewSourceURL(Browser* browser, const std::string& spec) {
-  GURL view_source_url("view-source:" + spec);
-  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser, view_source_url));
-  content::WebContents* contents =
-      browser->tab_strip_model()->GetActiveWebContents();
-  EXPECT_EQ(view_source_url, contents->GetLastCommittedURL());
-}
-
 // Handler for embedded http-server, returns a small page with javascript
 // variable and a link to increment it. It's for JavascriptBlocklistable test.
 std::unique_ptr<net::test_server::HttpResponse> JSIncrementerPageHandler(
@@ -148,76 +140,6 @@ IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlocklist) {
   CheckCanOpenURL(browser(), kURLS[4]);
 }
 
-IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlocklistViewSource) {
-  // Checks that blocklisted urls are blocked when accessed by via view-source:,
-  // and that blocklisting view-source:* blocks all view-source urls.
-
-  ASSERT_TRUE(embedded_test_server()->Start());
-
-  const std::string kURL_A =
-      embedded_test_server()->GetURL("aaa.com", "/empty.html").spec();
-  const std::string kURL_B =
-      embedded_test_server()->GetURL("bbb.com", "/empty.html").spec();
-
-  // Ensure that no urls are blocked by default.
-  CheckCanOpenURL(browser(), kURL_A);
-  CheckCanOpenURL(browser(), kURL_B);
-  CheckCanOpenViewSourceURL(browser(), kURL_A);
-  CheckCanOpenViewSourceURL(browser(), kURL_B);
-
-  // Block bbb.com urls.
-  base::Value::List blocklist;
-  blocklist.Append("bbb.com");
-  PolicyMap policies;
-  policies.Set(key::kURLBlocklist, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
-               POLICY_SOURCE_CLOUD, base::Value(blocklist.Clone()), nullptr);
-  UpdateProviderPolicy(policies);
-  FlushBlocklistPolicy();
-
-  // Verify that blocking bbb.com also blocks view-source:bbb.com.
-  CheckURLIsBlocked(browser(), kURL_B);
-  CheckViewSourceURLIsBlocked(browser(), kURL_B);
-
-  // Block all view-source urls.
-  blocklist.Append("view-source:*");
-  policies.Set(key::kURLBlocklist, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
-               POLICY_SOURCE_CLOUD, base::Value(blocklist.Clone()), nullptr);
-  UpdateProviderPolicy(policies);
-  FlushBlocklistPolicy();
-
-  // Verify that blocking view-source:* blocks view-source:aaa.com but does not
-  // block http://aaa.com.
-  CheckViewSourceURLIsBlocked(browser(), kURL_A);
-  CheckCanOpenURL(browser(), kURL_A);
-}
-
-IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlocklistNonStandardScheme) {
-  // Checks that non-standard schemes can be blocklisted, and that the blocking
-  // page mentions the URL's scheme.
-  const std::string kURL = "mailto:nobody";
-
-  // Block mailto: urls.
-  base::Value::List blocklist;
-  blocklist.Append("mailto:*");
-  PolicyMap policies;
-  policies.Set(key::kURLBlocklist, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
-               POLICY_SOURCE_CLOUD, base::Value(blocklist.Clone()), nullptr);
-  UpdateProviderPolicy(policies);
-  FlushBlocklistPolicy();
-
-  // Ensure the URL is blocked.
-  CheckURLIsBlocked(browser(), kURL);
-
-  // Ensure the blocking page mentions the scheme.
-  content::WebContents* contents =
-      browser()->tab_strip_model()->GetActiveWebContents();
-  std::string result;
-  ASSERT_TRUE(content::ExecuteScriptAndExtractString(
-      contents, "domAutomationController.send(document.body.textContent);",
-      &result));
-  EXPECT_THAT(result, testing::HasSubstr("mailto"));
-}
-
 IN_PROC_BROWSER_TEST_F(UrlBlockingPolicyTest, URLBlocklistIncognito) {
   // Checks that URLs can be blocklisted, and that exceptions can be made to
   // the blocklist.
diff --git a/chrome/browser/policy/url_blocking_policy_test_utils.cc b/chrome/browser/policy/url_blocking_policy_test_utils.cc
--- a/chrome/browser/policy/url_blocking_policy_test_utils.cc
+++ b/chrome/browser/policy/url_blocking_policy_test_utils.cc
@@ -56,15 +56,4 @@ void UrlBlockingPolicyTest::CheckURLIsBlocked(Browser* browser,
   CheckURLIsBlockedInWebContents(contents, url);
 }
 
-void UrlBlockingPolicyTest::CheckViewSourceURLIsBlocked(
-    Browser* browser,
-    const std::string& spec) {
-  GURL url(spec);
-  GURL view_source_url("view-source:" + spec);
-  ASSERT_TRUE(ui_test_utils::NavigateToURL(browser, view_source_url));
-  content::WebContents* contents =
-      browser->tab_strip_model()->GetActiveWebContents();
-  CheckURLIsBlockedInWebContents(contents, url);
-}
-
 }  // namespace policy
diff --git a/chrome/browser/policy/url_blocking_policy_test_utils.h b/chrome/browser/policy/url_blocking_policy_test_utils.h
--- a/chrome/browser/policy/url_blocking_policy_test_utils.h
+++ b/chrome/browser/policy/url_blocking_policy_test_utils.h
@@ -29,9 +29,6 @@ class UrlBlockingPolicyTest : public PolicyTest {
 
   // Verifies that access to the given url |spec| is blocked.
   void CheckURLIsBlocked(Browser* browser, const std::string& spec);
-
-  // Verifies that access to |view-source:spec| is blocked.
-  void CheckViewSourceURLIsBlocked(Browser* browser, const std::string& spec);
 };
 
 }  // namespace policy
diff --git a/components/policy/content/policy_blocklist_navigation_throttle.cc b/components/policy/content/policy_blocklist_navigation_throttle.cc
--- a/components/policy/content/policy_blocklist_navigation_throttle.cc
+++ b/components/policy/content/policy_blocklist_navigation_throttle.cc
@@ -13,7 +13,6 @@
 #include "components/prefs/pref_service.h"
 #include "components/user_prefs/user_prefs.h"
 #include "content/public/browser/browser_context.h"
-#include "content/public/browser/navigation_entry.h"
 #include "content/public/browser/navigation_handle.h"
 #include "url/gurl.h"
 
@@ -41,19 +40,6 @@ PolicyBlocklistNavigationThrottle::PolicyBlocklistNavigationThrottle(
 PolicyBlocklistNavigationThrottle::~PolicyBlocklistNavigationThrottle() =
     default;
 
-bool PolicyBlocklistNavigationThrottle::IsBlockedViewSourceNavigation() {
-  content::NavigationEntry* nav_entry =
-      navigation_handle()->GetNavigationEntry();
-  if (!nav_entry || !nav_entry->IsViewSourceMode())
-    return false;
-
-  GURL view_source_url = GURL(std::string("view-source:") +
-                              navigation_handle()->GetURL().spec());
-
-  return (blocklist_service_->GetURLBlocklistState(view_source_url) ==
-          URLBlocklistState::URL_IN_BLOCKLIST);
-}
-
 content::NavigationThrottle::ThrottleCheckResult
 PolicyBlocklistNavigationThrottle::WillStartRequest() {
   const GURL& url = navigation_handle()->GetURL();
@@ -70,11 +56,6 @@ PolicyBlocklistNavigationThrottle::WillStartRequest() {
                                net::ERR_BLOCKED_BY_ADMINISTRATOR);
   }
 
-  if (IsBlockedViewSourceNavigation()) {
-    return ThrottleCheckResult(BLOCK_REQUEST,
-                               net::ERR_BLOCKED_BY_ADMINISTRATOR);
-  }
-
   if (blocklist_state == URLBlocklistState::URL_IN_ALLOWLIST)
     return PROCEED;
 
diff --git a/components/policy/content/policy_blocklist_navigation_throttle.h b/components/policy/content/policy_blocklist_navigation_throttle.h
--- a/components/policy/content/policy_blocklist_navigation_throttle.h
+++ b/components/policy/content/policy_blocklist_navigation_throttle.h
@@ -35,10 +35,6 @@ class PolicyBlocklistNavigationThrottle : public content::NavigationThrottle {
   const char* GetNameForLogging() override;
 
  private:
-  // Returns TRUE if this navigation is to view-source: and view-source is on
-  // the URLBlocklist.
-  bool IsBlockedViewSourceNavigation();
-
   // To ensure both allow and block policies override Safe Sites,
   // SafeSitesNavigationThrottle must be consulted as part of this throttle
   // rather than added separately to the list of throttles.
--
2.25.1
