123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: deepak1556 <[email protected]>
- Date: Wed, 23 Oct 2019 15:30:18 -0700
- Subject: Revert "Remove ContentRendererClient::ShouldFork."
- This reverts commit 6b068eb8ca4a3c7350bdafa22fc0cf0636ef8b74.
- diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
- index d37bd7451b4a73fc7b00e5cc1dfcb823c7a142fb..0e2800f3e5b0ee1b8e88921cbf3f18258ca51e7b 100644
- --- a/chrome/renderer/chrome_content_renderer_client.cc
- +++ b/chrome/renderer/chrome_content_renderer_client.cc
- @@ -1302,6 +1302,17 @@ bool ChromeContentRendererClient::ShouldFork(WebLocalFrame* frame,
- return true;
- #endif // BUILDFLAG(ENABLE_EXTENSIONS)
-
- + DCHECK(!frame->Parent());
- +
- + // If |url| matches one of the prerendered URLs, stop this navigation and try
- + // to swap in the prerendered page on the browser process. If the prerendered
- + // page no longer exists by the time the OpenURL IPC is handled, a normal
- + // navigation is attempted.
- + if (prerender_dispatcher_.get() &&
- + prerender_dispatcher_->IsPrerenderURL(url)) {
- + return true;
- + }
- +
- return false;
- }
-
- diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
- index 1659f93d83357337cb6e2cab668811cba3f14508..ef2aafde43347a6af188cada40c106dba8a19d31 100644
- --- a/content/renderer/render_view_browsertest.cc
- +++ b/content/renderer/render_view_browsertest.cc
- @@ -990,6 +990,73 @@ TEST_F(RenderViewImplTest, BeginNavigationForWebUI) {
- FrameHostMsg_OpenURL::ID));
- }
-
- +class AlwaysForkingRenderViewTest : public RenderViewImplTest {
- + public:
- + ContentRendererClient* CreateContentRendererClient() override {
- + return new TestContentRendererClient;
- + }
- +
- + private:
- + class TestContentRendererClient : public ContentRendererClient {
- + public:
- + bool ShouldFork(blink::WebLocalFrame* frame,
- + const GURL& url,
- + const std::string& http_method,
- + bool is_initial_navigation,
- + bool is_server_redirect) override {
- + return true;
- + }
- + };
- +};
- +
- +TEST_F(AlwaysForkingRenderViewTest, BeginNavigationDoesNotForkEmptyUrl) {
- + GURL example_url("http://example.com");
- + GURL empty_url("");
- +
- + LoadHTMLWithUrlOverride("<body></body", example_url.spec().c_str());
- + EXPECT_EQ(example_url,
- + GURL(frame()->GetWebFrame()->GetDocumentLoader()->GetUrl()));
- +
- + // Empty url should never fork.
- + blink::WebURLRequest request(empty_url);
- + request.SetMode(network::mojom::RequestMode::kNavigate);
- + request.SetRedirectMode(network::mojom::RedirectMode::kManual);
- + request.SetRequestContext(blink::mojom::RequestContextType::INTERNAL);
- + request.SetRequestorOrigin(blink::WebSecurityOrigin::Create(example_url));
- + auto navigation_info = std::make_unique<blink::WebNavigationInfo>();
- + navigation_info->url_request = request;
- + navigation_info->frame_type =
- + network::mojom::RequestContextFrameType::kTopLevel;
- + navigation_info->navigation_policy = blink::kWebNavigationPolicyCurrentTab;
- + frame()->BeginNavigation(std::move(navigation_info));
- + EXPECT_FALSE(render_thread_->sink().GetUniqueMessageMatching(
- + FrameHostMsg_OpenURL::ID));
- +}
- +
- +TEST_F(AlwaysForkingRenderViewTest, BeginNavigationDoesNotForkAboutBlank) {
- + GURL example_url("http://example.com");
- + GURL blank_url(url::kAboutBlankURL);
- +
- + LoadHTMLWithUrlOverride("<body></body", example_url.spec().c_str());
- + EXPECT_EQ(example_url,
- + GURL(frame()->GetWebFrame()->GetDocumentLoader()->GetUrl()));
- +
- + // about:blank should never fork.
- + blink::WebURLRequest request(blank_url);
- + request.SetMode(network::mojom::RequestMode::kNavigate);
- + request.SetRedirectMode(network::mojom::RedirectMode::kManual);
- + request.SetRequestContext(blink::mojom::RequestContextType::INTERNAL);
- + request.SetRequestorOrigin(blink::WebSecurityOrigin::Create(example_url));
- + auto navigation_info = std::make_unique<blink::WebNavigationInfo>();
- + navigation_info->url_request = request;
- + navigation_info->frame_type =
- + network::mojom::RequestContextFrameType::kTopLevel;
- + navigation_info->navigation_policy = blink::kWebNavigationPolicyCurrentTab;
- + frame()->BeginNavigation(std::move(navigation_info));
- + EXPECT_FALSE(render_thread_->sink().GetUniqueMessageMatching(
- + FrameHostMsg_OpenURL::ID));
- +}
- +
- // This test verifies that when device emulation is enabled, RenderFrameProxy
- // continues to receive the original ScreenInfo and not the emualted
- // ScreenInfo.
|