| // Copyright 2021 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "chrome/browser/policy/url_blocking_policy_test_utils.h" | 
 |  | 
 | #include <string> | 
 |  | 
 | #include "base/strings/utf_string_conversions.h" | 
 | #include "chrome/browser/ui/browser.h" | 
 | #include "chrome/test/base/ui_test_utils.h" | 
 | #include "content/public/browser/web_contents.h" | 
 | #include "content/public/test/test_utils.h" | 
 | #include "testing/gtest/include/gtest/gtest.h" | 
 | #include "url/gurl.h" | 
 |  | 
 | using content::BrowserThread; | 
 |  | 
 | namespace policy { | 
 |  | 
 | UrlBlockingPolicyTest::UrlBlockingPolicyTest() = default; | 
 |  | 
 | UrlBlockingPolicyTest::~UrlBlockingPolicyTest() = default; | 
 |  | 
 | void UrlBlockingPolicyTest::CheckURLIsBlockedInWebContents( | 
 |     content::WebContents* web_contents, | 
 |     const GURL& url) { | 
 |   EXPECT_EQ(url, web_contents->GetLastCommittedURL()); | 
 |  | 
 |   std::u16string blocked_page_title; | 
 |   if (url.has_host()) { | 
 |     blocked_page_title = base::UTF8ToUTF16(url.host()); | 
 |   } else { | 
 |     // Local file paths show the full URL. | 
 |     blocked_page_title = base::UTF8ToUTF16(url.spec()); | 
 |   } | 
 |   EXPECT_EQ(blocked_page_title, web_contents->GetTitle()); | 
 |  | 
 |   // Verify that the expected error page is being displayed. | 
 |   bool result = false; | 
 |   EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 
 |       web_contents, | 
 |       "var textContent = document.body.textContent;" | 
 |       "var hasError = textContent.indexOf('ERR_BLOCKED_BY_ADMINISTRATOR') >= 0;" | 
 |       "domAutomationController.send(hasError);", | 
 |       &result)); | 
 |   EXPECT_TRUE(result); | 
 | } | 
 |  | 
 | void UrlBlockingPolicyTest::CheckURLIsBlocked(Browser* browser, | 
 |                                               const std::string& spec) { | 
 |   GURL url(spec); | 
 |   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser, url)); | 
 |   content::WebContents* contents = | 
 |       browser->tab_strip_model()->GetActiveWebContents(); | 
 |   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 |