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

Side by Side Diff: chrome/browser/tab_contents/web_contents_unittest.cc

Issue 8799015: Revert 113006 - Make TestTabContents::TestDidNavigate not take a ViewHostMsg_FrameNavigate_Params... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/logging.h" 5 #include "base/logging.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/dom_operation_notification_details.h"
7 #include "chrome/browser/prefs/pref_service.h" 8 #include "chrome/browser/prefs/pref_service.h"
9 #include "chrome/browser/tab_contents/chrome_interstitial_page.h"
10 #include "chrome/common/chrome_notification_types.h"
8 #include "chrome/common/pref_names.h" 11 #include "chrome/common/pref_names.h"
12 #include "chrome/common/render_messages.h"
13 #include "chrome/common/url_constants.h"
9 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 14 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
10 #include "chrome/test/base/testing_pref_service.h" 15 #include "chrome/test/base/testing_pref_service.h"
11 #include "chrome/test/base/testing_profile.h" 16 #include "chrome/test/base/testing_profile.h"
12 #include "content/browser/renderer_host/render_view_host.h" 17 #include "content/browser/renderer_host/render_view_host.h"
13 #include "content/browser/renderer_host/render_widget_host_view.h" 18 #include "content/browser/renderer_host/render_widget_host_view.h"
14 #include "content/browser/site_instance.h" 19 #include "content/browser/site_instance.h"
15 #include "content/browser/tab_contents/interstitial_page.h"
16 #include "content/browser/tab_contents/navigation_details.h" 20 #include "content/browser/tab_contents/navigation_details.h"
17 #include "content/browser/tab_contents/navigation_entry.h" 21 #include "content/browser/tab_contents/navigation_entry.h"
18 #include "content/browser/tab_contents/test_tab_contents.h" 22 #include "content/browser/tab_contents/test_tab_contents.h"
19 #include "content/common/view_messages.h" 23 #include "content/common/view_messages.h"
20 #include "content/public/browser/notification_details.h" 24 #include "content/public/browser/notification_details.h"
21 #include "content/public/browser/notification_source.h" 25 #include "content/public/browser/notification_source.h"
22 #include "content/public/browser/notification_source.h" 26 #include "content/public/browser/notification_source.h"
23 #include "content/public/common/bindings_policy.h" 27 #include "content/public/common/bindings_policy.h"
24 #include "content/public/common/content_constants.h" 28 #include "content/public/common/content_constants.h"
25 #include "content/public/common/url_constants.h"
26 #include "content/test/test_browser_thread.h" 29 #include "content/test/test_browser_thread.h"
27 #include "testing/gtest/include/gtest/gtest.h" 30 #include "testing/gtest/include/gtest/gtest.h"
28 #include "ui/base/message_box_flags.h" 31 #include "ui/base/message_box_flags.h"
29 #include "webkit/glue/webkit_glue.h" 32 #include "webkit/glue/webkit_glue.h"
30 33
31 using content::BrowserThread; 34 using content::BrowserThread;
32 using webkit_glue::PasswordForm; 35 using webkit_glue::PasswordForm;
33 36
34 class TestInterstitialPage : public InterstitialPage { 37 class TestInterstitialPage : public ChromeInterstitialPage {
35 public: 38 public:
36 enum InterstitialState { 39 enum InterstitialState {
37 UNDECIDED = 0, // No decision taken yet. 40 UNDECIDED = 0, // No decision taken yet.
38 OKED, // Proceed was called. 41 OKED, // Proceed was called.
39 CANCELED // DontProceed was called. 42 CANCELED // DontProceed was called.
40 }; 43 };
41 44
42 class Delegate { 45 class Delegate {
43 public: 46 public:
44 virtual void TestInterstitialPageDeleted( 47 virtual void TestInterstitialPageDeleted(
(...skipping 10 matching lines...) Expand all
55 // are cleared when the test finishes. 58 // are cleared when the test finishes.
56 // Not doing so will cause stack trashing if your test does not hide the 59 // Not doing so will cause stack trashing if your test does not hide the
57 // interstitial, as in such a case it will be destroyed in the test TearDown 60 // interstitial, as in such a case it will be destroyed in the test TearDown
58 // method and will dereference the |deleted| local variable which by then is 61 // method and will dereference the |deleted| local variable which by then is
59 // out of scope. 62 // out of scope.
60 TestInterstitialPage(TabContents* tab, 63 TestInterstitialPage(TabContents* tab,
61 bool new_navigation, 64 bool new_navigation,
62 const GURL& url, 65 const GURL& url,
63 InterstitialState* state, 66 InterstitialState* state,
64 bool* deleted) 67 bool* deleted)
65 : InterstitialPage(tab, new_navigation, url), 68 : ChromeInterstitialPage(tab, new_navigation, url),
66 state_(state), 69 state_(state),
67 deleted_(deleted), 70 deleted_(deleted),
68 command_received_count_(0), 71 command_received_count_(0),
69 delegate_(NULL) { 72 delegate_(NULL) {
70 *state_ = UNDECIDED; 73 *state_ = UNDECIDED;
71 *deleted_ = false; 74 *deleted_ = false;
72 } 75 }
73 76
74 virtual ~TestInterstitialPage() { 77 virtual ~TestInterstitialPage() {
75 if (deleted_) 78 if (deleted_)
(...skipping 11 matching lines...) Expand all
87 if (state_) 90 if (state_)
88 *state_ = OKED; 91 *state_ = OKED;
89 InterstitialPage::Proceed(); 92 InterstitialPage::Proceed();
90 } 93 }
91 94
92 int command_received_count() const { 95 int command_received_count() const {
93 return command_received_count_; 96 return command_received_count_;
94 } 97 }
95 98
96 void TestDomOperationResponse(const std::string& json_string) { 99 void TestDomOperationResponse(const std::string& json_string) {
97 if (enabled()) 100 DomOperationNotificationDetails details(json_string, 1);
98 CommandReceived(json_string); 101 Observe(chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
102 content::Source<RenderViewHost>(render_view_host()),
103 content::Details<DomOperationNotificationDetails>(&details));
99 } 104 }
100 105
101 void TestDidNavigate(int page_id, const GURL& url) { 106 void TestDidNavigate(int page_id, const GURL& url) {
102 ViewHostMsg_FrameNavigate_Params params; 107 ViewHostMsg_FrameNavigate_Params params;
103 InitNavigateParams(&params, page_id, url, content::PAGE_TRANSITION_TYPED); 108 InitNavigateParams(&params, page_id, url, content::PAGE_TRANSITION_TYPED);
104 DidNavigate(render_view_host(), params); 109 DidNavigate(render_view_host(), params);
105 } 110 }
106 111
107 void TestRenderViewGone(base::TerminationStatus status, int error_code) { 112 void TestRenderViewGone(base::TerminationStatus status, int error_code) {
108 RenderViewGone(render_view_host(), status, error_code); 113 RenderViewGone(render_view_host(), status, error_code);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 class TabContentsTest : public ChromeRenderViewHostTestHarness { 174 class TabContentsTest : public ChromeRenderViewHostTestHarness {
170 public: 175 public:
171 TabContentsTest() : ui_thread_(BrowserThread::UI, &message_loop_) { 176 TabContentsTest() : ui_thread_(BrowserThread::UI, &message_loop_) {
172 } 177 }
173 178
174 private: 179 private:
175 // Supply our own profile so we use the correct profile data. The test harness 180 // Supply our own profile so we use the correct profile data. The test harness
176 // is not supposed to overwrite a profile if it's already created. 181 // is not supposed to overwrite a profile if it's already created.
177 virtual void SetUp() { 182 virtual void SetUp() {
178 ChromeRenderViewHostTestHarness::SetUp(); 183 ChromeRenderViewHostTestHarness::SetUp();
179 /* 184
180 // Set some (WebKit) user preferences. 185 // Set some (WebKit) user preferences.
181 TestingPrefService* pref_services = profile()->GetTestingPrefService(); 186 TestingPrefService* pref_services = profile()->GetTestingPrefService();
182 #if defined(TOOLKIT_USES_GTK) 187 #if defined(TOOLKIT_USES_GTK)
183 pref_services->SetUserPref(prefs::kUsesSystemTheme, 188 pref_services->SetUserPref(prefs::kUsesSystemTheme,
184 Value::CreateBooleanValue(false)); 189 Value::CreateBooleanValue(false));
185 #endif 190 #endif
186 pref_services->SetUserPref(prefs::kDefaultCharset, 191 pref_services->SetUserPref(prefs::kDefaultCharset,
187 Value::CreateStringValue("utf8")); 192 Value::CreateStringValue("utf8"));
188 pref_services->SetUserPref(prefs::kWebKitDefaultFontSize, 193 pref_services->SetUserPref(prefs::kWebKitDefaultFontSize,
189 Value::CreateIntegerValue(20)); 194 Value::CreateIntegerValue(20));
190 pref_services->SetUserPref(prefs::kWebKitTextAreasAreResizable, 195 pref_services->SetUserPref(prefs::kWebKitTextAreasAreResizable,
191 Value::CreateBooleanValue(false)); 196 Value::CreateBooleanValue(false));
192 pref_services->SetUserPref(prefs::kWebKitUsesUniversalDetector, 197 pref_services->SetUserPref(prefs::kWebKitUsesUniversalDetector,
193 Value::CreateBooleanValue(true)); 198 Value::CreateBooleanValue(true));
194 pref_services->SetUserPref("webkit.webprefs.foo", 199 pref_services->SetUserPref("webkit.webprefs.foo",
195 Value::CreateStringValue("bar"));*/ 200 Value::CreateStringValue("bar"));
196 } 201 }
197 202
198 content::TestBrowserThread ui_thread_; 203 content::TestBrowserThread ui_thread_;
199 }; 204 };
200 205
201 // Test to make sure that title updates get stripped of whitespace. 206 // Test to make sure that title updates get stripped of whitespace.
202 TEST_F(TabContentsTest, UpdateTitle) { 207 TEST_F(TabContentsTest, UpdateTitle) {
203 ViewHostMsg_FrameNavigate_Params params; 208 ViewHostMsg_FrameNavigate_Params params;
204 InitNavigateParams(&params, 0, GURL(chrome::kAboutBlankURL), 209 InitNavigateParams(&params, 0, GURL(chrome::kAboutBlankURL),
205 content::PAGE_TRANSITION_TYPED); 210 content::PAGE_TRANSITION_TYPED);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 const GURL url("http://www.google.com"); 250 const GURL url("http://www.google.com");
246 controller().LoadURL( 251 controller().LoadURL(
247 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 252 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
248 EXPECT_FALSE(contents()->cross_navigation_pending()); 253 EXPECT_FALSE(contents()->cross_navigation_pending());
249 EXPECT_EQ(instance1, orig_rvh->site_instance()); 254 EXPECT_EQ(instance1, orig_rvh->site_instance());
250 // Controller's pending entry will have a NULL site instance until we assign 255 // Controller's pending entry will have a NULL site instance until we assign
251 // it in DidNavigate. 256 // it in DidNavigate.
252 EXPECT_TRUE(controller().GetActiveEntry()->site_instance() == NULL); 257 EXPECT_TRUE(controller().GetActiveEntry()->site_instance() == NULL);
253 258
254 // DidNavigate from the page 259 // DidNavigate from the page
255 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 260 ViewHostMsg_FrameNavigate_Params params;
261 InitNavigateParams(&params, 1, url, content::PAGE_TRANSITION_TYPED);
262 contents()->TestDidNavigate(orig_rvh, params);
256 EXPECT_FALSE(contents()->cross_navigation_pending()); 263 EXPECT_FALSE(contents()->cross_navigation_pending());
257 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 264 EXPECT_EQ(orig_rvh, contents()->render_view_host());
258 EXPECT_EQ(instance1, orig_rvh->site_instance()); 265 EXPECT_EQ(instance1, orig_rvh->site_instance());
259 // Controller's entry should now have the SiteInstance, or else we won't be 266 // Controller's entry should now have the SiteInstance, or else we won't be
260 // able to find it later. 267 // able to find it later.
261 EXPECT_EQ(instance1, controller().GetActiveEntry()->site_instance()); 268 EXPECT_EQ(instance1, controller().GetActiveEntry()->site_instance());
262 } 269 }
263 270
264 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars. 271 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars.
265 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) { 272 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) {
(...skipping 13 matching lines...) Expand all
279 contents()->transition_cross_site = true; 286 contents()->transition_cross_site = true;
280 TestRenderViewHost* orig_rvh = rvh(); 287 TestRenderViewHost* orig_rvh = rvh();
281 int orig_rvh_delete_count = 0; 288 int orig_rvh_delete_count = 0;
282 orig_rvh->set_delete_counter(&orig_rvh_delete_count); 289 orig_rvh->set_delete_counter(&orig_rvh_delete_count);
283 SiteInstance* instance1 = contents()->GetSiteInstance(); 290 SiteInstance* instance1 = contents()->GetSiteInstance();
284 291
285 // Navigate to URL. First URL should use first RenderViewHost. 292 // Navigate to URL. First URL should use first RenderViewHost.
286 const GURL url("http://www.google.com"); 293 const GURL url("http://www.google.com");
287 controller().LoadURL( 294 controller().LoadURL(
288 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 295 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
289 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 296 ViewHostMsg_FrameNavigate_Params params1;
297 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
298 contents()->TestDidNavigate(orig_rvh, params1);
290 299
291 EXPECT_FALSE(contents()->cross_navigation_pending()); 300 EXPECT_FALSE(contents()->cross_navigation_pending());
292 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 301 EXPECT_EQ(orig_rvh, contents()->render_view_host());
293 302
294 // Navigate to new site 303 // Navigate to new site
295 const GURL url2("http://www.yahoo.com"); 304 const GURL url2("http://www.yahoo.com");
296 controller().LoadURL( 305 controller().LoadURL(
297 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 306 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
298 EXPECT_TRUE(contents()->cross_navigation_pending()); 307 EXPECT_TRUE(contents()->cross_navigation_pending());
299 TestRenderViewHost* pending_rvh = contents()->pending_rvh(); 308 TestRenderViewHost* pending_rvh = contents()->pending_rvh();
300 int pending_rvh_delete_count = 0; 309 int pending_rvh_delete_count = 0;
301 pending_rvh->set_delete_counter(&pending_rvh_delete_count); 310 pending_rvh->set_delete_counter(&pending_rvh_delete_count);
302 311
303 // Navigations should be suspended in pending_rvh until ShouldCloseACK. 312 // Navigations should be suspended in pending_rvh until ShouldCloseACK.
304 EXPECT_TRUE(pending_rvh->are_navigations_suspended()); 313 EXPECT_TRUE(pending_rvh->are_navigations_suspended());
305 orig_rvh->SendShouldCloseACK(true); 314 orig_rvh->SendShouldCloseACK(true);
306 EXPECT_FALSE(pending_rvh->are_navigations_suspended()); 315 EXPECT_FALSE(pending_rvh->are_navigations_suspended());
307 316
308 // DidNavigate from the pending page 317 // DidNavigate from the pending page
309 contents()->TestDidNavigate( 318 ViewHostMsg_FrameNavigate_Params params2;
310 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 319 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
320 contents()->TestDidNavigate(pending_rvh, params2);
311 SiteInstance* instance2 = contents()->GetSiteInstance(); 321 SiteInstance* instance2 = contents()->GetSiteInstance();
312 322
313 EXPECT_FALSE(contents()->cross_navigation_pending()); 323 EXPECT_FALSE(contents()->cross_navigation_pending());
314 EXPECT_EQ(pending_rvh, contents()->render_view_host()); 324 EXPECT_EQ(pending_rvh, contents()->render_view_host());
315 EXPECT_NE(instance1, instance2); 325 EXPECT_NE(instance1, instance2);
316 EXPECT_TRUE(contents()->pending_rvh() == NULL); 326 EXPECT_TRUE(contents()->pending_rvh() == NULL);
317 // We keep the original RVH around, swapped out. 327 // We keep the original RVH around, swapped out.
318 EXPECT_TRUE(contents()->render_manager_for_testing()->IsSwappedOut(orig_rvh)); 328 EXPECT_TRUE(contents()->render_manager_for_testing()->IsSwappedOut(orig_rvh));
319 EXPECT_EQ(orig_rvh_delete_count, 0); 329 EXPECT_EQ(orig_rvh_delete_count, 0);
320 330
321 // Going back should switch SiteInstances again. The first SiteInstance is 331 // Going back should switch SiteInstances again. The first SiteInstance is
322 // stored in the NavigationEntry, so it should be the same as at the start. 332 // stored in the NavigationEntry, so it should be the same as at the start.
323 // We should use the same RVH as before, swapping it back in. 333 // We should use the same RVH as before, swapping it back in.
324 controller().GoBack(); 334 controller().GoBack();
325 TestRenderViewHost* goback_rvh = contents()->pending_rvh(); 335 TestRenderViewHost* goback_rvh = contents()->pending_rvh();
326 EXPECT_EQ(orig_rvh, goback_rvh); 336 EXPECT_EQ(orig_rvh, goback_rvh);
327 EXPECT_TRUE(contents()->cross_navigation_pending()); 337 EXPECT_TRUE(contents()->cross_navigation_pending());
328 338
329 // Navigations should be suspended in goback_rvh until ShouldCloseACK. 339 // Navigations should be suspended in goback_rvh until ShouldCloseACK.
330 EXPECT_TRUE(goback_rvh->are_navigations_suspended()); 340 EXPECT_TRUE(goback_rvh->are_navigations_suspended());
331 pending_rvh->SendShouldCloseACK(true); 341 pending_rvh->SendShouldCloseACK(true);
332 EXPECT_FALSE(goback_rvh->are_navigations_suspended()); 342 EXPECT_FALSE(goback_rvh->are_navigations_suspended());
333 343
334 // DidNavigate from the back action 344 // DidNavigate from the back action
335 contents()->TestDidNavigate( 345 contents()->TestDidNavigate(goback_rvh, params1);
336 goback_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
337 EXPECT_FALSE(contents()->cross_navigation_pending()); 346 EXPECT_FALSE(contents()->cross_navigation_pending());
338 EXPECT_EQ(goback_rvh, contents()->render_view_host()); 347 EXPECT_EQ(goback_rvh, contents()->render_view_host());
339 EXPECT_EQ(instance1, contents()->GetSiteInstance()); 348 EXPECT_EQ(instance1, contents()->GetSiteInstance());
340 // The pending RVH should now be swapped out, not deleted. 349 // The pending RVH should now be swapped out, not deleted.
341 EXPECT_TRUE(contents()->render_manager_for_testing()-> 350 EXPECT_TRUE(contents()->render_manager_for_testing()->
342 IsSwappedOut(pending_rvh)); 351 IsSwappedOut(pending_rvh));
343 EXPECT_EQ(pending_rvh_delete_count, 0); 352 EXPECT_EQ(pending_rvh_delete_count, 0);
344 353
345 // Close tab and ensure RVHs are deleted. 354 // Close tab and ensure RVHs are deleted.
346 DeleteContents(); 355 DeleteContents();
347 EXPECT_EQ(orig_rvh_delete_count, 1); 356 EXPECT_EQ(orig_rvh_delete_count, 1);
348 EXPECT_EQ(pending_rvh_delete_count, 1); 357 EXPECT_EQ(pending_rvh_delete_count, 1);
349 } 358 }
350 359
351 // Test that navigating across a site boundary after a crash creates a new 360 // Test that navigating across a site boundary after a crash creates a new
352 // RVH without requiring a cross-site transition (i.e., PENDING state). 361 // RVH without requiring a cross-site transition (i.e., PENDING state).
353 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) { 362 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) {
354 contents()->transition_cross_site = true; 363 contents()->transition_cross_site = true;
355 TestRenderViewHost* orig_rvh = rvh(); 364 TestRenderViewHost* orig_rvh = rvh();
356 int orig_rvh_delete_count = 0; 365 int orig_rvh_delete_count = 0;
357 orig_rvh->set_delete_counter(&orig_rvh_delete_count); 366 orig_rvh->set_delete_counter(&orig_rvh_delete_count);
358 SiteInstance* instance1 = contents()->GetSiteInstance(); 367 SiteInstance* instance1 = contents()->GetSiteInstance();
359 368
360 // Navigate to URL. First URL should use first RenderViewHost. 369 // Navigate to URL. First URL should use first RenderViewHost.
361 const GURL url("http://www.google.com"); 370 const GURL url("http://www.google.com");
362 controller().LoadURL( 371 controller().LoadURL(
363 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 372 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
364 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 373 ViewHostMsg_FrameNavigate_Params params1;
374 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
375 contents()->TestDidNavigate(orig_rvh, params1);
365 376
366 EXPECT_FALSE(contents()->cross_navigation_pending()); 377 EXPECT_FALSE(contents()->cross_navigation_pending());
367 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 378 EXPECT_EQ(orig_rvh, contents()->render_view_host());
368 379
369 // Crash the renderer. 380 // Crash the renderer.
370 orig_rvh->set_render_view_created(false); 381 orig_rvh->set_render_view_created(false);
371 382
372 // Navigate to new site. We should not go into PENDING. 383 // Navigate to new site. We should not go into PENDING.
373 const GURL url2("http://www.yahoo.com"); 384 const GURL url2("http://www.yahoo.com");
374 controller().LoadURL( 385 controller().LoadURL(
375 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 386 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
376 TestRenderViewHost* new_rvh = rvh(); 387 TestRenderViewHost* new_rvh = rvh();
377 EXPECT_FALSE(contents()->cross_navigation_pending()); 388 EXPECT_FALSE(contents()->cross_navigation_pending());
378 EXPECT_TRUE(contents()->pending_rvh() == NULL); 389 EXPECT_TRUE(contents()->pending_rvh() == NULL);
379 EXPECT_NE(orig_rvh, new_rvh); 390 EXPECT_NE(orig_rvh, new_rvh);
380 EXPECT_EQ(orig_rvh_delete_count, 1); 391 EXPECT_EQ(orig_rvh_delete_count, 1);
381 392
382 // DidNavigate from the new page 393 // DidNavigate from the new page
383 contents()->TestDidNavigate(new_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 394 ViewHostMsg_FrameNavigate_Params params2;
395 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
396 contents()->TestDidNavigate(new_rvh, params2);
384 SiteInstance* instance2 = contents()->GetSiteInstance(); 397 SiteInstance* instance2 = contents()->GetSiteInstance();
385 398
386 EXPECT_FALSE(contents()->cross_navigation_pending()); 399 EXPECT_FALSE(contents()->cross_navigation_pending());
387 EXPECT_EQ(new_rvh, rvh()); 400 EXPECT_EQ(new_rvh, rvh());
388 EXPECT_NE(instance1, instance2); 401 EXPECT_NE(instance1, instance2);
389 EXPECT_TRUE(contents()->pending_rvh() == NULL); 402 EXPECT_TRUE(contents()->pending_rvh() == NULL);
390 403
391 // Close tab and ensure RVHs are deleted. 404 // Close tab and ensure RVHs are deleted.
392 DeleteContents(); 405 DeleteContents();
393 EXPECT_EQ(orig_rvh_delete_count, 1); 406 EXPECT_EQ(orig_rvh_delete_count, 1);
394 } 407 }
395 408
396 // Test that opening a new tab in the same SiteInstance and then navigating 409 // Test that opening a new tab in the same SiteInstance and then navigating
397 // both tabs to a new site will place both tabs in a single SiteInstance. 410 // both tabs to a new site will place both tabs in a single SiteInstance.
398 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) { 411 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) {
399 contents()->transition_cross_site = true; 412 contents()->transition_cross_site = true;
400 TestRenderViewHost* orig_rvh = rvh(); 413 TestRenderViewHost* orig_rvh = rvh();
401 SiteInstance* instance1 = contents()->GetSiteInstance(); 414 SiteInstance* instance1 = contents()->GetSiteInstance();
402 415
403 // Navigate to URL. First URL should use first RenderViewHost. 416 // Navigate to URL. First URL should use first RenderViewHost.
404 const GURL url("http://www.google.com"); 417 const GURL url("http://www.google.com");
405 controller().LoadURL( 418 controller().LoadURL(
406 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 419 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
407 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 420 ViewHostMsg_FrameNavigate_Params params1;
421 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
422 contents()->TestDidNavigate(orig_rvh, params1);
408 423
409 // Open a new tab with the same SiteInstance, navigated to the same site. 424 // Open a new tab with the same SiteInstance, navigated to the same site.
410 TestTabContents contents2(profile(), instance1); 425 TestTabContents contents2(profile(), instance1);
426 params1.page_id = 2; // Need this since the site instance is the same (which
427 // is the scope of page IDs) and we want to consider
428 // this a new page.
411 contents2.transition_cross_site = true; 429 contents2.transition_cross_site = true;
412 contents2.controller().LoadURL(url, content::Referrer(), 430 contents2.controller().LoadURL(url, content::Referrer(),
413 content::PAGE_TRANSITION_TYPED, 431 content::PAGE_TRANSITION_TYPED,
414 std::string()); 432 std::string());
415 // Need this page id to be 2 since the site instance is the same (which is the 433 contents2.TestDidNavigate(contents2.render_view_host(), params1);
416 // scope of page IDs) and we want to consider this a new page.
417 contents2.TestDidNavigate(
418 contents2.render_view_host(), 2, url, content::PAGE_TRANSITION_TYPED);
419 434
420 // Navigate first tab to a new site 435 // Navigate first tab to a new site
421 const GURL url2a("http://www.yahoo.com"); 436 const GURL url2a("http://www.yahoo.com");
422 controller().LoadURL( 437 controller().LoadURL(
423 url2a, content::Referrer(), content::PAGE_TRANSITION_TYPED, 438 url2a, content::Referrer(), content::PAGE_TRANSITION_TYPED,
424 std::string()); 439 std::string());
425 orig_rvh->SendShouldCloseACK(true); 440 orig_rvh->SendShouldCloseACK(true);
426 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh(); 441 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh();
427 contents()->TestDidNavigate( 442 ViewHostMsg_FrameNavigate_Params params2a;
428 pending_rvh_a, 1, url2a, content::PAGE_TRANSITION_TYPED); 443 InitNavigateParams(&params2a, 1, url2a, content::PAGE_TRANSITION_TYPED);
444 contents()->TestDidNavigate(pending_rvh_a, params2a);
429 SiteInstance* instance2a = contents()->GetSiteInstance(); 445 SiteInstance* instance2a = contents()->GetSiteInstance();
430 EXPECT_NE(instance1, instance2a); 446 EXPECT_NE(instance1, instance2a);
431 447
432 // Navigate second tab to the same site as the first tab 448 // Navigate second tab to the same site as the first tab
433 const GURL url2b("http://mail.yahoo.com"); 449 const GURL url2b("http://mail.yahoo.com");
434 contents2.controller().LoadURL(url2b, content::Referrer(), 450 contents2.controller().LoadURL(url2b, content::Referrer(),
435 content::PAGE_TRANSITION_TYPED, 451 content::PAGE_TRANSITION_TYPED,
436 std::string()); 452 std::string());
437 TestRenderViewHost* rvh2 = 453 TestRenderViewHost* rvh2 =
438 static_cast<TestRenderViewHost*>(contents2.render_view_host()); 454 static_cast<TestRenderViewHost*>(contents2.render_view_host());
439 rvh2->SendShouldCloseACK(true); 455 rvh2->SendShouldCloseACK(true);
440 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh(); 456 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh();
441 EXPECT_TRUE(pending_rvh_b != NULL); 457 EXPECT_TRUE(pending_rvh_b != NULL);
442 EXPECT_TRUE(contents2.cross_navigation_pending()); 458 EXPECT_TRUE(contents2.cross_navigation_pending());
443 459
444 // NOTE(creis): We used to be in danger of showing a sad tab page here if the 460 // NOTE(creis): We used to be in danger of showing a sad tab page here if the
445 // second tab hadn't navigated somewhere first (bug 1145430). That case is 461 // second tab hadn't navigated somewhere first (bug 1145430). That case is
446 // now covered by the CrossSiteBoundariesAfterCrash test. 462 // now covered by the CrossSiteBoundariesAfterCrash test.
447 contents2.TestDidNavigate( 463
448 pending_rvh_b, 2, url2b, content::PAGE_TRANSITION_TYPED); 464 ViewHostMsg_FrameNavigate_Params params2b;
465 InitNavigateParams(&params2b, 2, url2b, content::PAGE_TRANSITION_TYPED);
466 contents2.TestDidNavigate(pending_rvh_b, params2b);
449 SiteInstance* instance2b = contents2.GetSiteInstance(); 467 SiteInstance* instance2b = contents2.GetSiteInstance();
450 EXPECT_NE(instance1, instance2b); 468 EXPECT_NE(instance1, instance2b);
451 469
452 // Both tabs should now be in the same SiteInstance. 470 // Both tabs should now be in the same SiteInstance.
453 EXPECT_EQ(instance2a, instance2b); 471 EXPECT_EQ(instance2a, instance2b);
454 } 472 }
455 473
456 // Tests that TabContents uses the current URL, not the SiteInstance's site, to 474 // Tests that TabContents uses the current URL, not the SiteInstance's site, to
457 // determine whether a navigation is cross-site. 475 // determine whether a navigation is cross-site.
458 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) { 476 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) {
459 contents()->transition_cross_site = true; 477 contents()->transition_cross_site = true;
460 TestRenderViewHost* orig_rvh = rvh(); 478 TestRenderViewHost* orig_rvh = rvh();
461 SiteInstance* instance1 = contents()->GetSiteInstance(); 479 SiteInstance* instance1 = contents()->GetSiteInstance();
462 480
463 // Navigate to URL. 481 // Navigate to URL.
464 const GURL url("http://www.google.com"); 482 const GURL url("http://www.google.com");
465 controller().LoadURL( 483 controller().LoadURL(
466 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 484 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
467 contents()->TestDidNavigate( 485 ViewHostMsg_FrameNavigate_Params params1;
468 orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 486 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
487 contents()->TestDidNavigate(orig_rvh, params1);
469 488
470 // Open a related tab to a second site. 489 // Open a related tab to a second site.
471 TestTabContents contents2(profile(), instance1); 490 TestTabContents contents2(profile(), instance1);
472 contents2.transition_cross_site = true; 491 contents2.transition_cross_site = true;
473 const GURL url2("http://www.yahoo.com"); 492 const GURL url2("http://www.yahoo.com");
474 contents2.controller().LoadURL(url2, content::Referrer(), 493 contents2.controller().LoadURL(url2, content::Referrer(),
475 content::PAGE_TRANSITION_TYPED, 494 content::PAGE_TRANSITION_TYPED,
476 std::string()); 495 std::string());
477 // The first RVH in contents2 isn't live yet, so we shortcut the cross site 496 // The first RVH in contents2 isn't live yet, so we shortcut the cross site
478 // pending. 497 // pending.
479 TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>( 498 TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>(
480 contents2.render_view_host()); 499 contents2.render_view_host());
481 EXPECT_FALSE(contents2.cross_navigation_pending()); 500 EXPECT_FALSE(contents2.cross_navigation_pending());
482 contents2.TestDidNavigate(rvh2, 2, url2, content::PAGE_TRANSITION_TYPED); 501 ViewHostMsg_FrameNavigate_Params params2;
502 InitNavigateParams(&params2, 2, url2, content::PAGE_TRANSITION_TYPED);
503 contents2.TestDidNavigate(rvh2, params2);
483 SiteInstance* instance2 = contents2.GetSiteInstance(); 504 SiteInstance* instance2 = contents2.GetSiteInstance();
484 EXPECT_NE(instance1, instance2); 505 EXPECT_NE(instance1, instance2);
485 EXPECT_FALSE(contents2.cross_navigation_pending()); 506 EXPECT_FALSE(contents2.cross_navigation_pending());
486 507
487 // Simulate a link click in first tab to second site. Doesn't switch 508 // Simulate a link click in first tab to second site. Doesn't switch
488 // SiteInstances, because we don't intercept WebKit navigations. 509 // SiteInstances, because we don't intercept WebKit navigations.
489 contents()->TestDidNavigate( 510 ViewHostMsg_FrameNavigate_Params params3;
490 orig_rvh, 2, url2, content::PAGE_TRANSITION_TYPED); 511 InitNavigateParams(&params3, 2, url2, content::PAGE_TRANSITION_TYPED);
512 contents()->TestDidNavigate(orig_rvh, params3);
491 SiteInstance* instance3 = contents()->GetSiteInstance(); 513 SiteInstance* instance3 = contents()->GetSiteInstance();
492 EXPECT_EQ(instance1, instance3); 514 EXPECT_EQ(instance1, instance3);
493 EXPECT_FALSE(contents()->cross_navigation_pending()); 515 EXPECT_FALSE(contents()->cross_navigation_pending());
494 516
495 // Navigate to the new site. Doesn't switch SiteInstancees, because we 517 // Navigate to the new site. Doesn't switch SiteInstancees, because we
496 // compare against the current URL, not the SiteInstance's site. 518 // compare against the current URL, not the SiteInstance's site.
497 const GURL url3("http://mail.yahoo.com"); 519 const GURL url3("http://mail.yahoo.com");
498 controller().LoadURL( 520 controller().LoadURL(
499 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 521 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
500 EXPECT_FALSE(contents()->cross_navigation_pending()); 522 EXPECT_FALSE(contents()->cross_navigation_pending());
501 contents()->TestDidNavigate( 523 ViewHostMsg_FrameNavigate_Params params4;
502 orig_rvh, 3, url3, content::PAGE_TRANSITION_TYPED); 524 InitNavigateParams(&params4, 3, url3, content::PAGE_TRANSITION_TYPED);
525 contents()->TestDidNavigate(orig_rvh, params4);
503 SiteInstance* instance4 = contents()->GetSiteInstance(); 526 SiteInstance* instance4 = contents()->GetSiteInstance();
504 EXPECT_EQ(instance1, instance4); 527 EXPECT_EQ(instance1, instance4);
505 } 528 }
506 529
507 // Test that the onbeforeunload and onunload handlers run when navigating 530 // Test that the onbeforeunload and onunload handlers run when navigating
508 // across site boundaries. 531 // across site boundaries.
509 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) { 532 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) {
510 contents()->transition_cross_site = true; 533 contents()->transition_cross_site = true;
511 TestRenderViewHost* orig_rvh = rvh(); 534 TestRenderViewHost* orig_rvh = rvh();
512 SiteInstance* instance1 = contents()->GetSiteInstance(); 535 SiteInstance* instance1 = contents()->GetSiteInstance();
513 536
514 // Navigate to URL. First URL should use first RenderViewHost. 537 // Navigate to URL. First URL should use first RenderViewHost.
515 const GURL url("http://www.google.com"); 538 const GURL url("http://www.google.com");
516 controller().LoadURL( 539 controller().LoadURL(
517 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 540 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
518 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 541 ViewHostMsg_FrameNavigate_Params params1;
542 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
543 contents()->TestDidNavigate(orig_rvh, params1);
519 EXPECT_FALSE(contents()->cross_navigation_pending()); 544 EXPECT_FALSE(contents()->cross_navigation_pending());
520 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 545 EXPECT_EQ(orig_rvh, contents()->render_view_host());
521 546
522 // Navigate to new site, but simulate an onbeforeunload denial. 547 // Navigate to new site, but simulate an onbeforeunload denial.
523 const GURL url2("http://www.yahoo.com"); 548 const GURL url2("http://www.yahoo.com");
524 controller().LoadURL( 549 controller().LoadURL(
525 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 550 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
526 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 551 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
527 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false)); 552 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false));
528 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 553 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
529 EXPECT_FALSE(contents()->cross_navigation_pending()); 554 EXPECT_FALSE(contents()->cross_navigation_pending());
530 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 555 EXPECT_EQ(orig_rvh, contents()->render_view_host());
531 556
532 // Navigate again, but simulate an onbeforeunload approval. 557 // Navigate again, but simulate an onbeforeunload approval.
533 controller().LoadURL( 558 controller().LoadURL(
534 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 559 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
535 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 560 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
536 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 561 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
537 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 562 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
538 EXPECT_TRUE(contents()->cross_navigation_pending()); 563 EXPECT_TRUE(contents()->cross_navigation_pending());
539 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( 564 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
540 contents()->pending_rvh()); 565 contents()->pending_rvh());
541 566
542 // We won't hear DidNavigate until the onunload handler has finished running. 567 // We won't hear DidNavigate until the onunload handler has finished running.
543 // (No way to simulate that here, but it involves a call from RDH to 568 // (No way to simulate that here, but it involves a call from RDH to
544 // TabContents::OnCrossSiteResponse.) 569 // TabContents::OnCrossSiteResponse.)
545 570
546 // DidNavigate from the pending page 571 // DidNavigate from the pending page
547 contents()->TestDidNavigate( 572 ViewHostMsg_FrameNavigate_Params params2;
548 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 573 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
574 contents()->TestDidNavigate(pending_rvh, params2);
549 SiteInstance* instance2 = contents()->GetSiteInstance(); 575 SiteInstance* instance2 = contents()->GetSiteInstance();
550 EXPECT_FALSE(contents()->cross_navigation_pending()); 576 EXPECT_FALSE(contents()->cross_navigation_pending());
551 EXPECT_EQ(pending_rvh, rvh()); 577 EXPECT_EQ(pending_rvh, rvh());
552 EXPECT_NE(instance1, instance2); 578 EXPECT_NE(instance1, instance2);
553 EXPECT_TRUE(contents()->pending_rvh() == NULL); 579 EXPECT_TRUE(contents()->pending_rvh() == NULL);
554 } 580 }
555 581
556 // Test that during a slow cross-site navigation, the original renderer can 582 // Test that during a slow cross-site navigation, the original renderer can
557 // navigate to a different URL and have it displayed, canceling the slow 583 // navigate to a different URL and have it displayed, canceling the slow
558 // navigation. 584 // navigation.
559 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) { 585 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) {
560 contents()->transition_cross_site = true; 586 contents()->transition_cross_site = true;
561 TestRenderViewHost* orig_rvh = rvh(); 587 TestRenderViewHost* orig_rvh = rvh();
562 SiteInstance* instance1 = contents()->GetSiteInstance(); 588 SiteInstance* instance1 = contents()->GetSiteInstance();
563 589
564 // Navigate to URL. First URL should use first RenderViewHost. 590 // Navigate to URL. First URL should use first RenderViewHost.
565 const GURL url("http://www.google.com"); 591 const GURL url("http://www.google.com");
566 controller().LoadURL( 592 controller().LoadURL(
567 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 593 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
568 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 594 ViewHostMsg_FrameNavigate_Params params1;
595 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
596 contents()->TestDidNavigate(orig_rvh, params1);
569 EXPECT_FALSE(contents()->cross_navigation_pending()); 597 EXPECT_FALSE(contents()->cross_navigation_pending());
570 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 598 EXPECT_EQ(orig_rvh, contents()->render_view_host());
571 599
572 // Navigate to new site, simulating an onbeforeunload approval. 600 // Navigate to new site, simulating an onbeforeunload approval.
573 const GURL url2("http://www.yahoo.com"); 601 const GURL url2("http://www.yahoo.com");
574 controller().LoadURL( 602 controller().LoadURL(
575 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 603 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
576 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 604 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
577 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 605 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
578 EXPECT_TRUE(contents()->cross_navigation_pending()); 606 EXPECT_TRUE(contents()->cross_navigation_pending());
(...skipping 11 matching lines...) Expand all
590 } 618 }
591 619
592 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) { 620 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) {
593 contents()->transition_cross_site = true; 621 contents()->transition_cross_site = true;
594 622
595 // Start with NTP, which gets a new RVH with WebUI bindings. 623 // Start with NTP, which gets a new RVH with WebUI bindings.
596 const GURL url1("chrome://newtab"); 624 const GURL url1("chrome://newtab");
597 controller().LoadURL( 625 controller().LoadURL(
598 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 626 url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
599 TestRenderViewHost* ntp_rvh = rvh(); 627 TestRenderViewHost* ntp_rvh = rvh();
600 contents()->TestDidNavigate(ntp_rvh, 1, url1, content::PAGE_TRANSITION_TYPED); 628 ViewHostMsg_FrameNavigate_Params params1;
629 InitNavigateParams(&params1, 1, url1, content::PAGE_TRANSITION_TYPED);
630 contents()->TestDidNavigate(ntp_rvh, params1);
601 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); 631 NavigationEntry* entry1 = controller().GetLastCommittedEntry();
602 SiteInstance* instance1 = contents()->GetSiteInstance(); 632 SiteInstance* instance1 = contents()->GetSiteInstance();
603 633
604 EXPECT_FALSE(contents()->cross_navigation_pending()); 634 EXPECT_FALSE(contents()->cross_navigation_pending());
605 EXPECT_EQ(ntp_rvh, contents()->render_view_host()); 635 EXPECT_EQ(ntp_rvh, contents()->render_view_host());
606 EXPECT_EQ(url1, entry1->url()); 636 EXPECT_EQ(url1, entry1->url());
607 EXPECT_EQ(instance1, entry1->site_instance()); 637 EXPECT_EQ(instance1, entry1->site_instance());
608 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI); 638 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI);
609 639
610 // Navigate to new site. 640 // Navigate to new site.
611 const GURL url2("http://www.google.com"); 641 const GURL url2("http://www.google.com");
612 controller().LoadURL( 642 controller().LoadURL(
613 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 643 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
614 EXPECT_TRUE(contents()->cross_navigation_pending()); 644 EXPECT_TRUE(contents()->cross_navigation_pending());
615 TestRenderViewHost* google_rvh = contents()->pending_rvh(); 645 TestRenderViewHost* google_rvh = contents()->pending_rvh();
616 646
617 // Simulate beforeunload approval. 647 // Simulate beforeunload approval.
618 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack()); 648 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack());
619 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 649 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
620 650
621 // DidNavigate from the pending page. 651 // DidNavigate from the pending page.
622 contents()->TestDidNavigate( 652 ViewHostMsg_FrameNavigate_Params params2;
623 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 653 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
654 contents()->TestDidNavigate(google_rvh, params2);
624 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); 655 NavigationEntry* entry2 = controller().GetLastCommittedEntry();
625 SiteInstance* instance2 = contents()->GetSiteInstance(); 656 SiteInstance* instance2 = contents()->GetSiteInstance();
626 657
627 EXPECT_FALSE(contents()->cross_navigation_pending()); 658 EXPECT_FALSE(contents()->cross_navigation_pending());
628 EXPECT_EQ(google_rvh, contents()->render_view_host()); 659 EXPECT_EQ(google_rvh, contents()->render_view_host());
629 EXPECT_NE(instance1, instance2); 660 EXPECT_NE(instance1, instance2);
630 EXPECT_FALSE(contents()->pending_rvh()); 661 EXPECT_FALSE(contents()->pending_rvh());
631 EXPECT_EQ(url2, entry2->url()); 662 EXPECT_EQ(url2, entry2->url());
632 EXPECT_EQ(instance2, entry2->site_instance()); 663 EXPECT_EQ(instance2, entry2->site_instance());
633 EXPECT_FALSE(google_rvh->enabled_bindings() & 664 EXPECT_FALSE(google_rvh->enabled_bindings() &
634 content::BINDINGS_POLICY_WEB_UI); 665 content::BINDINGS_POLICY_WEB_UI);
635 666
636 // Navigate to third page on same site. 667 // Navigate to third page on same site.
637 const GURL url3("http://news.google.com"); 668 const GURL url3("http://news.google.com");
638 controller().LoadURL( 669 controller().LoadURL(
639 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 670 url3, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
640 EXPECT_FALSE(contents()->cross_navigation_pending()); 671 EXPECT_FALSE(contents()->cross_navigation_pending());
641 contents()->TestDidNavigate( 672 ViewHostMsg_FrameNavigate_Params params3;
642 google_rvh, 2, url3, content::PAGE_TRANSITION_TYPED); 673 InitNavigateParams(&params3, 2, url3, content::PAGE_TRANSITION_TYPED);
674 contents()->TestDidNavigate(google_rvh, params3);
643 NavigationEntry* entry3 = controller().GetLastCommittedEntry(); 675 NavigationEntry* entry3 = controller().GetLastCommittedEntry();
644 SiteInstance* instance3 = contents()->GetSiteInstance(); 676 SiteInstance* instance3 = contents()->GetSiteInstance();
645 677
646 EXPECT_FALSE(contents()->cross_navigation_pending()); 678 EXPECT_FALSE(contents()->cross_navigation_pending());
647 EXPECT_EQ(google_rvh, contents()->render_view_host()); 679 EXPECT_EQ(google_rvh, contents()->render_view_host());
648 EXPECT_EQ(instance2, instance3); 680 EXPECT_EQ(instance2, instance3);
649 EXPECT_FALSE(contents()->pending_rvh()); 681 EXPECT_FALSE(contents()->pending_rvh());
650 EXPECT_EQ(url3, entry3->url()); 682 EXPECT_EQ(url3, entry3->url());
651 EXPECT_EQ(instance3, entry3->site_instance()); 683 EXPECT_EQ(instance3, entry3->site_instance());
652 684
653 // Go back within the site. 685 // Go back within the site.
654 controller().GoBack(); 686 controller().GoBack();
655 EXPECT_FALSE(contents()->cross_navigation_pending()); 687 EXPECT_FALSE(contents()->cross_navigation_pending());
656 EXPECT_EQ(entry2, controller().pending_entry()); 688 EXPECT_EQ(entry2, controller().pending_entry());
657 689
658 // Before that commits, go back again. 690 // Before that commits, go back again.
659 controller().GoBack(); 691 controller().GoBack();
660 EXPECT_TRUE(contents()->cross_navigation_pending()); 692 EXPECT_TRUE(contents()->cross_navigation_pending());
661 EXPECT_TRUE(contents()->pending_rvh()); 693 EXPECT_TRUE(contents()->pending_rvh());
662 EXPECT_EQ(entry1, controller().pending_entry()); 694 EXPECT_EQ(entry1, controller().pending_entry());
663 695
664 // Simulate beforeunload approval. 696 // Simulate beforeunload approval.
665 EXPECT_TRUE(google_rvh->is_waiting_for_beforeunload_ack()); 697 EXPECT_TRUE(google_rvh->is_waiting_for_beforeunload_ack());
666 google_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 698 google_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
667 699
668 // DidNavigate from the first back. This aborts the second back's pending RVH. 700 // DidNavigate from the first back. This aborts the second back's pending RVH.
669 contents()->TestDidNavigate( 701 contents()->TestDidNavigate(google_rvh, params2);
670 google_rvh, 1, url2, content::PAGE_TRANSITION_TYPED);
671 702
672 // We should commit this page and forget about the second back. 703 // We should commit this page and forget about the second back.
673 EXPECT_FALSE(contents()->cross_navigation_pending()); 704 EXPECT_FALSE(contents()->cross_navigation_pending());
674 EXPECT_FALSE(controller().pending_entry()); 705 EXPECT_FALSE(controller().pending_entry());
675 EXPECT_EQ(google_rvh, contents()->render_view_host()); 706 EXPECT_EQ(google_rvh, contents()->render_view_host());
676 EXPECT_EQ(url2, controller().GetLastCommittedEntry()->url()); 707 EXPECT_EQ(url2, controller().GetLastCommittedEntry()->url());
677 708
678 // We should not have corrupted the NTP entry. 709 // We should not have corrupted the NTP entry.
679 EXPECT_EQ(instance3, entry3->site_instance()); 710 EXPECT_EQ(instance3, entry3->site_instance());
680 EXPECT_EQ(instance2, entry2->site_instance()); 711 EXPECT_EQ(instance2, entry2->site_instance());
681 EXPECT_EQ(instance1, entry1->site_instance()); 712 EXPECT_EQ(instance1, entry1->site_instance());
682 EXPECT_EQ(url1, entry1->url()); 713 EXPECT_EQ(url1, entry1->url());
683 } 714 }
684 715
685 // Test that during a slow cross-site navigation, a sub-frame navigation in the 716 // Test that during a slow cross-site navigation, a sub-frame navigation in the
686 // original renderer will not cancel the slow navigation (bug 42029). 717 // original renderer will not cancel the slow navigation (bug 42029).
687 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) { 718 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) {
688 contents()->transition_cross_site = true; 719 contents()->transition_cross_site = true;
689 TestRenderViewHost* orig_rvh = rvh(); 720 TestRenderViewHost* orig_rvh = rvh();
690 721
691 // Navigate to URL. First URL should use first RenderViewHost. 722 // Navigate to URL. First URL should use first RenderViewHost.
692 const GURL url("http://www.google.com"); 723 const GURL url("http://www.google.com");
693 controller().LoadURL( 724 controller().LoadURL(
694 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 725 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
695 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 726 ViewHostMsg_FrameNavigate_Params params1;
727 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
728 contents()->TestDidNavigate(orig_rvh, params1);
696 EXPECT_FALSE(contents()->cross_navigation_pending()); 729 EXPECT_FALSE(contents()->cross_navigation_pending());
697 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 730 EXPECT_EQ(orig_rvh, contents()->render_view_host());
698 731
699 // Start navigating to new site. 732 // Start navigating to new site.
700 const GURL url2("http://www.yahoo.com"); 733 const GURL url2("http://www.yahoo.com");
701 controller().LoadURL( 734 controller().LoadURL(
702 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 735 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
703 736
704 // Simulate a sub-frame navigation arriving and ensure the RVH is still 737 // Simulate a sub-frame navigation arriving and ensure the RVH is still
705 // waiting for a before unload response. 738 // waiting for a before unload response.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 771
739 // Suppose the first navigation tries to commit now, with a 772 // Suppose the first navigation tries to commit now, with a
740 // ViewMsg_Stop in flight. This should not cancel the pending navigation, 773 // ViewMsg_Stop in flight. This should not cancel the pending navigation,
741 // but it should act as if the beforeunload ack arrived. 774 // but it should act as if the beforeunload ack arrived.
742 orig_rvh->SendNavigate(1, GURL("chrome://newtab")); 775 orig_rvh->SendNavigate(1, GURL("chrome://newtab"));
743 EXPECT_TRUE(contents()->cross_navigation_pending()); 776 EXPECT_TRUE(contents()->cross_navigation_pending());
744 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 777 EXPECT_EQ(orig_rvh, contents()->render_view_host());
745 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 778 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
746 779
747 // The pending navigation should be able to commit successfully. 780 // The pending navigation should be able to commit successfully.
748 contents()->TestDidNavigate( 781 ViewHostMsg_FrameNavigate_Params params2;
749 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 782 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
783 contents()->TestDidNavigate(pending_rvh, params2);
750 EXPECT_FALSE(contents()->cross_navigation_pending()); 784 EXPECT_FALSE(contents()->cross_navigation_pending());
751 EXPECT_EQ(pending_rvh, contents()->render_view_host()); 785 EXPECT_EQ(pending_rvh, contents()->render_view_host());
752 } 786 }
753 787
754 // Test that the original renderer cannot preempt a cross-site navigation once 788 // Test that the original renderer cannot preempt a cross-site navigation once
755 // the unload request has been made. At this point, the cross-site navigation 789 // the unload request has been made. At this point, the cross-site navigation
756 // is almost ready to be displayed, and the original renderer is only given a 790 // is almost ready to be displayed, and the original renderer is only given a
757 // short chance to run an unload handler. Prevents regression of bug 23942. 791 // short chance to run an unload handler. Prevents regression of bug 23942.
758 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) { 792 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) {
759 contents()->transition_cross_site = true; 793 contents()->transition_cross_site = true;
760 TestRenderViewHost* orig_rvh = rvh(); 794 TestRenderViewHost* orig_rvh = rvh();
761 SiteInstance* instance1 = contents()->GetSiteInstance(); 795 SiteInstance* instance1 = contents()->GetSiteInstance();
762 796
763 // Navigate to URL. First URL should use first RenderViewHost. 797 // Navigate to URL. First URL should use first RenderViewHost.
764 const GURL url("http://www.google.com"); 798 const GURL url("http://www.google.com");
765 controller().LoadURL( 799 controller().LoadURL(
766 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 800 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
767 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 801 ViewHostMsg_FrameNavigate_Params params1;
802 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
803 contents()->TestDidNavigate(orig_rvh, params1);
768 EXPECT_FALSE(contents()->cross_navigation_pending()); 804 EXPECT_FALSE(contents()->cross_navigation_pending());
769 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 805 EXPECT_EQ(orig_rvh, contents()->render_view_host());
770 806
771 // Navigate to new site, simulating an onbeforeunload approval. 807 // Navigate to new site, simulating an onbeforeunload approval.
772 const GURL url2("http://www.yahoo.com"); 808 const GURL url2("http://www.yahoo.com");
773 controller().LoadURL( 809 controller().LoadURL(
774 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 810 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
775 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 811 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
776 EXPECT_TRUE(contents()->cross_navigation_pending()); 812 EXPECT_TRUE(contents()->cross_navigation_pending());
777 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( 813 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
(...skipping 10 matching lines...) Expand all
788 ViewHostMsg_FrameNavigate_Params params1a; 824 ViewHostMsg_FrameNavigate_Params params1a;
789 InitNavigateParams(&params1a, 2, GURL("http://www.google.com/foo"), 825 InitNavigateParams(&params1a, 2, GURL("http://www.google.com/foo"),
790 content::PAGE_TRANSITION_TYPED); 826 content::PAGE_TRANSITION_TYPED);
791 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo")); 827 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo"));
792 828
793 // Verify that the pending navigation is still in progress. 829 // Verify that the pending navigation is still in progress.
794 EXPECT_TRUE(contents()->cross_navigation_pending()); 830 EXPECT_TRUE(contents()->cross_navigation_pending());
795 EXPECT_TRUE(contents()->pending_rvh() != NULL); 831 EXPECT_TRUE(contents()->pending_rvh() != NULL);
796 832
797 // DidNavigate from the pending page should commit it. 833 // DidNavigate from the pending page should commit it.
798 contents()->TestDidNavigate( 834 ViewHostMsg_FrameNavigate_Params params2;
799 pending_rvh, 1, url2, content::PAGE_TRANSITION_TYPED); 835 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
836 contents()->TestDidNavigate(pending_rvh, params2);
800 SiteInstance* instance2 = contents()->GetSiteInstance(); 837 SiteInstance* instance2 = contents()->GetSiteInstance();
801 EXPECT_FALSE(contents()->cross_navigation_pending()); 838 EXPECT_FALSE(contents()->cross_navigation_pending());
802 EXPECT_EQ(pending_rvh, rvh()); 839 EXPECT_EQ(pending_rvh, rvh());
803 EXPECT_NE(instance1, instance2); 840 EXPECT_NE(instance1, instance2);
804 EXPECT_TRUE(contents()->pending_rvh() == NULL); 841 EXPECT_TRUE(contents()->pending_rvh() == NULL);
805 } 842 }
806 843
807 // Test that a cross-site navigation that doesn't commit after the unload 844 // Test that a cross-site navigation that doesn't commit after the unload
808 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562. 845 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562.
809 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) { 846 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) {
810 contents()->transition_cross_site = true; 847 contents()->transition_cross_site = true;
811 TestRenderViewHost* orig_rvh = rvh(); 848 TestRenderViewHost* orig_rvh = rvh();
812 SiteInstance* instance1 = contents()->GetSiteInstance(); 849 SiteInstance* instance1 = contents()->GetSiteInstance();
813 850
814 // Navigate to URL. First URL should use first RenderViewHost. 851 // Navigate to URL. First URL should use first RenderViewHost.
815 const GURL url("http://www.google.com"); 852 const GURL url("http://www.google.com");
816 controller().LoadURL( 853 controller().LoadURL(
817 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 854 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
818 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 855 ViewHostMsg_FrameNavigate_Params params1;
856 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
857 contents()->TestDidNavigate(orig_rvh, params1);
819 EXPECT_FALSE(contents()->cross_navigation_pending()); 858 EXPECT_FALSE(contents()->cross_navigation_pending());
820 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 859 EXPECT_EQ(orig_rvh, contents()->render_view_host());
821 860
822 // Navigate to new site, simulating an onbeforeunload approval. 861 // Navigate to new site, simulating an onbeforeunload approval.
823 const GURL url2("http://www.yahoo.com"); 862 const GURL url2("http://www.yahoo.com");
824 controller().LoadURL( 863 controller().LoadURL(
825 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 864 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
826 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 865 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
827 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 866 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
828 EXPECT_TRUE(contents()->cross_navigation_pending()); 867 EXPECT_TRUE(contents()->cross_navigation_pending());
(...skipping 23 matching lines...) Expand all
852 TestRenderViewHost* orig_rvh = rvh(); 891 TestRenderViewHost* orig_rvh = rvh();
853 892
854 // Navigate to URL. There should be no committed entry yet. 893 // Navigate to URL. There should be no committed entry yet.
855 const GURL url("http://www.google.com"); 894 const GURL url("http://www.google.com");
856 controller().LoadURL( 895 controller().LoadURL(
857 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 896 url, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
858 NavigationEntry* entry = controller().GetLastCommittedEntry(); 897 NavigationEntry* entry = controller().GetLastCommittedEntry();
859 EXPECT_TRUE(entry == NULL); 898 EXPECT_TRUE(entry == NULL);
860 899
861 // Committed entry should have content state after DidNavigate. 900 // Committed entry should have content state after DidNavigate.
862 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 901 ViewHostMsg_FrameNavigate_Params params1;
902 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
903 contents()->TestDidNavigate(orig_rvh, params1);
863 entry = controller().GetLastCommittedEntry(); 904 entry = controller().GetLastCommittedEntry();
864 EXPECT_FALSE(entry->content_state().empty()); 905 EXPECT_FALSE(entry->content_state().empty());
865 906
866 // Navigate to same site. 907 // Navigate to same site.
867 const GURL url2("http://images.google.com"); 908 const GURL url2("http://images.google.com");
868 controller().LoadURL( 909 controller().LoadURL(
869 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string()); 910 url2, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
870 entry = controller().GetLastCommittedEntry(); 911 entry = controller().GetLastCommittedEntry();
871 EXPECT_FALSE(entry->content_state().empty()); 912 EXPECT_FALSE(entry->content_state().empty());
872 913
873 // Committed entry should have content state after DidNavigate. 914 // Committed entry should have content state after DidNavigate.
874 contents()->TestDidNavigate( 915 ViewHostMsg_FrameNavigate_Params params2;
875 orig_rvh, 2, url2, content::PAGE_TRANSITION_TYPED); 916 InitNavigateParams(&params2, 2, url2, content::PAGE_TRANSITION_TYPED);
917 contents()->TestDidNavigate(orig_rvh, params2);
876 entry = controller().GetLastCommittedEntry(); 918 entry = controller().GetLastCommittedEntry();
877 EXPECT_FALSE(entry->content_state().empty()); 919 EXPECT_FALSE(entry->content_state().empty());
878 920
879 // Now go back. Committed entry should still have content state. 921 // Now go back. Committed entry should still have content state.
880 controller().GoBack(); 922 controller().GoBack();
881 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 923 contents()->TestDidNavigate(orig_rvh, params1);
882 entry = controller().GetLastCommittedEntry(); 924 entry = controller().GetLastCommittedEntry();
883 EXPECT_FALSE(entry->content_state().empty()); 925 EXPECT_FALSE(entry->content_state().empty());
884 } 926 }
885 927
886 // Test that NavigationEntries have the correct content state after opening 928 // Test that NavigationEntries have the correct content state after opening
887 // a new window to about:blank. Prevents regression for bug 1116137. 929 // a new window to about:blank. Prevents regression for bug 1116137.
888 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) { 930 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) {
889 TestRenderViewHost* orig_rvh = rvh(); 931 TestRenderViewHost* orig_rvh = rvh();
890 932
891 // When opening a new window, it is navigated to about:blank internally. 933 // When opening a new window, it is navigated to about:blank internally.
892 // Currently, this results in two DidNavigate events. 934 // Currently, this results in two DidNavigate events.
893 const GURL url(chrome::kAboutBlankURL); 935 const GURL url(chrome::kAboutBlankURL);
894 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 936 ViewHostMsg_FrameNavigate_Params params1;
895 contents()->TestDidNavigate(orig_rvh, 1, url, content::PAGE_TRANSITION_TYPED); 937 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
938 contents()->TestDidNavigate(orig_rvh, params1);
939 contents()->TestDidNavigate(orig_rvh, params1);
896 940
897 // Should have a content state here. 941 // Should have a content state here.
898 NavigationEntry* entry = controller().GetLastCommittedEntry(); 942 NavigationEntry* entry = controller().GetLastCommittedEntry();
899 EXPECT_FALSE(entry->content_state().empty()); 943 EXPECT_FALSE(entry->content_state().empty());
900 } 944 }
901 945
902 // Tests to see that webkit preferences are properly loaded and copied over 946 // Tests to see that webkit preferences are properly loaded and copied over
903 // to a WebPreferences object. 947 // to a WebPreferences object.
904 TEST_F(TabContentsTest, WebKitPrefs) { 948 TEST_F(TabContentsTest, WebKitPrefs) {
905 WebPreferences webkit_prefs = contents()->TestGetWebkitPrefs(); 949 WebPreferences webkit_prefs = contents()->TestGetWebkitPrefs();
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 // showing. 1696 // showing.
1653 TEST_F(TabContentsTest, NoJSMessageOnInterstitials) { 1697 TEST_F(TabContentsTest, NoJSMessageOnInterstitials) {
1654 const char kUrl[] = "http://www.badguys.com/"; 1698 const char kUrl[] = "http://www.badguys.com/";
1655 const GURL kGURL(kUrl); 1699 const GURL kGURL(kUrl);
1656 1700
1657 // Start a navigation to a page 1701 // Start a navigation to a page
1658 contents()->controller().LoadURL( 1702 contents()->controller().LoadURL(
1659 kGURL, content::Referrer(), content::PAGE_TRANSITION_TYPED, 1703 kGURL, content::Referrer(), content::PAGE_TRANSITION_TYPED,
1660 std::string()); 1704 std::string());
1661 // DidNavigate from the page 1705 // DidNavigate from the page
1662 contents()->TestDidNavigate(rvh(), 1, kGURL, content::PAGE_TRANSITION_TYPED); 1706 ViewHostMsg_FrameNavigate_Params params;
1707 InitNavigateParams(&params, 1, kGURL, content::PAGE_TRANSITION_TYPED);
1708 contents()->TestDidNavigate(rvh(), params);
1663 1709
1664 // Simulate showing an interstitial while the page is showing. 1710 // Simulate showing an interstitial while the page is showing.
1665 TestInterstitialPage::InterstitialState state = 1711 TestInterstitialPage::InterstitialState state =
1666 TestInterstitialPage::UNDECIDED; 1712 TestInterstitialPage::UNDECIDED;
1667 bool deleted = false; 1713 bool deleted = false;
1668 TestInterstitialPage* interstitial = 1714 TestInterstitialPage* interstitial =
1669 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); 1715 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted);
1670 TestInterstitialPageStateGuard state_guard(interstitial); 1716 TestInterstitialPageStateGuard state_guard(interstitial);
1671 interstitial->Show(); 1717 interstitial->Show();
1672 interstitial->TestDidNavigate(1, kGURL); 1718 interstitial->TestDidNavigate(1, kGURL);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1768 1814
1769 // It should have a transient entry. 1815 // It should have a transient entry.
1770 EXPECT_TRUE(other_controller.GetTransientEntry()); 1816 EXPECT_TRUE(other_controller.GetTransientEntry());
1771 1817
1772 // And the interstitial should be showing. 1818 // And the interstitial should be showing.
1773 EXPECT_TRUE(other_contents->showing_interstitial_page()); 1819 EXPECT_TRUE(other_contents->showing_interstitial_page());
1774 1820
1775 // And the interstitial should do a reload on don't proceed. 1821 // And the interstitial should do a reload on don't proceed.
1776 EXPECT_TRUE(other_contents->interstitial_page()->reload_on_dont_proceed()); 1822 EXPECT_TRUE(other_contents->interstitial_page()->reload_on_dont_proceed());
1777 } 1823 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698