| Index: content/browser/browser_side_navigation_browsertest.cc
 | 
| diff --git a/content/browser/browser_side_navigation_browsertest.cc b/content/browser/browser_side_navigation_browsertest.cc
 | 
| index 96a2cb91a02bbe181ee4373ce24aa069673ebdd7..eaaff0537aff3cf2e997c97344d2a6258d9dca87 100644
 | 
| --- a/content/browser/browser_side_navigation_browsertest.cc
 | 
| +++ b/content/browser/browser_side_navigation_browsertest.cc
 | 
| @@ -11,6 +11,7 @@
 | 
|  #include "content/common/site_isolation_policy.h"
 | 
|  #include "content/public/browser/web_contents.h"
 | 
|  #include "content/public/common/content_switches.h"
 | 
| +#include "content/public/common/url_constants.h"
 | 
|  #include "content/public/test/browser_test_utils.h"
 | 
|  #include "content/public/test/content_browser_test.h"
 | 
|  #include "content/public/test/content_browser_test_utils.h"
 | 
| @@ -228,4 +229,48 @@ IN_PROC_BROWSER_TEST_F(BrowserSideNavigationBrowserTest, POSTNavigation) {
 | 
|                    ->GetHasPostData());
 | 
|  }
 | 
|  
 | 
| +// Ensure that browser side navigation can load browser initiated navigations
 | 
| +// to view-source URLs.
 | 
| +IN_PROC_BROWSER_TEST_F(BrowserSideNavigationBrowserTest,
 | 
| +                       ViewSourceNavigation_BrowserInitiated) {
 | 
| +  TestNavigationObserver observer(shell()->web_contents());
 | 
| +  GURL url(embedded_test_server()->GetURL("/title1.html"));
 | 
| +  GURL view_source_url(content::kViewSourceScheme + std::string(":") +
 | 
| +                       url.spec());
 | 
| +  NavigateToURL(shell(), view_source_url);
 | 
| +  EXPECT_EQ(url, observer.last_navigation_url());
 | 
| +  EXPECT_TRUE(observer.last_navigation_succeeded());
 | 
| +}
 | 
| +
 | 
| +// Ensure that browser side navigation blocks content initiated navigations to
 | 
| +// view-source URLs.
 | 
| +IN_PROC_BROWSER_TEST_F(BrowserSideNavigationBrowserTest,
 | 
| +                       ViewSourceNavigation_RendererInitiated) {
 | 
| +  TestNavigationObserver observer(shell()->web_contents());
 | 
| +  GURL kUrl(embedded_test_server()->GetURL("/simple_links.html"));
 | 
| +  NavigateToURL(shell(), kUrl);
 | 
| +  EXPECT_EQ(kUrl, observer.last_navigation_url());
 | 
| +  EXPECT_TRUE(observer.last_navigation_succeeded());
 | 
| +
 | 
| +  std::unique_ptr<ConsoleObserverDelegate> console_delegate(
 | 
| +      new ConsoleObserverDelegate(
 | 
| +          shell()->web_contents(),
 | 
| +          "Not allowed to load local resource: view-source:about:blank"));
 | 
| +  shell()->web_contents()->SetDelegate(console_delegate.get());
 | 
| +
 | 
| +  bool success = false;
 | 
| +  EXPECT_TRUE(ExecuteScriptAndExtractBool(
 | 
| +      shell()->web_contents(),
 | 
| +      "window.domAutomationController.send(clickViewSourceLink());", &success));
 | 
| +  EXPECT_TRUE(success);
 | 
| +  console_delegate->Wait();
 | 
| +  // Original page shouldn't navigate away.
 | 
| +  EXPECT_EQ(kUrl, shell()->web_contents()->GetURL());
 | 
| +  EXPECT_FALSE(shell()
 | 
| +                   ->web_contents()
 | 
| +                   ->GetController()
 | 
| +                   .GetLastCommittedEntry()
 | 
| +                   ->IsViewSourceMode());
 | 
| +}
 | 
| +
 | 
|  }  // namespace content
 | 
| 
 |