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

Side by Side Diff: content/browser/tab_contents/render_view_host_manager_unittest.cc

Issue 8806011: Make NavigationEntry and friends use content::Referrer instead of plain URLs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: updates 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 "content/browser/browser_thread_impl.h" 5 #include "content/browser/browser_thread_impl.h"
6 #include "content/browser/browser_url_handler.h" 6 #include "content/browser/browser_url_handler.h"
7 #include "content/browser/mock_content_browser_client.h" 7 #include "content/browser/mock_content_browser_client.h"
8 #include "content/browser/renderer_host/test_render_view_host.h" 8 #include "content/browser/renderer_host/test_render_view_host.h"
9 #include "content/browser/site_instance.h" 9 #include "content/browser/site_instance.h"
10 #include "content/browser/tab_contents/navigation_controller.h" 10 #include "content/browser/tab_contents/navigation_controller.h"
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 // Create. 293 // Create.
294 RenderViewHostManager manager(&tab_contents, &tab_contents); 294 RenderViewHostManager manager(&tab_contents, &tab_contents);
295 295
296 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 296 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
297 297
298 RenderViewHost* host; 298 RenderViewHost* host;
299 299
300 // 1) The first navigation. -------------------------- 300 // 1) The first navigation. --------------------------
301 const GURL kUrl1("http://www.google.com/"); 301 const GURL kUrl1("http://www.google.com/");
302 NavigationEntry entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 302 NavigationEntry entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
303 GURL() /* referrer */, string16() /* title */, 303 content::Referrer(), string16() /* title */,
304 content::PAGE_TRANSITION_TYPED, 304 content::PAGE_TRANSITION_TYPED,
305 false /* is_renderer_init */); 305 false /* is_renderer_init */);
306 host = manager.Navigate(entry1); 306 host = manager.Navigate(entry1);
307 307
308 // The RenderViewHost created in Init will be reused. 308 // The RenderViewHost created in Init will be reused.
309 EXPECT_TRUE(host == manager.current_host()); 309 EXPECT_TRUE(host == manager.current_host());
310 EXPECT_FALSE(manager.pending_render_view_host()); 310 EXPECT_FALSE(manager.pending_render_view_host());
311 311
312 // Commit. 312 // Commit.
313 manager.DidNavigateMainFrame(host); 313 manager.DidNavigateMainFrame(host);
314 // Commit to SiteInstance should be delayed until RenderView commit. 314 // Commit to SiteInstance should be delayed until RenderView commit.
315 EXPECT_TRUE(host == manager.current_host()); 315 EXPECT_TRUE(host == manager.current_host());
316 ASSERT_TRUE(host); 316 ASSERT_TRUE(host);
317 EXPECT_FALSE(host->site_instance()->has_site()); 317 EXPECT_FALSE(host->site_instance()->has_site());
318 host->site_instance()->SetSite(kUrl1); 318 host->site_instance()->SetSite(kUrl1);
319 319
320 // 2) Navigate to next site. ------------------------- 320 // 2) Navigate to next site. -------------------------
321 const GURL kUrl2("http://www.google.com/foo"); 321 const GURL kUrl2("http://www.google.com/foo");
322 NavigationEntry entry2(NULL /* instance */, -1 /* page_id */, kUrl2, 322 NavigationEntry entry2(
323 kUrl1 /* referrer */, string16() /* title */, 323 NULL /* instance */, -1 /* page_id */, kUrl2,
324 content::PAGE_TRANSITION_LINK, 324 content::Referrer(kUrl1, WebKit::WebReferrerPolicyDefault),
325 true /* is_renderer_init */); 325 string16() /* title */, content::PAGE_TRANSITION_LINK,
326 true /* is_renderer_init */);
326 host = manager.Navigate(entry2); 327 host = manager.Navigate(entry2);
327 328
328 // The RenderViewHost created in Init will be reused. 329 // The RenderViewHost created in Init will be reused.
329 EXPECT_TRUE(host == manager.current_host()); 330 EXPECT_TRUE(host == manager.current_host());
330 EXPECT_FALSE(manager.pending_render_view_host()); 331 EXPECT_FALSE(manager.pending_render_view_host());
331 332
332 // Commit. 333 // Commit.
333 manager.DidNavigateMainFrame(host); 334 manager.DidNavigateMainFrame(host);
334 EXPECT_TRUE(host == manager.current_host()); 335 EXPECT_TRUE(host == manager.current_host());
335 ASSERT_TRUE(host); 336 ASSERT_TRUE(host);
336 EXPECT_TRUE(host->site_instance()->has_site()); 337 EXPECT_TRUE(host->site_instance()->has_site());
337 338
338 // 3) Cross-site navigate to next site. -------------- 339 // 3) Cross-site navigate to next site. --------------
339 const GURL kUrl3("http://webkit.org/"); 340 const GURL kUrl3("http://webkit.org/");
340 NavigationEntry entry3(NULL /* instance */, -1 /* page_id */, kUrl3, 341 NavigationEntry entry3(
341 kUrl2 /* referrer */, string16() /* title */, 342 NULL /* instance */, -1 /* page_id */, kUrl3,
342 content::PAGE_TRANSITION_LINK, 343 content::Referrer(kUrl2, WebKit::WebReferrerPolicyDefault),
343 false /* is_renderer_init */); 344 string16() /* title */, content::PAGE_TRANSITION_LINK,
345 false /* is_renderer_init */);
344 host = manager.Navigate(entry3); 346 host = manager.Navigate(entry3);
345 347
346 // A new RenderViewHost should be created. 348 // A new RenderViewHost should be created.
347 EXPECT_TRUE(manager.pending_render_view_host()); 349 EXPECT_TRUE(manager.pending_render_view_host());
348 ASSERT_EQ(host, manager.pending_render_view_host()); 350 ASSERT_EQ(host, manager.pending_render_view_host());
349 351
350 notifications.Reset(); 352 notifications.Reset();
351 353
352 // Commit. 354 // Commit.
353 manager.DidNavigateMainFrame(manager.pending_render_view_host()); 355 manager.DidNavigateMainFrame(manager.pending_render_view_host());
(...skipping 23 matching lines...) Expand all
377 content::Source<NavigationController>(&tab_contents.controller())); 379 content::Source<NavigationController>(&tab_contents.controller()));
378 380
379 // Create. 381 // Create.
380 RenderViewHostManager manager(&tab_contents, &tab_contents); 382 RenderViewHostManager manager(&tab_contents, &tab_contents);
381 383
382 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 384 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
383 385
384 // 1) The first navigation. -------------------------- 386 // 1) The first navigation. --------------------------
385 const GURL kUrl1("http://www.google.com/"); 387 const GURL kUrl1("http://www.google.com/");
386 NavigationEntry entry1(NULL /* instance */, -1 /* page_id */, kUrl1, 388 NavigationEntry entry1(NULL /* instance */, -1 /* page_id */, kUrl1,
387 GURL() /* referrer */, string16() /* title */, 389 content::Referrer(), string16() /* title */,
388 content::PAGE_TRANSITION_TYPED, 390 content::PAGE_TRANSITION_TYPED,
389 false /* is_renderer_init */); 391 false /* is_renderer_init */);
390 RenderViewHost* host = manager.Navigate(entry1); 392 RenderViewHost* host = manager.Navigate(entry1);
391 393
392 // The RenderViewHost created in Init will be reused. 394 // The RenderViewHost created in Init will be reused.
393 EXPECT_TRUE(host == manager.current_host()); 395 EXPECT_TRUE(host == manager.current_host());
394 EXPECT_FALSE(manager.pending_render_view_host()); 396 EXPECT_FALSE(manager.pending_render_view_host());
395 397
396 // We should observe a notification. 398 // We should observe a notification.
397 EXPECT_TRUE(notifications.Check1AndReset( 399 EXPECT_TRUE(notifications.Check1AndReset(
398 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED)); 400 content::NOTIFICATION_RENDER_VIEW_HOST_CHANGED));
399 notifications.Reset(); 401 notifications.Reset();
400 402
401 // Commit. 403 // Commit.
402 manager.DidNavigateMainFrame(host); 404 manager.DidNavigateMainFrame(host);
403 405
404 // Commit to SiteInstance should be delayed until RenderView commit. 406 // Commit to SiteInstance should be delayed until RenderView commit.
405 EXPECT_TRUE(host == manager.current_host()); 407 EXPECT_TRUE(host == manager.current_host());
406 ASSERT_TRUE(host); 408 ASSERT_TRUE(host);
407 EXPECT_FALSE(host->site_instance()->has_site()); 409 EXPECT_FALSE(host->site_instance()->has_site());
408 host->site_instance()->SetSite(kUrl1); 410 host->site_instance()->SetSite(kUrl1);
409 411
410 // 2) Cross-site navigate to next site. ------------------------- 412 // 2) Cross-site navigate to next site. -------------------------
411 const GURL kUrl2("http://www.example.com"); 413 const GURL kUrl2("http://www.example.com");
412 NavigationEntry entry2(NULL /* instance */, -1 /* page_id */, kUrl2, 414 NavigationEntry entry2(NULL /* instance */, -1 /* page_id */, kUrl2,
413 GURL() /* referrer */, string16() /* title */, 415 content::Referrer(), string16() /* title */,
414 content::PAGE_TRANSITION_TYPED, 416 content::PAGE_TRANSITION_TYPED,
415 false /* is_renderer_init */); 417 false /* is_renderer_init */);
416 RenderViewHost* host2 = manager.Navigate(entry2); 418 RenderViewHost* host2 = manager.Navigate(entry2);
417 419
418 // A new RenderViewHost should be created. 420 // A new RenderViewHost should be created.
419 EXPECT_TRUE(manager.pending_render_view_host()); 421 EXPECT_TRUE(manager.pending_render_view_host());
420 ASSERT_EQ(host2, manager.pending_render_view_host()); 422 ASSERT_EQ(host2, manager.pending_render_view_host());
421 423
422 // Check that the navigation is still suspended because the old RVH 424 // Check that the navigation is still suspended because the old RVH
423 // is not swapped out, yet. 425 // is not swapped out, yet.
(...skipping 27 matching lines...) Expand all
451 EXPECT_EQ(host, manager.current_host()); 453 EXPECT_EQ(host, manager.current_host());
452 EXPECT_TRUE(manager.current_host()->is_swapped_out()); 454 EXPECT_TRUE(manager.current_host()->is_swapped_out());
453 EXPECT_EQ(host2, manager.pending_render_view_host()); 455 EXPECT_EQ(host2, manager.pending_render_view_host());
454 // There should be still no navigation messages being sent. 456 // There should be still no navigation messages being sent.
455 EXPECT_FALSE(test_process_host2->sink().GetUniqueMessageMatching( 457 EXPECT_FALSE(test_process_host2->sink().GetUniqueMessageMatching(
456 ViewMsg_Navigate::ID)); 458 ViewMsg_Navigate::ID));
457 459
458 // 3) Cross-site navigate to next site before 2) has committed. -------------- 460 // 3) Cross-site navigate to next site before 2) has committed. --------------
459 const GURL kUrl3("http://webkit.org/"); 461 const GURL kUrl3("http://webkit.org/");
460 NavigationEntry entry3(NULL /* instance */, -1 /* page_id */, kUrl3, 462 NavigationEntry entry3(NULL /* instance */, -1 /* page_id */, kUrl3,
461 GURL() /* referrer */, string16() /* title */, 463 content::Referrer(), string16() /* title */,
462 content::PAGE_TRANSITION_TYPED, 464 content::PAGE_TRANSITION_TYPED,
463 false /* is_renderer_init */); 465 false /* is_renderer_init */);
464 RenderViewHost* host3 = manager.Navigate(entry3); 466 RenderViewHost* host3 = manager.Navigate(entry3);
465 467
466 // A new RenderViewHost should be created. 468 // A new RenderViewHost should be created.
467 EXPECT_TRUE(manager.pending_render_view_host()); 469 EXPECT_TRUE(manager.pending_render_view_host());
468 ASSERT_EQ(host3, manager.pending_render_view_host()); 470 ASSERT_EQ(host3, manager.pending_render_view_host());
469 471
470 EXPECT_EQ(host, manager.current_host()); 472 EXPECT_EQ(host, manager.current_host());
471 EXPECT_TRUE(manager.current_host()->is_swapped_out()); 473 EXPECT_TRUE(manager.current_host()->is_swapped_out());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 BrowserThreadImpl ui_thread(BrowserThread::UI, MessageLoop::current()); 505 BrowserThreadImpl ui_thread(BrowserThread::UI, MessageLoop::current());
504 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 506 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context());
505 507
506 TestTabContents tab_contents(browser_context(), instance); 508 TestTabContents tab_contents(browser_context(), instance);
507 RenderViewHostManager manager(&tab_contents, &tab_contents); 509 RenderViewHostManager manager(&tab_contents, &tab_contents);
508 510
509 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 511 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
510 512
511 const GURL kUrl(chrome::kTestNewTabURL); 513 const GURL kUrl(chrome::kTestNewTabURL);
512 NavigationEntry entry(NULL /* instance */, -1 /* page_id */, kUrl, 514 NavigationEntry entry(NULL /* instance */, -1 /* page_id */, kUrl,
513 GURL() /* referrer */, string16() /* title */, 515 content::Referrer(), string16() /* title */,
514 content::PAGE_TRANSITION_TYPED, 516 content::PAGE_TRANSITION_TYPED,
515 false /* is_renderer_init */); 517 false /* is_renderer_init */);
516 RenderViewHost* host = manager.Navigate(entry); 518 RenderViewHost* host = manager.Navigate(entry);
517 519
518 EXPECT_TRUE(host); 520 EXPECT_TRUE(host);
519 EXPECT_TRUE(host == manager.current_host()); 521 EXPECT_TRUE(host == manager.current_host());
520 EXPECT_FALSE(manager.pending_render_view_host()); 522 EXPECT_FALSE(manager.pending_render_view_host());
521 523
522 // It's important that the site instance get set on the Web UI page as soon 524 // It's important that the site instance get set on the Web UI page as soon
523 // as the navigation starts, rather than lazily after it commits, so we don't 525 // as the navigation starts, rather than lazily after it commits, so we don't
(...skipping 18 matching lines...) Expand all
542 TEST_F(RenderViewHostManagerTest, NonWebUIChromeURLs) { 544 TEST_F(RenderViewHostManagerTest, NonWebUIChromeURLs) {
543 BrowserThreadImpl thread(BrowserThread::UI, &message_loop_); 545 BrowserThreadImpl thread(BrowserThread::UI, &message_loop_);
544 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context()); 546 SiteInstance* instance = SiteInstance::CreateSiteInstance(browser_context());
545 TestTabContents tab_contents(browser_context(), instance); 547 TestTabContents tab_contents(browser_context(), instance);
546 RenderViewHostManager manager(&tab_contents, &tab_contents); 548 RenderViewHostManager manager(&tab_contents, &tab_contents);
547 manager.Init(browser_context(), instance, MSG_ROUTING_NONE); 549 manager.Init(browser_context(), instance, MSG_ROUTING_NONE);
548 550
549 // NTP is a Web UI page. 551 // NTP is a Web UI page.
550 const GURL kNtpUrl(chrome::kTestNewTabURL); 552 const GURL kNtpUrl(chrome::kTestNewTabURL);
551 NavigationEntry ntp_entry(NULL /* instance */, -1 /* page_id */, kNtpUrl, 553 NavigationEntry ntp_entry(NULL /* instance */, -1 /* page_id */, kNtpUrl,
552 GURL() /* referrer */, string16() /* title */, 554 content::Referrer(), string16() /* title */,
553 content::PAGE_TRANSITION_TYPED, 555 content::PAGE_TRANSITION_TYPED,
554 false /* is_renderer_init */); 556 false /* is_renderer_init */);
555 557
556 // A URL with the Chrome UI scheme, that isn't handled by Web UI. 558 // A URL with the Chrome UI scheme, that isn't handled by Web UI.
557 GURL about_url(kChromeUISchemeButNotWebUIURL); 559 GURL about_url(kChromeUISchemeButNotWebUIURL);
558 NavigationEntry about_entry(NULL /* instance */, -1 /* page_id */, about_url, 560 NavigationEntry about_entry(NULL /* instance */, -1 /* page_id */, about_url,
559 GURL() /* referrer */, string16() /* title */, 561 content::Referrer(), string16() /* title */,
560 content::PAGE_TRANSITION_TYPED, 562 content::PAGE_TRANSITION_TYPED,
561 false /* is_renderer_init */); 563 false /* is_renderer_init */);
562 564
563 EXPECT_TRUE(ShouldSwapProcesses(&manager, &ntp_entry, &about_entry)); 565 EXPECT_TRUE(ShouldSwapProcesses(&manager, &ntp_entry, &about_entry));
564 } 566 }
565 567
566 // Tests that we don't end up in an inconsistent state if a page does a back and 568 // Tests that we don't end up in an inconsistent state if a page does a back and
567 // then reload. http://crbug.com/51680 569 // then reload. http://crbug.com/51680
568 TEST_F(RenderViewHostManagerTest, PageDoesBackAndReload) { 570 TEST_F(RenderViewHostManagerTest, PageDoesBackAndReload) {
569 const GURL kUrl1("http://www.google.com/"); 571 const GURL kUrl1("http://www.google.com/");
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 // current one. 603 // current one.
602 EXPECT_TRUE(contents()->render_manager_for_testing()-> 604 EXPECT_TRUE(contents()->render_manager_for_testing()->
603 pending_render_view_host() == NULL); 605 pending_render_view_host() == NULL);
604 EXPECT_EQ(evil_rvh, contents()->render_manager_for_testing()->current_host()); 606 EXPECT_EQ(evil_rvh, contents()->render_manager_for_testing()->current_host());
605 607
606 // Also we should not have a pending navigation entry. 608 // Also we should not have a pending navigation entry.
607 NavigationEntry* entry = contents()->controller().GetActiveEntry(); 609 NavigationEntry* entry = contents()->controller().GetActiveEntry();
608 ASSERT_TRUE(entry != NULL); 610 ASSERT_TRUE(entry != NULL);
609 EXPECT_EQ(kUrl2, entry->url()); 611 EXPECT_EQ(kUrl2, entry->url());
610 } 612 }
OLDNEW
« no previous file with comments | « content/browser/tab_contents/navigation_entry_unittest.cc ('k') | content/browser/tab_contents/tab_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698