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

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

Issue 8253002: Move PageTransition into content namespace. While I'm touching all these files, I've also updated... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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) 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/dom_operation_notification_details.h"
8 #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" 9 #include "chrome/browser/tab_contents/chrome_interstitial_page.h"
10 #include "chrome/common/chrome_notification_types.h" 10 #include "chrome/common/chrome_notification_types.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 96
97 void TestDomOperationResponse(const std::string& json_string) { 97 void TestDomOperationResponse(const std::string& json_string) {
98 DomOperationNotificationDetails details(json_string, 1); 98 DomOperationNotificationDetails details(json_string, 1);
99 Observe(chrome::NOTIFICATION_DOM_OPERATION_RESPONSE, 99 Observe(chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
100 Source<RenderViewHost>(render_view_host()), 100 Source<RenderViewHost>(render_view_host()),
101 Details<DomOperationNotificationDetails>(&details)); 101 Details<DomOperationNotificationDetails>(&details));
102 } 102 }
103 103
104 void TestDidNavigate(int page_id, const GURL& url) { 104 void TestDidNavigate(int page_id, const GURL& url) {
105 ViewHostMsg_FrameNavigate_Params params; 105 ViewHostMsg_FrameNavigate_Params params;
106 InitNavigateParams(&params, page_id, url, PageTransition::TYPED); 106 InitNavigateParams(&params, page_id, url, content::PAGE_TRANSITION_TYPED);
107 DidNavigate(render_view_host(), params); 107 DidNavigate(render_view_host(), params);
108 } 108 }
109 109
110 void TestRenderViewGone(base::TerminationStatus status, int error_code) { 110 void TestRenderViewGone(base::TerminationStatus status, int error_code) {
111 RenderViewGone(render_view_host(), status, error_code); 111 RenderViewGone(render_view_host(), status, error_code);
112 } 112 }
113 113
114 bool is_showing() const { 114 bool is_showing() const {
115 return static_cast<TestRenderWidgetHostView*>(render_view_host()->view())-> 115 return static_cast<TestRenderWidgetHostView*>(render_view_host()->view())->
116 is_showing(); 116 is_showing();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 Value::CreateStringValue("bar")); 198 Value::CreateStringValue("bar"));
199 } 199 }
200 200
201 BrowserThread ui_thread_; 201 BrowserThread ui_thread_;
202 }; 202 };
203 203
204 // Test to make sure that title updates get stripped of whitespace. 204 // Test to make sure that title updates get stripped of whitespace.
205 TEST_F(TabContentsTest, UpdateTitle) { 205 TEST_F(TabContentsTest, UpdateTitle) {
206 ViewHostMsg_FrameNavigate_Params params; 206 ViewHostMsg_FrameNavigate_Params params;
207 InitNavigateParams(&params, 0, GURL(chrome::kAboutBlankURL), 207 InitNavigateParams(&params, 0, GURL(chrome::kAboutBlankURL),
208 PageTransition::TYPED); 208 content::PAGE_TRANSITION_TYPED);
209 209
210 content::LoadCommittedDetails details; 210 content::LoadCommittedDetails details;
211 controller().RendererDidNavigate(params, &details); 211 controller().RendererDidNavigate(params, &details);
212 212
213 contents()->UpdateTitle(rvh(), 0, ASCIIToUTF16(" Lots O' Whitespace\n"), 213 contents()->UpdateTitle(rvh(), 0, ASCIIToUTF16(" Lots O' Whitespace\n"),
214 base::i18n::LEFT_TO_RIGHT); 214 base::i18n::LEFT_TO_RIGHT);
215 EXPECT_EQ(ASCIIToUTF16("Lots O' Whitespace"), contents()->GetTitle()); 215 EXPECT_EQ(ASCIIToUTF16("Lots O' Whitespace"), contents()->GetTitle());
216 } 216 }
217 217
218 // Test view source mode for the new tabs page. 218 // Test view source mode for the new tabs page.
219 TEST_F(TabContentsTest, NTPViewSource) { 219 TEST_F(TabContentsTest, NTPViewSource) {
220 const char kUrl[] = "view-source:chrome://newtab"; 220 const char kUrl[] = "view-source:chrome://newtab";
221 const GURL kGURL(kUrl); 221 const GURL kGURL(kUrl);
222 222
223 process()->sink().ClearMessages(); 223 process()->sink().ClearMessages();
224 224
225 controller().LoadURL(kGURL, GURL(), PageTransition::TYPED, std::string()); 225 controller().LoadURL(
226 kGURL, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
226 rvh()->delegate()->RenderViewCreated(rvh()); 227 rvh()->delegate()->RenderViewCreated(rvh());
227 // Did we get the expected message? 228 // Did we get the expected message?
228 EXPECT_TRUE(process()->sink().GetFirstMessageMatching( 229 EXPECT_TRUE(process()->sink().GetFirstMessageMatching(
229 ViewMsg_EnableViewSourceMode::ID)); 230 ViewMsg_EnableViewSourceMode::ID));
230 231
231 ViewHostMsg_FrameNavigate_Params params; 232 ViewHostMsg_FrameNavigate_Params params;
232 InitNavigateParams(&params, 0, kGURL, PageTransition::TYPED); 233 InitNavigateParams(&params, 0, kGURL, content::PAGE_TRANSITION_TYPED);
233 content::LoadCommittedDetails details; 234 content::LoadCommittedDetails details;
234 controller().RendererDidNavigate(params, &details); 235 controller().RendererDidNavigate(params, &details);
235 // Also check title and url. 236 // Also check title and url.
236 EXPECT_EQ(ASCIIToUTF16(kUrl), contents()->GetTitle()); 237 EXPECT_EQ(ASCIIToUTF16(kUrl), contents()->GetTitle());
237 } 238 }
238 239
239 // Test simple same-SiteInstance navigation. 240 // Test simple same-SiteInstance navigation.
240 TEST_F(TabContentsTest, SimpleNavigation) { 241 TEST_F(TabContentsTest, SimpleNavigation) {
241 TestRenderViewHost* orig_rvh = rvh(); 242 TestRenderViewHost* orig_rvh = rvh();
242 SiteInstance* instance1 = contents()->GetSiteInstance(); 243 SiteInstance* instance1 = contents()->GetSiteInstance();
243 EXPECT_TRUE(contents()->pending_rvh() == NULL); 244 EXPECT_TRUE(contents()->pending_rvh() == NULL);
244 245
245 // Navigate to URL 246 // Navigate to URL
246 const GURL url("http://www.google.com"); 247 const GURL url("http://www.google.com");
247 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 248 controller().LoadURL(
249 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
248 EXPECT_FALSE(contents()->cross_navigation_pending()); 250 EXPECT_FALSE(contents()->cross_navigation_pending());
249 EXPECT_EQ(instance1, orig_rvh->site_instance()); 251 EXPECT_EQ(instance1, orig_rvh->site_instance());
250 // Controller's pending entry will have a NULL site instance until we assign 252 // Controller's pending entry will have a NULL site instance until we assign
251 // it in DidNavigate. 253 // it in DidNavigate.
252 EXPECT_TRUE(controller().GetActiveEntry()->site_instance() == NULL); 254 EXPECT_TRUE(controller().GetActiveEntry()->site_instance() == NULL);
253 255
254 // DidNavigate from the page 256 // DidNavigate from the page
255 ViewHostMsg_FrameNavigate_Params params; 257 ViewHostMsg_FrameNavigate_Params params;
256 InitNavigateParams(&params, 1, url, PageTransition::TYPED); 258 InitNavigateParams(&params, 1, url, content::PAGE_TRANSITION_TYPED);
257 contents()->TestDidNavigate(orig_rvh, params); 259 contents()->TestDidNavigate(orig_rvh, params);
258 EXPECT_FALSE(contents()->cross_navigation_pending()); 260 EXPECT_FALSE(contents()->cross_navigation_pending());
259 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 261 EXPECT_EQ(orig_rvh, contents()->render_view_host());
260 EXPECT_EQ(instance1, orig_rvh->site_instance()); 262 EXPECT_EQ(instance1, orig_rvh->site_instance());
261 // Controller's entry should now have the SiteInstance, or else we won't be 263 // Controller's entry should now have the SiteInstance, or else we won't be
262 // able to find it later. 264 // able to find it later.
263 EXPECT_EQ(instance1, controller().GetActiveEntry()->site_instance()); 265 EXPECT_EQ(instance1, controller().GetActiveEntry()->site_instance());
264 } 266 }
265 267
266 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars. 268 // Test that we reject NavigateToEntry if the url is over content::kMaxURLChars.
267 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) { 269 TEST_F(TabContentsTest, NavigateToExcessivelyLongURL) {
268 // Construct a URL that's kMaxURLChars + 1 long of all 'a's. 270 // Construct a URL that's kMaxURLChars + 1 long of all 'a's.
269 const GURL url(std::string("http://example.org/").append( 271 const GURL url(std::string("http://example.org/").append(
270 content::kMaxURLChars + 1, 'a')); 272 content::kMaxURLChars + 1, 'a'));
271 273
272 controller().LoadURL(url, GURL(), PageTransition::GENERATED, std::string()); 274 controller().LoadURL(
275 url, GURL(), content::PAGE_TRANSITION_GENERATED, std::string());
273 EXPECT_TRUE(controller().GetActiveEntry() == NULL); 276 EXPECT_TRUE(controller().GetActiveEntry() == NULL);
274 } 277 }
275 278
276 // Test that navigating across a site boundary creates a new RenderViewHost 279 // Test that navigating across a site boundary creates a new RenderViewHost
277 // with a new SiteInstance. Going back should do the same. 280 // with a new SiteInstance. Going back should do the same.
278 TEST_F(TabContentsTest, CrossSiteBoundaries) { 281 TEST_F(TabContentsTest, CrossSiteBoundaries) {
279 contents()->transition_cross_site = true; 282 contents()->transition_cross_site = true;
280 TestRenderViewHost* orig_rvh = rvh(); 283 TestRenderViewHost* orig_rvh = rvh();
281 int orig_rvh_delete_count = 0; 284 int orig_rvh_delete_count = 0;
282 orig_rvh->set_delete_counter(&orig_rvh_delete_count); 285 orig_rvh->set_delete_counter(&orig_rvh_delete_count);
283 SiteInstance* instance1 = contents()->GetSiteInstance(); 286 SiteInstance* instance1 = contents()->GetSiteInstance();
284 287
285 // Navigate to URL. First URL should use first RenderViewHost. 288 // Navigate to URL. First URL should use first RenderViewHost.
286 const GURL url("http://www.google.com"); 289 const GURL url("http://www.google.com");
287 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 290 controller().LoadURL(
291 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
288 ViewHostMsg_FrameNavigate_Params params1; 292 ViewHostMsg_FrameNavigate_Params params1;
289 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 293 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
290 contents()->TestDidNavigate(orig_rvh, params1); 294 contents()->TestDidNavigate(orig_rvh, params1);
291 295
292 EXPECT_FALSE(contents()->cross_navigation_pending()); 296 EXPECT_FALSE(contents()->cross_navigation_pending());
293 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 297 EXPECT_EQ(orig_rvh, contents()->render_view_host());
294 298
295 // Navigate to new site 299 // Navigate to new site
296 const GURL url2("http://www.yahoo.com"); 300 const GURL url2("http://www.yahoo.com");
297 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 301 controller().LoadURL(
302 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
298 EXPECT_TRUE(contents()->cross_navigation_pending()); 303 EXPECT_TRUE(contents()->cross_navigation_pending());
299 TestRenderViewHost* pending_rvh = contents()->pending_rvh(); 304 TestRenderViewHost* pending_rvh = contents()->pending_rvh();
300 int pending_rvh_delete_count = 0; 305 int pending_rvh_delete_count = 0;
301 pending_rvh->set_delete_counter(&pending_rvh_delete_count); 306 pending_rvh->set_delete_counter(&pending_rvh_delete_count);
302 307
303 // Navigations should be suspended in pending_rvh until ShouldCloseACK. 308 // Navigations should be suspended in pending_rvh until ShouldCloseACK.
304 EXPECT_TRUE(pending_rvh->are_navigations_suspended()); 309 EXPECT_TRUE(pending_rvh->are_navigations_suspended());
305 orig_rvh->SendShouldCloseACK(true); 310 orig_rvh->SendShouldCloseACK(true);
306 EXPECT_FALSE(pending_rvh->are_navigations_suspended()); 311 EXPECT_FALSE(pending_rvh->are_navigations_suspended());
307 312
308 // DidNavigate from the pending page 313 // DidNavigate from the pending page
309 ViewHostMsg_FrameNavigate_Params params2; 314 ViewHostMsg_FrameNavigate_Params params2;
310 InitNavigateParams(&params2, 1, url2, PageTransition::TYPED); 315 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
311 contents()->TestDidNavigate(pending_rvh, params2); 316 contents()->TestDidNavigate(pending_rvh, params2);
312 SiteInstance* instance2 = contents()->GetSiteInstance(); 317 SiteInstance* instance2 = contents()->GetSiteInstance();
313 318
314 EXPECT_FALSE(contents()->cross_navigation_pending()); 319 EXPECT_FALSE(contents()->cross_navigation_pending());
315 EXPECT_EQ(pending_rvh, contents()->render_view_host()); 320 EXPECT_EQ(pending_rvh, contents()->render_view_host());
316 EXPECT_NE(instance1, instance2); 321 EXPECT_NE(instance1, instance2);
317 EXPECT_TRUE(contents()->pending_rvh() == NULL); 322 EXPECT_TRUE(contents()->pending_rvh() == NULL);
318 // We keep the original RVH around, swapped out. 323 // We keep the original RVH around, swapped out.
319 EXPECT_TRUE(contents()->render_manager_for_testing()->IsSwappedOut(orig_rvh)); 324 EXPECT_TRUE(contents()->render_manager_for_testing()->IsSwappedOut(orig_rvh));
320 EXPECT_EQ(orig_rvh_delete_count, 0); 325 EXPECT_EQ(orig_rvh_delete_count, 0);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 // RVH without requiring a cross-site transition (i.e., PENDING state). 357 // RVH without requiring a cross-site transition (i.e., PENDING state).
353 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) { 358 TEST_F(TabContentsTest, CrossSiteBoundariesAfterCrash) {
354 contents()->transition_cross_site = true; 359 contents()->transition_cross_site = true;
355 TestRenderViewHost* orig_rvh = rvh(); 360 TestRenderViewHost* orig_rvh = rvh();
356 int orig_rvh_delete_count = 0; 361 int orig_rvh_delete_count = 0;
357 orig_rvh->set_delete_counter(&orig_rvh_delete_count); 362 orig_rvh->set_delete_counter(&orig_rvh_delete_count);
358 SiteInstance* instance1 = contents()->GetSiteInstance(); 363 SiteInstance* instance1 = contents()->GetSiteInstance();
359 364
360 // Navigate to URL. First URL should use first RenderViewHost. 365 // Navigate to URL. First URL should use first RenderViewHost.
361 const GURL url("http://www.google.com"); 366 const GURL url("http://www.google.com");
362 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 367 controller().LoadURL(
368 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
363 ViewHostMsg_FrameNavigate_Params params1; 369 ViewHostMsg_FrameNavigate_Params params1;
364 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 370 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
365 contents()->TestDidNavigate(orig_rvh, params1); 371 contents()->TestDidNavigate(orig_rvh, params1);
366 372
367 EXPECT_FALSE(contents()->cross_navigation_pending()); 373 EXPECT_FALSE(contents()->cross_navigation_pending());
368 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 374 EXPECT_EQ(orig_rvh, contents()->render_view_host());
369 375
370 // Crash the renderer. 376 // Crash the renderer.
371 orig_rvh->set_render_view_created(false); 377 orig_rvh->set_render_view_created(false);
372 378
373 // Navigate to new site. We should not go into PENDING. 379 // Navigate to new site. We should not go into PENDING.
374 const GURL url2("http://www.yahoo.com"); 380 const GURL url2("http://www.yahoo.com");
375 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 381 controller().LoadURL(
382 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
376 TestRenderViewHost* new_rvh = rvh(); 383 TestRenderViewHost* new_rvh = rvh();
377 EXPECT_FALSE(contents()->cross_navigation_pending()); 384 EXPECT_FALSE(contents()->cross_navigation_pending());
378 EXPECT_TRUE(contents()->pending_rvh() == NULL); 385 EXPECT_TRUE(contents()->pending_rvh() == NULL);
379 EXPECT_NE(orig_rvh, new_rvh); 386 EXPECT_NE(orig_rvh, new_rvh);
380 EXPECT_EQ(orig_rvh_delete_count, 1); 387 EXPECT_EQ(orig_rvh_delete_count, 1);
381 388
382 // DidNavigate from the new page 389 // DidNavigate from the new page
383 ViewHostMsg_FrameNavigate_Params params2; 390 ViewHostMsg_FrameNavigate_Params params2;
384 InitNavigateParams(&params2, 1, url2, PageTransition::TYPED); 391 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
385 contents()->TestDidNavigate(new_rvh, params2); 392 contents()->TestDidNavigate(new_rvh, params2);
386 SiteInstance* instance2 = contents()->GetSiteInstance(); 393 SiteInstance* instance2 = contents()->GetSiteInstance();
387 394
388 EXPECT_FALSE(contents()->cross_navigation_pending()); 395 EXPECT_FALSE(contents()->cross_navigation_pending());
389 EXPECT_EQ(new_rvh, rvh()); 396 EXPECT_EQ(new_rvh, rvh());
390 EXPECT_NE(instance1, instance2); 397 EXPECT_NE(instance1, instance2);
391 EXPECT_TRUE(contents()->pending_rvh() == NULL); 398 EXPECT_TRUE(contents()->pending_rvh() == NULL);
392 399
393 // Close tab and ensure RVHs are deleted. 400 // Close tab and ensure RVHs are deleted.
394 DeleteContents(); 401 DeleteContents();
395 EXPECT_EQ(orig_rvh_delete_count, 1); 402 EXPECT_EQ(orig_rvh_delete_count, 1);
396 } 403 }
397 404
398 // Test that opening a new tab in the same SiteInstance and then navigating 405 // Test that opening a new tab in the same SiteInstance and then navigating
399 // both tabs to a new site will place both tabs in a single SiteInstance. 406 // both tabs to a new site will place both tabs in a single SiteInstance.
400 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) { 407 TEST_F(TabContentsTest, NavigateTwoTabsCrossSite) {
401 contents()->transition_cross_site = true; 408 contents()->transition_cross_site = true;
402 TestRenderViewHost* orig_rvh = rvh(); 409 TestRenderViewHost* orig_rvh = rvh();
403 SiteInstance* instance1 = contents()->GetSiteInstance(); 410 SiteInstance* instance1 = contents()->GetSiteInstance();
404 411
405 // Navigate to URL. First URL should use first RenderViewHost. 412 // Navigate to URL. First URL should use first RenderViewHost.
406 const GURL url("http://www.google.com"); 413 const GURL url("http://www.google.com");
407 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 414 controller().LoadURL(
415 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
408 ViewHostMsg_FrameNavigate_Params params1; 416 ViewHostMsg_FrameNavigate_Params params1;
409 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 417 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
410 contents()->TestDidNavigate(orig_rvh, params1); 418 contents()->TestDidNavigate(orig_rvh, params1);
411 419
412 // Open a new tab with the same SiteInstance, navigated to the same site. 420 // Open a new tab with the same SiteInstance, navigated to the same site.
413 TestTabContents contents2(profile(), instance1); 421 TestTabContents contents2(profile(), instance1);
414 params1.page_id = 2; // Need this since the site instance is the same (which 422 params1.page_id = 2; // Need this since the site instance is the same (which
415 // is the scope of page IDs) and we want to consider 423 // is the scope of page IDs) and we want to consider
416 // this a new page. 424 // this a new page.
417 contents2.transition_cross_site = true; 425 contents2.transition_cross_site = true;
418 contents2.controller().LoadURL(url, GURL(), PageTransition::TYPED, 426 contents2.controller().LoadURL(url, GURL(), content::PAGE_TRANSITION_TYPED,
419 std::string()); 427 std::string());
420 contents2.TestDidNavigate(contents2.render_view_host(), params1); 428 contents2.TestDidNavigate(contents2.render_view_host(), params1);
421 429
422 // Navigate first tab to a new site 430 // Navigate first tab to a new site
423 const GURL url2a("http://www.yahoo.com"); 431 const GURL url2a("http://www.yahoo.com");
424 controller().LoadURL(url2a, GURL(), PageTransition::TYPED, std::string()); 432 controller().LoadURL(
433 url2a, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
425 orig_rvh->SendShouldCloseACK(true); 434 orig_rvh->SendShouldCloseACK(true);
426 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh(); 435 TestRenderViewHost* pending_rvh_a = contents()->pending_rvh();
427 ViewHostMsg_FrameNavigate_Params params2a; 436 ViewHostMsg_FrameNavigate_Params params2a;
428 InitNavigateParams(&params2a, 1, url2a, PageTransition::TYPED); 437 InitNavigateParams(&params2a, 1, url2a, content::PAGE_TRANSITION_TYPED);
429 contents()->TestDidNavigate(pending_rvh_a, params2a); 438 contents()->TestDidNavigate(pending_rvh_a, params2a);
430 SiteInstance* instance2a = contents()->GetSiteInstance(); 439 SiteInstance* instance2a = contents()->GetSiteInstance();
431 EXPECT_NE(instance1, instance2a); 440 EXPECT_NE(instance1, instance2a);
432 441
433 // Navigate second tab to the same site as the first tab 442 // Navigate second tab to the same site as the first tab
434 const GURL url2b("http://mail.yahoo.com"); 443 const GURL url2b("http://mail.yahoo.com");
435 contents2.controller().LoadURL(url2b, GURL(), PageTransition::TYPED, 444 contents2.controller().LoadURL(url2b, GURL(), content::PAGE_TRANSITION_TYPED,
436 std::string()); 445 std::string());
437 TestRenderViewHost* rvh2 = 446 TestRenderViewHost* rvh2 =
438 static_cast<TestRenderViewHost*>(contents2.render_view_host()); 447 static_cast<TestRenderViewHost*>(contents2.render_view_host());
439 rvh2->SendShouldCloseACK(true); 448 rvh2->SendShouldCloseACK(true);
440 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh(); 449 TestRenderViewHost* pending_rvh_b = contents2.pending_rvh();
441 EXPECT_TRUE(pending_rvh_b != NULL); 450 EXPECT_TRUE(pending_rvh_b != NULL);
442 EXPECT_TRUE(contents2.cross_navigation_pending()); 451 EXPECT_TRUE(contents2.cross_navigation_pending());
443 452
444 // NOTE(creis): We used to be in danger of showing a sad tab page here if the 453 // 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 454 // second tab hadn't navigated somewhere first (bug 1145430). That case is
446 // now covered by the CrossSiteBoundariesAfterCrash test. 455 // now covered by the CrossSiteBoundariesAfterCrash test.
447 456
448 ViewHostMsg_FrameNavigate_Params params2b; 457 ViewHostMsg_FrameNavigate_Params params2b;
449 InitNavigateParams(&params2b, 2, url2b, PageTransition::TYPED); 458 InitNavigateParams(&params2b, 2, url2b, content::PAGE_TRANSITION_TYPED);
450 contents2.TestDidNavigate(pending_rvh_b, params2b); 459 contents2.TestDidNavigate(pending_rvh_b, params2b);
451 SiteInstance* instance2b = contents2.GetSiteInstance(); 460 SiteInstance* instance2b = contents2.GetSiteInstance();
452 EXPECT_NE(instance1, instance2b); 461 EXPECT_NE(instance1, instance2b);
453 462
454 // Both tabs should now be in the same SiteInstance. 463 // Both tabs should now be in the same SiteInstance.
455 EXPECT_EQ(instance2a, instance2b); 464 EXPECT_EQ(instance2a, instance2b);
456 } 465 }
457 466
458 // Tests that TabContents uses the current URL, not the SiteInstance's site, to 467 // Tests that TabContents uses the current URL, not the SiteInstance's site, to
459 // determine whether a navigation is cross-site. 468 // determine whether a navigation is cross-site.
460 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) { 469 TEST_F(TabContentsTest, CrossSiteComparesAgainstCurrentPage) {
461 contents()->transition_cross_site = true; 470 contents()->transition_cross_site = true;
462 TestRenderViewHost* orig_rvh = rvh(); 471 TestRenderViewHost* orig_rvh = rvh();
463 SiteInstance* instance1 = contents()->GetSiteInstance(); 472 SiteInstance* instance1 = contents()->GetSiteInstance();
464 473
465 // Navigate to URL. 474 // Navigate to URL.
466 const GURL url("http://www.google.com"); 475 const GURL url("http://www.google.com");
467 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 476 controller().LoadURL(
477 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
468 ViewHostMsg_FrameNavigate_Params params1; 478 ViewHostMsg_FrameNavigate_Params params1;
469 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 479 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
470 contents()->TestDidNavigate(orig_rvh, params1); 480 contents()->TestDidNavigate(orig_rvh, params1);
471 481
472 // Open a related tab to a second site. 482 // Open a related tab to a second site.
473 TestTabContents contents2(profile(), instance1); 483 TestTabContents contents2(profile(), instance1);
474 contents2.transition_cross_site = true; 484 contents2.transition_cross_site = true;
475 const GURL url2("http://www.yahoo.com"); 485 const GURL url2("http://www.yahoo.com");
476 contents2.controller().LoadURL(url2, GURL(), PageTransition::TYPED, 486 contents2.controller().LoadURL(url2, GURL(), content::PAGE_TRANSITION_TYPED,
477 std::string()); 487 std::string());
478 // The first RVH in contents2 isn't live yet, so we shortcut the cross site 488 // The first RVH in contents2 isn't live yet, so we shortcut the cross site
479 // pending. 489 // pending.
480 TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>( 490 TestRenderViewHost* rvh2 = static_cast<TestRenderViewHost*>(
481 contents2.render_view_host()); 491 contents2.render_view_host());
482 EXPECT_FALSE(contents2.cross_navigation_pending()); 492 EXPECT_FALSE(contents2.cross_navigation_pending());
483 ViewHostMsg_FrameNavigate_Params params2; 493 ViewHostMsg_FrameNavigate_Params params2;
484 InitNavigateParams(&params2, 2, url2, PageTransition::TYPED); 494 InitNavigateParams(&params2, 2, url2, content::PAGE_TRANSITION_TYPED);
485 contents2.TestDidNavigate(rvh2, params2); 495 contents2.TestDidNavigate(rvh2, params2);
486 SiteInstance* instance2 = contents2.GetSiteInstance(); 496 SiteInstance* instance2 = contents2.GetSiteInstance();
487 EXPECT_NE(instance1, instance2); 497 EXPECT_NE(instance1, instance2);
488 EXPECT_FALSE(contents2.cross_navigation_pending()); 498 EXPECT_FALSE(contents2.cross_navigation_pending());
489 499
490 // Simulate a link click in first tab to second site. Doesn't switch 500 // Simulate a link click in first tab to second site. Doesn't switch
491 // SiteInstances, because we don't intercept WebKit navigations. 501 // SiteInstances, because we don't intercept WebKit navigations.
492 ViewHostMsg_FrameNavigate_Params params3; 502 ViewHostMsg_FrameNavigate_Params params3;
493 InitNavigateParams(&params3, 2, url2, PageTransition::TYPED); 503 InitNavigateParams(&params3, 2, url2, content::PAGE_TRANSITION_TYPED);
494 contents()->TestDidNavigate(orig_rvh, params3); 504 contents()->TestDidNavigate(orig_rvh, params3);
495 SiteInstance* instance3 = contents()->GetSiteInstance(); 505 SiteInstance* instance3 = contents()->GetSiteInstance();
496 EXPECT_EQ(instance1, instance3); 506 EXPECT_EQ(instance1, instance3);
497 EXPECT_FALSE(contents()->cross_navigation_pending()); 507 EXPECT_FALSE(contents()->cross_navigation_pending());
498 508
499 // Navigate to the new site. Doesn't switch SiteInstancees, because we 509 // Navigate to the new site. Doesn't switch SiteInstancees, because we
500 // compare against the current URL, not the SiteInstance's site. 510 // compare against the current URL, not the SiteInstance's site.
501 const GURL url3("http://mail.yahoo.com"); 511 const GURL url3("http://mail.yahoo.com");
502 controller().LoadURL(url3, GURL(), PageTransition::TYPED, std::string()); 512 controller().LoadURL(
513 url3, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
503 EXPECT_FALSE(contents()->cross_navigation_pending()); 514 EXPECT_FALSE(contents()->cross_navigation_pending());
504 ViewHostMsg_FrameNavigate_Params params4; 515 ViewHostMsg_FrameNavigate_Params params4;
505 InitNavigateParams(&params4, 3, url3, PageTransition::TYPED); 516 InitNavigateParams(&params4, 3, url3, content::PAGE_TRANSITION_TYPED);
506 contents()->TestDidNavigate(orig_rvh, params4); 517 contents()->TestDidNavigate(orig_rvh, params4);
507 SiteInstance* instance4 = contents()->GetSiteInstance(); 518 SiteInstance* instance4 = contents()->GetSiteInstance();
508 EXPECT_EQ(instance1, instance4); 519 EXPECT_EQ(instance1, instance4);
509 } 520 }
510 521
511 // Test that the onbeforeunload and onunload handlers run when navigating 522 // Test that the onbeforeunload and onunload handlers run when navigating
512 // across site boundaries. 523 // across site boundaries.
513 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) { 524 TEST_F(TabContentsTest, CrossSiteUnloadHandlers) {
514 contents()->transition_cross_site = true; 525 contents()->transition_cross_site = true;
515 TestRenderViewHost* orig_rvh = rvh(); 526 TestRenderViewHost* orig_rvh = rvh();
516 SiteInstance* instance1 = contents()->GetSiteInstance(); 527 SiteInstance* instance1 = contents()->GetSiteInstance();
517 528
518 // Navigate to URL. First URL should use first RenderViewHost. 529 // Navigate to URL. First URL should use first RenderViewHost.
519 const GURL url("http://www.google.com"); 530 const GURL url("http://www.google.com");
520 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 531 controller().LoadURL(
532 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
521 ViewHostMsg_FrameNavigate_Params params1; 533 ViewHostMsg_FrameNavigate_Params params1;
522 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 534 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
523 contents()->TestDidNavigate(orig_rvh, params1); 535 contents()->TestDidNavigate(orig_rvh, params1);
524 EXPECT_FALSE(contents()->cross_navigation_pending()); 536 EXPECT_FALSE(contents()->cross_navigation_pending());
525 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 537 EXPECT_EQ(orig_rvh, contents()->render_view_host());
526 538
527 // Navigate to new site, but simulate an onbeforeunload denial. 539 // Navigate to new site, but simulate an onbeforeunload denial.
528 const GURL url2("http://www.yahoo.com"); 540 const GURL url2("http://www.yahoo.com");
529 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 541 controller().LoadURL(
542 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
530 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 543 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
531 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false)); 544 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, false));
532 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 545 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
533 EXPECT_FALSE(contents()->cross_navigation_pending()); 546 EXPECT_FALSE(contents()->cross_navigation_pending());
534 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 547 EXPECT_EQ(orig_rvh, contents()->render_view_host());
535 548
536 // Navigate again, but simulate an onbeforeunload approval. 549 // Navigate again, but simulate an onbeforeunload approval.
537 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 550 controller().LoadURL(
551 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
538 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 552 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
539 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 553 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
540 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 554 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
541 EXPECT_TRUE(contents()->cross_navigation_pending()); 555 EXPECT_TRUE(contents()->cross_navigation_pending());
542 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( 556 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
543 contents()->pending_rvh()); 557 contents()->pending_rvh());
544 558
545 // We won't hear DidNavigate until the onunload handler has finished running. 559 // We won't hear DidNavigate until the onunload handler has finished running.
546 // (No way to simulate that here, but it involves a call from RDH to 560 // (No way to simulate that here, but it involves a call from RDH to
547 // TabContents::OnCrossSiteResponse.) 561 // TabContents::OnCrossSiteResponse.)
548 562
549 // DidNavigate from the pending page 563 // DidNavigate from the pending page
550 ViewHostMsg_FrameNavigate_Params params2; 564 ViewHostMsg_FrameNavigate_Params params2;
551 InitNavigateParams(&params2, 1, url2, PageTransition::TYPED); 565 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
552 contents()->TestDidNavigate(pending_rvh, params2); 566 contents()->TestDidNavigate(pending_rvh, params2);
553 SiteInstance* instance2 = contents()->GetSiteInstance(); 567 SiteInstance* instance2 = contents()->GetSiteInstance();
554 EXPECT_FALSE(contents()->cross_navigation_pending()); 568 EXPECT_FALSE(contents()->cross_navigation_pending());
555 EXPECT_EQ(pending_rvh, rvh()); 569 EXPECT_EQ(pending_rvh, rvh());
556 EXPECT_NE(instance1, instance2); 570 EXPECT_NE(instance1, instance2);
557 EXPECT_TRUE(contents()->pending_rvh() == NULL); 571 EXPECT_TRUE(contents()->pending_rvh() == NULL);
558 } 572 }
559 573
560 // Test that during a slow cross-site navigation, the original renderer can 574 // Test that during a slow cross-site navigation, the original renderer can
561 // navigate to a different URL and have it displayed, canceling the slow 575 // navigate to a different URL and have it displayed, canceling the slow
562 // navigation. 576 // navigation.
563 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) { 577 TEST_F(TabContentsTest, CrossSiteNavigationPreempted) {
564 contents()->transition_cross_site = true; 578 contents()->transition_cross_site = true;
565 TestRenderViewHost* orig_rvh = rvh(); 579 TestRenderViewHost* orig_rvh = rvh();
566 SiteInstance* instance1 = contents()->GetSiteInstance(); 580 SiteInstance* instance1 = contents()->GetSiteInstance();
567 581
568 // Navigate to URL. First URL should use first RenderViewHost. 582 // Navigate to URL. First URL should use first RenderViewHost.
569 const GURL url("http://www.google.com"); 583 const GURL url("http://www.google.com");
570 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 584 controller().LoadURL(
585 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
571 ViewHostMsg_FrameNavigate_Params params1; 586 ViewHostMsg_FrameNavigate_Params params1;
572 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 587 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
573 contents()->TestDidNavigate(orig_rvh, params1); 588 contents()->TestDidNavigate(orig_rvh, params1);
574 EXPECT_FALSE(contents()->cross_navigation_pending()); 589 EXPECT_FALSE(contents()->cross_navigation_pending());
575 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 590 EXPECT_EQ(orig_rvh, contents()->render_view_host());
576 591
577 // Navigate to new site, simulating an onbeforeunload approval. 592 // Navigate to new site, simulating an onbeforeunload approval.
578 const GURL url2("http://www.yahoo.com"); 593 const GURL url2("http://www.yahoo.com");
579 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 594 controller().LoadURL(
595 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
580 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 596 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
581 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 597 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
582 EXPECT_TRUE(contents()->cross_navigation_pending()); 598 EXPECT_TRUE(contents()->cross_navigation_pending());
583 599
584 // Suppose the original renderer navigates before the new one is ready. 600 // Suppose the original renderer navigates before the new one is ready.
585 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo")); 601 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo"));
586 602
587 // Verify that the pending navigation is cancelled. 603 // Verify that the pending navigation is cancelled.
588 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 604 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
589 SiteInstance* instance2 = contents()->GetSiteInstance(); 605 SiteInstance* instance2 = contents()->GetSiteInstance();
590 EXPECT_FALSE(contents()->cross_navigation_pending()); 606 EXPECT_FALSE(contents()->cross_navigation_pending());
591 EXPECT_EQ(orig_rvh, rvh()); 607 EXPECT_EQ(orig_rvh, rvh());
592 EXPECT_EQ(instance1, instance2); 608 EXPECT_EQ(instance1, instance2);
593 EXPECT_TRUE(contents()->pending_rvh() == NULL); 609 EXPECT_TRUE(contents()->pending_rvh() == NULL);
594 } 610 }
595 611
596 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) { 612 TEST_F(TabContentsTest, CrossSiteNavigationBackPreempted) {
597 contents()->transition_cross_site = true; 613 contents()->transition_cross_site = true;
598 614
599 // Start with NTP, which gets a new RVH with WebUI bindings. 615 // Start with NTP, which gets a new RVH with WebUI bindings.
600 const GURL url1("chrome://newtab"); 616 const GURL url1("chrome://newtab");
601 controller().LoadURL(url1, GURL(), PageTransition::TYPED, std::string()); 617 controller().LoadURL(
618 url1, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
602 TestRenderViewHost* ntp_rvh = rvh(); 619 TestRenderViewHost* ntp_rvh = rvh();
603 ViewHostMsg_FrameNavigate_Params params1; 620 ViewHostMsg_FrameNavigate_Params params1;
604 InitNavigateParams(&params1, 1, url1, PageTransition::TYPED); 621 InitNavigateParams(&params1, 1, url1, content::PAGE_TRANSITION_TYPED);
605 contents()->TestDidNavigate(ntp_rvh, params1); 622 contents()->TestDidNavigate(ntp_rvh, params1);
606 NavigationEntry* entry1 = controller().GetLastCommittedEntry(); 623 NavigationEntry* entry1 = controller().GetLastCommittedEntry();
607 SiteInstance* instance1 = contents()->GetSiteInstance(); 624 SiteInstance* instance1 = contents()->GetSiteInstance();
608 625
609 EXPECT_FALSE(contents()->cross_navigation_pending()); 626 EXPECT_FALSE(contents()->cross_navigation_pending());
610 EXPECT_EQ(ntp_rvh, contents()->render_view_host()); 627 EXPECT_EQ(ntp_rvh, contents()->render_view_host());
611 EXPECT_EQ(url1, entry1->url()); 628 EXPECT_EQ(url1, entry1->url());
612 EXPECT_EQ(instance1, entry1->site_instance()); 629 EXPECT_EQ(instance1, entry1->site_instance());
613 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI); 630 EXPECT_TRUE(ntp_rvh->enabled_bindings() & content::BINDINGS_POLICY_WEB_UI);
614 631
615 // Navigate to new site. 632 // Navigate to new site.
616 const GURL url2("http://www.google.com"); 633 const GURL url2("http://www.google.com");
617 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 634 controller().LoadURL(
635 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
618 EXPECT_TRUE(contents()->cross_navigation_pending()); 636 EXPECT_TRUE(contents()->cross_navigation_pending());
619 TestRenderViewHost* google_rvh = contents()->pending_rvh(); 637 TestRenderViewHost* google_rvh = contents()->pending_rvh();
620 638
621 // Simulate beforeunload approval. 639 // Simulate beforeunload approval.
622 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack()); 640 EXPECT_TRUE(ntp_rvh->is_waiting_for_beforeunload_ack());
623 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 641 ntp_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
624 642
625 // DidNavigate from the pending page. 643 // DidNavigate from the pending page.
626 ViewHostMsg_FrameNavigate_Params params2; 644 ViewHostMsg_FrameNavigate_Params params2;
627 InitNavigateParams(&params2, 1, url2, PageTransition::TYPED); 645 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
628 contents()->TestDidNavigate(google_rvh, params2); 646 contents()->TestDidNavigate(google_rvh, params2);
629 NavigationEntry* entry2 = controller().GetLastCommittedEntry(); 647 NavigationEntry* entry2 = controller().GetLastCommittedEntry();
630 SiteInstance* instance2 = contents()->GetSiteInstance(); 648 SiteInstance* instance2 = contents()->GetSiteInstance();
631 649
632 EXPECT_FALSE(contents()->cross_navigation_pending()); 650 EXPECT_FALSE(contents()->cross_navigation_pending());
633 EXPECT_EQ(google_rvh, contents()->render_view_host()); 651 EXPECT_EQ(google_rvh, contents()->render_view_host());
634 EXPECT_NE(instance1, instance2); 652 EXPECT_NE(instance1, instance2);
635 EXPECT_FALSE(contents()->pending_rvh()); 653 EXPECT_FALSE(contents()->pending_rvh());
636 EXPECT_EQ(url2, entry2->url()); 654 EXPECT_EQ(url2, entry2->url());
637 EXPECT_EQ(instance2, entry2->site_instance()); 655 EXPECT_EQ(instance2, entry2->site_instance());
638 EXPECT_FALSE(google_rvh->enabled_bindings() & 656 EXPECT_FALSE(google_rvh->enabled_bindings() &
639 content::BINDINGS_POLICY_WEB_UI); 657 content::BINDINGS_POLICY_WEB_UI);
640 658
641 // Navigate to third page on same site. 659 // Navigate to third page on same site.
642 const GURL url3("http://news.google.com"); 660 const GURL url3("http://news.google.com");
643 controller().LoadURL(url3, GURL(), PageTransition::TYPED, std::string()); 661 controller().LoadURL(
662 url3, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
644 EXPECT_FALSE(contents()->cross_navigation_pending()); 663 EXPECT_FALSE(contents()->cross_navigation_pending());
645 ViewHostMsg_FrameNavigate_Params params3; 664 ViewHostMsg_FrameNavigate_Params params3;
646 InitNavigateParams(&params3, 2, url3, PageTransition::TYPED); 665 InitNavigateParams(&params3, 2, url3, content::PAGE_TRANSITION_TYPED);
647 contents()->TestDidNavigate(google_rvh, params3); 666 contents()->TestDidNavigate(google_rvh, params3);
648 NavigationEntry* entry3 = controller().GetLastCommittedEntry(); 667 NavigationEntry* entry3 = controller().GetLastCommittedEntry();
649 SiteInstance* instance3 = contents()->GetSiteInstance(); 668 SiteInstance* instance3 = contents()->GetSiteInstance();
650 669
651 EXPECT_FALSE(contents()->cross_navigation_pending()); 670 EXPECT_FALSE(contents()->cross_navigation_pending());
652 EXPECT_EQ(google_rvh, contents()->render_view_host()); 671 EXPECT_EQ(google_rvh, contents()->render_view_host());
653 EXPECT_EQ(instance2, instance3); 672 EXPECT_EQ(instance2, instance3);
654 EXPECT_FALSE(contents()->pending_rvh()); 673 EXPECT_FALSE(contents()->pending_rvh());
655 EXPECT_EQ(url3, entry3->url()); 674 EXPECT_EQ(url3, entry3->url());
656 EXPECT_EQ(instance3, entry3->site_instance()); 675 EXPECT_EQ(instance3, entry3->site_instance());
(...skipping 30 matching lines...) Expand all
687 } 706 }
688 707
689 // Test that during a slow cross-site navigation, a sub-frame navigation in the 708 // Test that during a slow cross-site navigation, a sub-frame navigation in the
690 // original renderer will not cancel the slow navigation (bug 42029). 709 // original renderer will not cancel the slow navigation (bug 42029).
691 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) { 710 TEST_F(TabContentsTest, CrossSiteNavigationNotPreemptedByFrame) {
692 contents()->transition_cross_site = true; 711 contents()->transition_cross_site = true;
693 TestRenderViewHost* orig_rvh = rvh(); 712 TestRenderViewHost* orig_rvh = rvh();
694 713
695 // Navigate to URL. First URL should use first RenderViewHost. 714 // Navigate to URL. First URL should use first RenderViewHost.
696 const GURL url("http://www.google.com"); 715 const GURL url("http://www.google.com");
697 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 716 controller().LoadURL(
717 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
698 ViewHostMsg_FrameNavigate_Params params1; 718 ViewHostMsg_FrameNavigate_Params params1;
699 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 719 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
700 contents()->TestDidNavigate(orig_rvh, params1); 720 contents()->TestDidNavigate(orig_rvh, params1);
701 EXPECT_FALSE(contents()->cross_navigation_pending()); 721 EXPECT_FALSE(contents()->cross_navigation_pending());
702 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 722 EXPECT_EQ(orig_rvh, contents()->render_view_host());
703 723
704 // Start navigating to new site. 724 // Start navigating to new site.
705 const GURL url2("http://www.yahoo.com"); 725 const GURL url2("http://www.yahoo.com");
706 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 726 controller().LoadURL(
727 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
707 728
708 // Simulate a sub-frame navigation arriving and ensure the RVH is still 729 // Simulate a sub-frame navigation arriving and ensure the RVH is still
709 // waiting for a before unload response. 730 // waiting for a before unload response.
710 orig_rvh->SendNavigateWithTransition(1, GURL("http://google.com/frame"), 731 orig_rvh->SendNavigateWithTransition(1, GURL("http://google.com/frame"),
711 PageTransition::AUTO_SUBFRAME); 732 content::PAGE_TRANSITION_AUTO_SUBFRAME);
712 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 733 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
713 734
714 // Now simulate the onbeforeunload approval and verify the navigation is 735 // Now simulate the onbeforeunload approval and verify the navigation is
715 // not canceled. 736 // not canceled.
716 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 737 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
717 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 738 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
718 EXPECT_TRUE(contents()->cross_navigation_pending()); 739 EXPECT_TRUE(contents()->cross_navigation_pending());
719 } 740 }
720 741
721 // Test that a cross-site navigation is not preempted if the previous 742 // Test that a cross-site navigation is not preempted if the previous
722 // renderer sends a FrameNavigate message just before being told to stop. 743 // renderer sends a FrameNavigate message just before being told to stop.
723 // We should only preempt the cross-site navigation if the previous renderer 744 // We should only preempt the cross-site navigation if the previous renderer
724 // has started a new navigation. See http://crbug.com/79176. 745 // has started a new navigation. See http://crbug.com/79176.
725 TEST_F(TabContentsTest, CrossSiteNotPreemptedDuringBeforeUnload) { 746 TEST_F(TabContentsTest, CrossSiteNotPreemptedDuringBeforeUnload) {
726 contents()->transition_cross_site = true; 747 contents()->transition_cross_site = true;
727 748
728 // Navigate to NTP URL. 749 // Navigate to NTP URL.
729 const GURL url("chrome://newtab"); 750 const GURL url("chrome://newtab");
730 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 751 controller().LoadURL(
752 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
731 TestRenderViewHost* orig_rvh = rvh(); 753 TestRenderViewHost* orig_rvh = rvh();
732 EXPECT_FALSE(contents()->cross_navigation_pending()); 754 EXPECT_FALSE(contents()->cross_navigation_pending());
733 755
734 // Navigate to new site, with the beforeunload request in flight. 756 // Navigate to new site, with the beforeunload request in flight.
735 const GURL url2("http://www.yahoo.com"); 757 const GURL url2("http://www.yahoo.com");
736 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 758 controller().LoadURL(
759 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
737 TestRenderViewHost* pending_rvh = contents()->pending_rvh(); 760 TestRenderViewHost* pending_rvh = contents()->pending_rvh();
738 EXPECT_TRUE(contents()->cross_navigation_pending()); 761 EXPECT_TRUE(contents()->cross_navigation_pending());
739 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 762 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
740 763
741 // Suppose the first navigation tries to commit now, with a 764 // Suppose the first navigation tries to commit now, with a
742 // ViewMsg_Stop in flight. This should not cancel the pending navigation, 765 // ViewMsg_Stop in flight. This should not cancel the pending navigation,
743 // but it should act as if the beforeunload ack arrived. 766 // but it should act as if the beforeunload ack arrived.
744 orig_rvh->SendNavigate(1, GURL("chrome://newtab")); 767 orig_rvh->SendNavigate(1, GURL("chrome://newtab"));
745 EXPECT_TRUE(contents()->cross_navigation_pending()); 768 EXPECT_TRUE(contents()->cross_navigation_pending());
746 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 769 EXPECT_EQ(orig_rvh, contents()->render_view_host());
747 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 770 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
748 771
749 // The pending navigation should be able to commit successfully. 772 // The pending navigation should be able to commit successfully.
750 ViewHostMsg_FrameNavigate_Params params2; 773 ViewHostMsg_FrameNavigate_Params params2;
751 InitNavigateParams(&params2, 1, url2, PageTransition::TYPED); 774 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
752 contents()->TestDidNavigate(pending_rvh, params2); 775 contents()->TestDidNavigate(pending_rvh, params2);
753 EXPECT_FALSE(contents()->cross_navigation_pending()); 776 EXPECT_FALSE(contents()->cross_navigation_pending());
754 EXPECT_EQ(pending_rvh, contents()->render_view_host()); 777 EXPECT_EQ(pending_rvh, contents()->render_view_host());
755 } 778 }
756 779
757 // Test that the original renderer cannot preempt a cross-site navigation once 780 // Test that the original renderer cannot preempt a cross-site navigation once
758 // the unload request has been made. At this point, the cross-site navigation 781 // the unload request has been made. At this point, the cross-site navigation
759 // is almost ready to be displayed, and the original renderer is only given a 782 // is almost ready to be displayed, and the original renderer is only given a
760 // short chance to run an unload handler. Prevents regression of bug 23942. 783 // short chance to run an unload handler. Prevents regression of bug 23942.
761 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) { 784 TEST_F(TabContentsTest, CrossSiteCantPreemptAfterUnload) {
762 contents()->transition_cross_site = true; 785 contents()->transition_cross_site = true;
763 TestRenderViewHost* orig_rvh = rvh(); 786 TestRenderViewHost* orig_rvh = rvh();
764 SiteInstance* instance1 = contents()->GetSiteInstance(); 787 SiteInstance* instance1 = contents()->GetSiteInstance();
765 788
766 // Navigate to URL. First URL should use first RenderViewHost. 789 // Navigate to URL. First URL should use first RenderViewHost.
767 const GURL url("http://www.google.com"); 790 const GURL url("http://www.google.com");
768 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 791 controller().LoadURL(
792 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
769 ViewHostMsg_FrameNavigate_Params params1; 793 ViewHostMsg_FrameNavigate_Params params1;
770 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 794 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
771 contents()->TestDidNavigate(orig_rvh, params1); 795 contents()->TestDidNavigate(orig_rvh, params1);
772 EXPECT_FALSE(contents()->cross_navigation_pending()); 796 EXPECT_FALSE(contents()->cross_navigation_pending());
773 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 797 EXPECT_EQ(orig_rvh, contents()->render_view_host());
774 798
775 // Navigate to new site, simulating an onbeforeunload approval. 799 // Navigate to new site, simulating an onbeforeunload approval.
776 const GURL url2("http://www.yahoo.com"); 800 const GURL url2("http://www.yahoo.com");
777 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 801 controller().LoadURL(
802 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
778 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 803 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
779 EXPECT_TRUE(contents()->cross_navigation_pending()); 804 EXPECT_TRUE(contents()->cross_navigation_pending());
780 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>( 805 TestRenderViewHost* pending_rvh = static_cast<TestRenderViewHost*>(
781 contents()->pending_rvh()); 806 contents()->pending_rvh());
782 807
783 // Simulate the pending renderer's response, which leads to an unload request 808 // Simulate the pending renderer's response, which leads to an unload request
784 // being sent to orig_rvh. 809 // being sent to orig_rvh.
785 contents()->render_manager_for_testing()->OnCrossSiteResponse(0, 0); 810 contents()->render_manager_for_testing()->OnCrossSiteResponse(0, 0);
786 811
787 // Suppose the original renderer navigates now, while the unload request is in 812 // Suppose the original renderer navigates now, while the unload request is in
788 // flight. We should ignore it, wait for the unload ack, and let the pending 813 // flight. We should ignore it, wait for the unload ack, and let the pending
789 // request continue. Otherwise, the tab may close spontaneously or stop 814 // request continue. Otherwise, the tab may close spontaneously or stop
790 // responding to navigation requests. (See bug 23942.) 815 // responding to navigation requests. (See bug 23942.)
791 ViewHostMsg_FrameNavigate_Params params1a; 816 ViewHostMsg_FrameNavigate_Params params1a;
792 InitNavigateParams(&params1a, 2, GURL("http://www.google.com/foo"), 817 InitNavigateParams(&params1a, 2, GURL("http://www.google.com/foo"),
793 PageTransition::TYPED); 818 content::PAGE_TRANSITION_TYPED);
794 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo")); 819 orig_rvh->SendNavigate(2, GURL("http://www.google.com/foo"));
795 820
796 // Verify that the pending navigation is still in progress. 821 // Verify that the pending navigation is still in progress.
797 EXPECT_TRUE(contents()->cross_navigation_pending()); 822 EXPECT_TRUE(contents()->cross_navigation_pending());
798 EXPECT_TRUE(contents()->pending_rvh() != NULL); 823 EXPECT_TRUE(contents()->pending_rvh() != NULL);
799 824
800 // DidNavigate from the pending page should commit it. 825 // DidNavigate from the pending page should commit it.
801 ViewHostMsg_FrameNavigate_Params params2; 826 ViewHostMsg_FrameNavigate_Params params2;
802 InitNavigateParams(&params2, 1, url2, PageTransition::TYPED); 827 InitNavigateParams(&params2, 1, url2, content::PAGE_TRANSITION_TYPED);
803 contents()->TestDidNavigate(pending_rvh, params2); 828 contents()->TestDidNavigate(pending_rvh, params2);
804 SiteInstance* instance2 = contents()->GetSiteInstance(); 829 SiteInstance* instance2 = contents()->GetSiteInstance();
805 EXPECT_FALSE(contents()->cross_navigation_pending()); 830 EXPECT_FALSE(contents()->cross_navigation_pending());
806 EXPECT_EQ(pending_rvh, rvh()); 831 EXPECT_EQ(pending_rvh, rvh());
807 EXPECT_NE(instance1, instance2); 832 EXPECT_NE(instance1, instance2);
808 EXPECT_TRUE(contents()->pending_rvh() == NULL); 833 EXPECT_TRUE(contents()->pending_rvh() == NULL);
809 } 834 }
810 835
811 // Test that a cross-site navigation that doesn't commit after the unload 836 // Test that a cross-site navigation that doesn't commit after the unload
812 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562. 837 // handler doesn't leave the tab in a stuck state. http://crbug.com/88562.
813 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) { 838 TEST_F(TabContentsTest, CrossSiteNavigationCanceled) {
814 contents()->transition_cross_site = true; 839 contents()->transition_cross_site = true;
815 TestRenderViewHost* orig_rvh = rvh(); 840 TestRenderViewHost* orig_rvh = rvh();
816 SiteInstance* instance1 = contents()->GetSiteInstance(); 841 SiteInstance* instance1 = contents()->GetSiteInstance();
817 842
818 // Navigate to URL. First URL should use first RenderViewHost. 843 // Navigate to URL. First URL should use first RenderViewHost.
819 const GURL url("http://www.google.com"); 844 const GURL url("http://www.google.com");
820 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 845 controller().LoadURL(
846 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
821 ViewHostMsg_FrameNavigate_Params params1; 847 ViewHostMsg_FrameNavigate_Params params1;
822 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 848 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
823 contents()->TestDidNavigate(orig_rvh, params1); 849 contents()->TestDidNavigate(orig_rvh, params1);
824 EXPECT_FALSE(contents()->cross_navigation_pending()); 850 EXPECT_FALSE(contents()->cross_navigation_pending());
825 EXPECT_EQ(orig_rvh, contents()->render_view_host()); 851 EXPECT_EQ(orig_rvh, contents()->render_view_host());
826 852
827 // Navigate to new site, simulating an onbeforeunload approval. 853 // Navigate to new site, simulating an onbeforeunload approval.
828 const GURL url2("http://www.yahoo.com"); 854 const GURL url2("http://www.yahoo.com");
829 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 855 controller().LoadURL(
856 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
830 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack()); 857 EXPECT_TRUE(orig_rvh->is_waiting_for_beforeunload_ack());
831 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true)); 858 orig_rvh->TestOnMessageReceived(ViewHostMsg_ShouldClose_ACK(0, true));
832 EXPECT_TRUE(contents()->cross_navigation_pending()); 859 EXPECT_TRUE(contents()->cross_navigation_pending());
833 860
834 // Simulate swap out message when the response arrives. 861 // Simulate swap out message when the response arrives.
835 orig_rvh->set_is_swapped_out(true); 862 orig_rvh->set_is_swapped_out(true);
836 863
837 // Suppose the navigation doesn't get a chance to commit, and the user 864 // Suppose the navigation doesn't get a chance to commit, and the user
838 // navigates in the current RVH's SiteInstance. 865 // navigates in the current RVH's SiteInstance.
839 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 866 controller().LoadURL(
867 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
840 868
841 // Verify that the pending navigation is cancelled and the renderer is no 869 // Verify that the pending navigation is cancelled and the renderer is no
842 // longer swapped out. 870 // longer swapped out.
843 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 871 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
844 SiteInstance* instance2 = contents()->GetSiteInstance(); 872 SiteInstance* instance2 = contents()->GetSiteInstance();
845 EXPECT_FALSE(contents()->cross_navigation_pending()); 873 EXPECT_FALSE(contents()->cross_navigation_pending());
846 EXPECT_EQ(orig_rvh, rvh()); 874 EXPECT_EQ(orig_rvh, rvh());
847 EXPECT_FALSE(orig_rvh->is_swapped_out()); 875 EXPECT_FALSE(orig_rvh->is_swapped_out());
848 EXPECT_EQ(instance1, instance2); 876 EXPECT_EQ(instance1, instance2);
849 EXPECT_TRUE(contents()->pending_rvh() == NULL); 877 EXPECT_TRUE(contents()->pending_rvh() == NULL);
850 } 878 }
851 879
852 // Test that NavigationEntries have the correct content state after going 880 // Test that NavigationEntries have the correct content state after going
853 // forward and back. Prevents regression for bug 1116137. 881 // forward and back. Prevents regression for bug 1116137.
854 TEST_F(TabContentsTest, NavigationEntryContentState) { 882 TEST_F(TabContentsTest, NavigationEntryContentState) {
855 TestRenderViewHost* orig_rvh = rvh(); 883 TestRenderViewHost* orig_rvh = rvh();
856 884
857 // Navigate to URL. There should be no committed entry yet. 885 // Navigate to URL. There should be no committed entry yet.
858 const GURL url("http://www.google.com"); 886 const GURL url("http://www.google.com");
859 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 887 controller().LoadURL(
888 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
860 NavigationEntry* entry = controller().GetLastCommittedEntry(); 889 NavigationEntry* entry = controller().GetLastCommittedEntry();
861 EXPECT_TRUE(entry == NULL); 890 EXPECT_TRUE(entry == NULL);
862 891
863 // Committed entry should have content state after DidNavigate. 892 // Committed entry should have content state after DidNavigate.
864 ViewHostMsg_FrameNavigate_Params params1; 893 ViewHostMsg_FrameNavigate_Params params1;
865 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 894 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
866 contents()->TestDidNavigate(orig_rvh, params1); 895 contents()->TestDidNavigate(orig_rvh, params1);
867 entry = controller().GetLastCommittedEntry(); 896 entry = controller().GetLastCommittedEntry();
868 EXPECT_FALSE(entry->content_state().empty()); 897 EXPECT_FALSE(entry->content_state().empty());
869 898
870 // Navigate to same site. 899 // Navigate to same site.
871 const GURL url2("http://images.google.com"); 900 const GURL url2("http://images.google.com");
872 controller().LoadURL(url2, GURL(), PageTransition::TYPED, std::string()); 901 controller().LoadURL(
902 url2, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
873 entry = controller().GetLastCommittedEntry(); 903 entry = controller().GetLastCommittedEntry();
874 EXPECT_FALSE(entry->content_state().empty()); 904 EXPECT_FALSE(entry->content_state().empty());
875 905
876 // Committed entry should have content state after DidNavigate. 906 // Committed entry should have content state after DidNavigate.
877 ViewHostMsg_FrameNavigate_Params params2; 907 ViewHostMsg_FrameNavigate_Params params2;
878 InitNavigateParams(&params2, 2, url2, PageTransition::TYPED); 908 InitNavigateParams(&params2, 2, url2, content::PAGE_TRANSITION_TYPED);
879 contents()->TestDidNavigate(orig_rvh, params2); 909 contents()->TestDidNavigate(orig_rvh, params2);
880 entry = controller().GetLastCommittedEntry(); 910 entry = controller().GetLastCommittedEntry();
881 EXPECT_FALSE(entry->content_state().empty()); 911 EXPECT_FALSE(entry->content_state().empty());
882 912
883 // Now go back. Committed entry should still have content state. 913 // Now go back. Committed entry should still have content state.
884 controller().GoBack(); 914 controller().GoBack();
885 contents()->TestDidNavigate(orig_rvh, params1); 915 contents()->TestDidNavigate(orig_rvh, params1);
886 entry = controller().GetLastCommittedEntry(); 916 entry = controller().GetLastCommittedEntry();
887 EXPECT_FALSE(entry->content_state().empty()); 917 EXPECT_FALSE(entry->content_state().empty());
888 } 918 }
889 919
890 // Test that NavigationEntries have the correct content state after opening 920 // Test that NavigationEntries have the correct content state after opening
891 // a new window to about:blank. Prevents regression for bug 1116137. 921 // a new window to about:blank. Prevents regression for bug 1116137.
892 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) { 922 TEST_F(TabContentsTest, NavigationEntryContentStateNewWindow) {
893 TestRenderViewHost* orig_rvh = rvh(); 923 TestRenderViewHost* orig_rvh = rvh();
894 924
895 // When opening a new window, it is navigated to about:blank internally. 925 // When opening a new window, it is navigated to about:blank internally.
896 // Currently, this results in two DidNavigate events. 926 // Currently, this results in two DidNavigate events.
897 const GURL url(chrome::kAboutBlankURL); 927 const GURL url(chrome::kAboutBlankURL);
898 ViewHostMsg_FrameNavigate_Params params1; 928 ViewHostMsg_FrameNavigate_Params params1;
899 InitNavigateParams(&params1, 1, url, PageTransition::TYPED); 929 InitNavigateParams(&params1, 1, url, content::PAGE_TRANSITION_TYPED);
900 contents()->TestDidNavigate(orig_rvh, params1); 930 contents()->TestDidNavigate(orig_rvh, params1);
901 contents()->TestDidNavigate(orig_rvh, params1); 931 contents()->TestDidNavigate(orig_rvh, params1);
902 932
903 // Should have a content state here. 933 // Should have a content state here.
904 NavigationEntry* entry = controller().GetLastCommittedEntry(); 934 NavigationEntry* entry = controller().GetLastCommittedEntry();
905 EXPECT_FALSE(entry->content_state().empty()); 935 EXPECT_FALSE(entry->content_state().empty());
906 } 936 }
907 937
908 // Tests to see that webkit preferences are properly loaded and copied over 938 // Tests to see that webkit preferences are properly loaded and copied over
909 // to a WebPreferences object. 939 // to a WebPreferences object.
(...skipping 27 matching lines...) Expand all
937 // creates a new navigation entry, then hiding it without proceeding. 967 // creates a new navigation entry, then hiding it without proceeding.
938 TEST_F(TabContentsTest, 968 TEST_F(TabContentsTest,
939 ShowInterstitialFromBrowserWithNewNavigationDontProceed) { 969 ShowInterstitialFromBrowserWithNewNavigationDontProceed) {
940 // Navigate to a page. 970 // Navigate to a page.
941 GURL url1("http://www.google.com"); 971 GURL url1("http://www.google.com");
942 rvh()->SendNavigate(1, url1); 972 rvh()->SendNavigate(1, url1);
943 EXPECT_EQ(1, controller().entry_count()); 973 EXPECT_EQ(1, controller().entry_count());
944 974
945 // Initiate a browser navigation that will trigger the interstitial 975 // Initiate a browser navigation that will trigger the interstitial
946 controller().LoadURL(GURL("http://www.evil.com"), GURL(), 976 controller().LoadURL(GURL("http://www.evil.com"), GURL(),
947 PageTransition::TYPED, std::string()); 977 content::PAGE_TRANSITION_TYPED, std::string());
948 978
949 // Show an interstitial. 979 // Show an interstitial.
950 TestInterstitialPage::InterstitialState state = 980 TestInterstitialPage::InterstitialState state =
951 TestInterstitialPage::UNDECIDED; 981 TestInterstitialPage::UNDECIDED;
952 bool deleted = false; 982 bool deleted = false;
953 GURL url2("http://interstitial"); 983 GURL url2("http://interstitial");
954 TestInterstitialPage* interstitial = 984 TestInterstitialPage* interstitial =
955 new TestInterstitialPage(contents(), true, url2, &state, &deleted); 985 new TestInterstitialPage(contents(), true, url2, &state, &deleted);
956 TestInterstitialPageStateGuard state_guard(interstitial); 986 TestInterstitialPageStateGuard state_guard(interstitial);
957 interstitial->Show(); 987 interstitial->Show();
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 // creates a new navigation entry, then proceeding. 1104 // creates a new navigation entry, then proceeding.
1075 TEST_F(TabContentsTest, 1105 TEST_F(TabContentsTest,
1076 ShowInterstitialFromBrowserNewNavigationProceed) { 1106 ShowInterstitialFromBrowserNewNavigationProceed) {
1077 // Navigate to a page. 1107 // Navigate to a page.
1078 GURL url1("http://www.google.com"); 1108 GURL url1("http://www.google.com");
1079 rvh()->SendNavigate(1, url1); 1109 rvh()->SendNavigate(1, url1);
1080 EXPECT_EQ(1, controller().entry_count()); 1110 EXPECT_EQ(1, controller().entry_count());
1081 1111
1082 // Initiate a browser navigation that will trigger the interstitial 1112 // Initiate a browser navigation that will trigger the interstitial
1083 controller().LoadURL(GURL("http://www.evil.com"), GURL(), 1113 controller().LoadURL(GURL("http://www.evil.com"), GURL(),
1084 PageTransition::TYPED, std::string()); 1114 content::PAGE_TRANSITION_TYPED, std::string());
1085 1115
1086 // Show an interstitial. 1116 // Show an interstitial.
1087 TestInterstitialPage::InterstitialState state = 1117 TestInterstitialPage::InterstitialState state =
1088 TestInterstitialPage::UNDECIDED; 1118 TestInterstitialPage::UNDECIDED;
1089 bool deleted = false; 1119 bool deleted = false;
1090 GURL url2("http://interstitial"); 1120 GURL url2("http://interstitial");
1091 TestInterstitialPage* interstitial = 1121 TestInterstitialPage* interstitial =
1092 new TestInterstitialPage(contents(), true, url2, &state, &deleted); 1122 new TestInterstitialPage(contents(), true, url2, &state, &deleted);
1093 TestInterstitialPageStateGuard state_guard(interstitial); 1123 TestInterstitialPageStateGuard state_guard(interstitial);
1094 interstitial->Show(); 1124 interstitial->Show();
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 GURL interstitial_url("http://interstitial"); 1546 GURL interstitial_url("http://interstitial");
1517 TestInterstitialPage* interstitial = 1547 TestInterstitialPage* interstitial =
1518 new TestInterstitialPage(contents(), true, interstitial_url, 1548 new TestInterstitialPage(contents(), true, interstitial_url,
1519 &state, &deleted); 1549 &state, &deleted);
1520 TestInterstitialPageStateGuard state_guard(interstitial); 1550 TestInterstitialPageStateGuard state_guard(interstitial);
1521 interstitial->Show(); 1551 interstitial->Show();
1522 1552
1523 // Let's simulate a navigation initiated from the browser before the 1553 // Let's simulate a navigation initiated from the browser before the
1524 // interstitial finishes loading. 1554 // interstitial finishes loading.
1525 const GURL url("http://www.google.com"); 1555 const GURL url("http://www.google.com");
1526 controller().LoadURL(url, GURL(), PageTransition::TYPED, std::string()); 1556 controller().LoadURL(
1557 url, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
1527 ASSERT_FALSE(deleted); 1558 ASSERT_FALSE(deleted);
1528 EXPECT_FALSE(interstitial->is_showing()); 1559 EXPECT_FALSE(interstitial->is_showing());
1529 1560
1530 // Now let's make the interstitial navigation commit. 1561 // Now let's make the interstitial navigation commit.
1531 interstitial->TestDidNavigate(1, interstitial_url); 1562 interstitial->TestDidNavigate(1, interstitial_url);
1532 1563
1533 // After it loaded the interstitial should be gone. 1564 // After it loaded the interstitial should be gone.
1534 EXPECT_TRUE(deleted); 1565 EXPECT_TRUE(deleted);
1535 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1566 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1536 } 1567 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 } 1637 }
1607 1638
1608 // Tests that showing an interstitial as a result of a browser initiated 1639 // Tests that showing an interstitial as a result of a browser initiated
1609 // navigation while an interstitial is showing does not remove the pending 1640 // navigation while an interstitial is showing does not remove the pending
1610 // entry (see http://crbug.com/9791). 1641 // entry (see http://crbug.com/9791).
1611 TEST_F(TabContentsTest, NewInterstitialDoesNotCancelPendingEntry) { 1642 TEST_F(TabContentsTest, NewInterstitialDoesNotCancelPendingEntry) {
1612 const char kUrl[] = "http://www.badguys.com/"; 1643 const char kUrl[] = "http://www.badguys.com/";
1613 const GURL kGURL(kUrl); 1644 const GURL kGURL(kUrl);
1614 1645
1615 // Start a navigation to a page 1646 // Start a navigation to a page
1616 contents()->controller().LoadURL(kGURL, GURL(), PageTransition::TYPED, 1647 contents()->controller().LoadURL(
1617 std::string()); 1648 kGURL, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
1618 1649
1619 // Simulate that navigation triggering an interstitial. 1650 // Simulate that navigation triggering an interstitial.
1620 TestInterstitialPage::InterstitialState state = 1651 TestInterstitialPage::InterstitialState state =
1621 TestInterstitialPage::UNDECIDED; 1652 TestInterstitialPage::UNDECIDED;
1622 bool deleted = false; 1653 bool deleted = false;
1623 TestInterstitialPage* interstitial = 1654 TestInterstitialPage* interstitial =
1624 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); 1655 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted);
1625 TestInterstitialPageStateGuard state_guard(interstitial); 1656 TestInterstitialPageStateGuard state_guard(interstitial);
1626 interstitial->Show(); 1657 interstitial->Show();
1627 interstitial->TestDidNavigate(1, kGURL); 1658 interstitial->TestDidNavigate(1, kGURL);
1628 1659
1629 // Initiate a new navigation from the browser that also triggers an 1660 // Initiate a new navigation from the browser that also triggers an
1630 // interstitial. 1661 // interstitial.
1631 contents()->controller().LoadURL(kGURL, GURL(), PageTransition::TYPED, 1662 contents()->controller().LoadURL(
1632 std::string()); 1663 kGURL, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
1633 TestInterstitialPage::InterstitialState state2 = 1664 TestInterstitialPage::InterstitialState state2 =
1634 TestInterstitialPage::UNDECIDED; 1665 TestInterstitialPage::UNDECIDED;
1635 bool deleted2 = false; 1666 bool deleted2 = false;
1636 TestInterstitialPage* interstitial2 = 1667 TestInterstitialPage* interstitial2 =
1637 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); 1668 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted);
1638 TestInterstitialPageStateGuard state_guard2(interstitial2); 1669 TestInterstitialPageStateGuard state_guard2(interstitial2);
1639 interstitial2->Show(); 1670 interstitial2->Show();
1640 interstitial2->TestDidNavigate(1, kGURL); 1671 interstitial2->TestDidNavigate(1, kGURL);
1641 1672
1642 // Make sure we still have an entry. 1673 // Make sure we still have an entry.
1643 NavigationEntry* entry = contents()->controller().pending_entry(); 1674 NavigationEntry* entry = contents()->controller().pending_entry();
1644 ASSERT_TRUE(entry); 1675 ASSERT_TRUE(entry);
1645 EXPECT_EQ(kUrl, entry->url().spec()); 1676 EXPECT_EQ(kUrl, entry->url().spec());
1646 1677
1647 // And that the first interstitial is gone, but not the second. 1678 // And that the first interstitial is gone, but not the second.
1648 EXPECT_TRUE(deleted); 1679 EXPECT_TRUE(deleted);
1649 EXPECT_EQ(TestInterstitialPage::CANCELED, state); 1680 EXPECT_EQ(TestInterstitialPage::CANCELED, state);
1650 EXPECT_FALSE(deleted2); 1681 EXPECT_FALSE(deleted2);
1651 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2); 1682 EXPECT_EQ(TestInterstitialPage::UNDECIDED, state2);
1652 } 1683 }
1653 1684
1654 // Tests that Javascript messages are not shown while an interstitial is 1685 // Tests that Javascript messages are not shown while an interstitial is
1655 // showing. 1686 // showing.
1656 TEST_F(TabContentsTest, NoJSMessageOnInterstitials) { 1687 TEST_F(TabContentsTest, NoJSMessageOnInterstitials) {
1657 const char kUrl[] = "http://www.badguys.com/"; 1688 const char kUrl[] = "http://www.badguys.com/";
1658 const GURL kGURL(kUrl); 1689 const GURL kGURL(kUrl);
1659 1690
1660 // Start a navigation to a page 1691 // Start a navigation to a page
1661 contents()->controller().LoadURL(kGURL, GURL(), PageTransition::TYPED, 1692 contents()->controller().LoadURL(
1662 std::string()); 1693 kGURL, GURL(), content::PAGE_TRANSITION_TYPED, std::string());
1663 // DidNavigate from the page 1694 // DidNavigate from the page
1664 ViewHostMsg_FrameNavigate_Params params; 1695 ViewHostMsg_FrameNavigate_Params params;
1665 InitNavigateParams(&params, 1, kGURL, PageTransition::TYPED); 1696 InitNavigateParams(&params, 1, kGURL, content::PAGE_TRANSITION_TYPED);
1666 contents()->TestDidNavigate(rvh(), params); 1697 contents()->TestDidNavigate(rvh(), params);
1667 1698
1668 // Simulate showing an interstitial while the page is showing. 1699 // Simulate showing an interstitial while the page is showing.
1669 TestInterstitialPage::InterstitialState state = 1700 TestInterstitialPage::InterstitialState state =
1670 TestInterstitialPage::UNDECIDED; 1701 TestInterstitialPage::UNDECIDED;
1671 bool deleted = false; 1702 bool deleted = false;
1672 TestInterstitialPage* interstitial = 1703 TestInterstitialPage* interstitial =
1673 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted); 1704 new TestInterstitialPage(contents(), true, kGURL, &state, &deleted);
1674 TestInterstitialPageStateGuard state_guard(interstitial); 1705 TestInterstitialPageStateGuard state_guard(interstitial);
1675 interstitial->Show(); 1706 interstitial->Show();
(...skipping 13 matching lines...) Expand all
1689 // Makes sure that if the source passed to CopyStateFromAndPrune has an 1720 // Makes sure that if the source passed to CopyStateFromAndPrune has an
1690 // interstitial it isn't copied over to the destination. 1721 // interstitial it isn't copied over to the destination.
1691 TEST_F(TabContentsTest, CopyStateFromAndPruneSourceInterstitial) { 1722 TEST_F(TabContentsTest, CopyStateFromAndPruneSourceInterstitial) {
1692 // Navigate to a page. 1723 // Navigate to a page.
1693 GURL url1("http://www.google.com"); 1724 GURL url1("http://www.google.com");
1694 rvh()->SendNavigate(1, url1); 1725 rvh()->SendNavigate(1, url1);
1695 EXPECT_EQ(1, controller().entry_count()); 1726 EXPECT_EQ(1, controller().entry_count());
1696 1727
1697 // Initiate a browser navigation that will trigger the interstitial 1728 // Initiate a browser navigation that will trigger the interstitial
1698 controller().LoadURL(GURL("http://www.evil.com"), GURL(), 1729 controller().LoadURL(GURL("http://www.evil.com"), GURL(),
1699 PageTransition::TYPED, std::string()); 1730 content::PAGE_TRANSITION_TYPED, std::string());
1700 1731
1701 // Show an interstitial. 1732 // Show an interstitial.
1702 TestInterstitialPage::InterstitialState state = 1733 TestInterstitialPage::InterstitialState state =
1703 TestInterstitialPage::UNDECIDED; 1734 TestInterstitialPage::UNDECIDED;
1704 bool deleted = false; 1735 bool deleted = false;
1705 GURL url2("http://interstitial"); 1736 GURL url2("http://interstitial");
1706 TestInterstitialPage* interstitial = 1737 TestInterstitialPage* interstitial =
1707 new TestInterstitialPage(contents(), true, url2, &state, &deleted); 1738 new TestInterstitialPage(contents(), true, url2, &state, &deleted);
1708 TestInterstitialPageStateGuard state_guard(interstitial); 1739 TestInterstitialPageStateGuard state_guard(interstitial);
1709 interstitial->Show(); 1740 interstitial->Show();
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1772 1803
1773 // It should have a transient entry. 1804 // It should have a transient entry.
1774 EXPECT_TRUE(other_controller.GetTransientEntry()); 1805 EXPECT_TRUE(other_controller.GetTransientEntry());
1775 1806
1776 // And the interstitial should be showing. 1807 // And the interstitial should be showing.
1777 EXPECT_TRUE(other_contents->showing_interstitial_page()); 1808 EXPECT_TRUE(other_contents->showing_interstitial_page());
1778 1809
1779 // And the interstitial should do a reload on don't proceed. 1810 // And the interstitial should do a reload on don't proceed.
1780 EXPECT_TRUE(other_contents->interstitial_page()->reload_on_dont_proceed()); 1811 EXPECT_TRUE(other_contents->interstitial_page()->reload_on_dont_proceed());
1781 } 1812 }
OLDNEW
« no previous file with comments | « chrome/browser/tab_contents/render_view_context_menu.cc ('k') | chrome/browser/tab_contents/web_drop_target_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698