Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Side by Side Diff: content/browser/renderer_host/render_view_host_unittest.cc

Issue 88503002: Have the unload event execute in background on cross-site navigations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase + addressed some of Nasko's comments Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/path_service.h" 5 #include "base/path_service.h"
6 #include "base/strings/utf_string_conversions.h" 6 #include "base/strings/utf_string_conversions.h"
7 #include "content/browser/child_process_security_policy_impl.h" 7 #include "content/browser/child_process_security_policy_impl.h"
8 #include "content/browser/frame_host/render_frame_host_impl.h" 8 #include "content/browser/frame_host/render_frame_host_impl.h"
9 #include "content/common/input_messages.h" 9 #include "content/common/input_messages.h"
10 #include "content/common/view_messages.h" 10 #include "content/common/view_messages.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 ASSERT_TRUE(controller().GetVisibleEntry()); 65 ASSERT_TRUE(controller().GetVisibleEntry());
66 EXPECT_EQ(GURL(kAboutBlankURL), controller().GetVisibleEntry()->GetURL()); 66 EXPECT_EQ(GURL(kAboutBlankURL), controller().GetVisibleEntry()->GetURL());
67 } 67 }
68 68
69 // Create a full screen popup RenderWidgetHost and View. 69 // Create a full screen popup RenderWidgetHost and View.
70 TEST_F(RenderViewHostTest, CreateFullscreenWidget) { 70 TEST_F(RenderViewHostTest, CreateFullscreenWidget) {
71 int routing_id = process()->GetNextRoutingID(); 71 int routing_id = process()->GetNextRoutingID();
72 test_rvh()->CreateNewFullscreenWidget(routing_id); 72 test_rvh()->CreateNewFullscreenWidget(routing_id);
73 } 73 }
74 74
75 // Makes sure that RenderViewHost::is_waiting_for_unload_ack_ is false when 75 // Makes sure that the RenderViewHost is not waiting for an unload ack when
76 // reloading a page. If is_waiting_for_unload_ack_ is not false when reloading 76 // reloading a page. If this is not the case, when reloading, the contents may
77 // the contents may get closed out even though the user pressed the reload 77 // get closed out even though the user pressed the reload button.
78 // button.
79 TEST_F(RenderViewHostTest, ResetUnloadOnReload) { 78 TEST_F(RenderViewHostTest, ResetUnloadOnReload) {
80 const GURL url1("http://foo1"); 79 const GURL url1("http://foo1");
81 const GURL url2("http://foo2"); 80 const GURL url2("http://foo2");
82 81
83 // This test is for a subtle timing bug. Here's the sequence that triggered 82 // This test is for a subtle timing bug. Here's the sequence that triggered
84 // the bug: 83 // the bug:
85 // . go to a page. 84 // . go to a page.
86 // . go to a new page, preferably one that takes a while to resolve, such 85 // . go to a new page, preferably one that takes a while to resolve, such
87 // as one on a site that doesn't exist. 86 // as one on a site that doesn't exist.
88 // . After this step is_waiting_for_unload_ack_ has been set to true on 87 // . After this step IsWaitingForUnloadACK returns true on the first RVH.
89 // the first RVH.
90 // . click stop before the page has been commited. 88 // . click stop before the page has been commited.
91 // . click reload. 89 // . click reload.
92 // . is_waiting_for_unload_ack_ is still true, and the if the hang monitor 90 // . IsWaitingForUnloadACK still returns true, and if the hang monitor fires
93 // fires the contents gets closed. 91 // the contents gets closed.
94 92
95 NavigateAndCommit(url1); 93 NavigateAndCommit(url1);
96 controller().LoadURL( 94 controller().LoadURL(
97 url2, Referrer(), PAGE_TRANSITION_LINK, std::string()); 95 url2, Referrer(), PAGE_TRANSITION_LINK, std::string());
98 // Simulate the ClosePage call which is normally sent by the net::URLRequest. 96 // Simulate the ClosePage call which is normally sent by the net::URLRequest.
99 rvh()->ClosePage(); 97 rvh()->ClosePage();
100 // Needed so that navigations are not suspended on the RVH. 98 // Needed so that navigations are not suspended on the RVH.
101 test_rvh()->SendShouldCloseACK(true); 99 test_rvh()->SendShouldCloseACK(true);
102 contents()->Stop(); 100 contents()->Stop();
103 controller().Reload(false); 101 controller().Reload(false);
104 EXPECT_FALSE(test_rvh()->is_waiting_for_unload_ack()); 102 EXPECT_FALSE(test_rvh()->IsWaitingForUnloadACK());
105 } 103 }
106 104
107 // Ensure we do not grant bindings to a process shared with unprivileged views. 105 // Ensure we do not grant bindings to a process shared with unprivileged views.
108 TEST_F(RenderViewHostTest, DontGrantBindingsToSharedProcess) { 106 TEST_F(RenderViewHostTest, DontGrantBindingsToSharedProcess) {
109 // Create another view in the same process. 107 // Create another view in the same process.
110 scoped_ptr<TestWebContents> new_web_contents( 108 scoped_ptr<TestWebContents> new_web_contents(
111 TestWebContents::Create(browser_context(), rvh()->GetSiteInstance())); 109 TestWebContents::Create(browser_context(), rvh()->GetSiteInstance()));
112 110
113 rvh()->AllowBindings(BINDINGS_POLICY_WEB_UI); 111 rvh()->AllowBindings(BINDINGS_POLICY_WEB_UI);
114 EXPECT_FALSE(rvh()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI); 112 EXPECT_FALSE(rvh()->GetEnabledBindings() & BINDINGS_POLICY_WEB_UI);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 } 287 }
290 288
291 TEST_F(RenderViewHostTest, RoutingIdSane) { 289 TEST_F(RenderViewHostTest, RoutingIdSane) {
292 RenderFrameHostImpl* root_rfh = 290 RenderFrameHostImpl* root_rfh =
293 contents()->GetFrameTree()->root()->current_frame_host(); 291 contents()->GetFrameTree()->root()->current_frame_host();
294 EXPECT_EQ(test_rvh()->GetProcess(), root_rfh->GetProcess()); 292 EXPECT_EQ(test_rvh()->GetProcess(), root_rfh->GetProcess());
295 EXPECT_NE(test_rvh()->GetRoutingID(), root_rfh->routing_id()); 293 EXPECT_NE(test_rvh()->GetRoutingID(), root_rfh->routing_id());
296 } 294 }
297 295
298 } // namespace content 296 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698