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

Side by Side Diff: content/browser/frame_host/render_frame_host_manager_unittest.cc

Issue 2918903002: Move IconURLs method from WebFrame to WebLocalFrame (Closed)
Patch Set: s/kFavIcon/kFavicon/g (as suggested in CR feedback from pkotwicz@). Created 3 years, 6 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/frame_host/render_frame_host_manager.h" 5 #include "content/browser/frame_host/render_frame_host_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <tuple> 9 #include <tuple>
10 #include <utility> 10 #include <utility>
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 RenderViewHostImplTestHarness::TearDown(); 311 RenderViewHostImplTestHarness::TearDown();
312 WebUIControllerFactory::UnregisterFactoryForTesting(&factory_); 312 WebUIControllerFactory::UnregisterFactoryForTesting(&factory_);
313 } 313 }
314 314
315 void set_should_create_webui(bool should_create_webui) { 315 void set_should_create_webui(bool should_create_webui) {
316 factory_.set_should_create_webui(should_create_webui); 316 factory_.set_should_create_webui(should_create_webui);
317 } 317 }
318 318
319 void set_webui_type(int type) { factory_.set_webui_type(type); } 319 void set_webui_type(int type) { factory_.set_webui_type(type); }
320 320
321 void NavigateActiveAndCommit(const GURL& url) { 321 void NavigateActiveAndCommit(const GURL& url, bool dont_swap_out = false) {
322 // Note: we navigate the active RenderFrameHost because previous navigations 322 // Note: we navigate the active RenderFrameHost because previous navigations
323 // won't have committed yet, so NavigateAndCommit does the wrong thing 323 // won't have committed yet, so NavigateAndCommit does the wrong thing
324 // for us. 324 // for us.
325 controller().LoadURL( 325 controller().LoadURL(
326 url, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 326 url, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
327 int entry_id = controller().GetPendingEntry()->GetUniqueID(); 327 int entry_id = controller().GetPendingEntry()->GetUniqueID();
328 328
329 // Simulate the BeforeUnload_ACK that is received from the current renderer 329 // Simulate the BeforeUnload_ACK that is received from the current renderer
330 // for a cross-site navigation. 330 // for a cross-site navigation.
331 // PlzNavigate: it is necessary to call PrepareForCommit before getting the 331 // PlzNavigate: it is necessary to call PrepareForCommit before getting the
(...skipping 18 matching lines...) Expand all
350 active_rfh->SendNavigate(entry_id, true, url); 350 active_rfh->SendNavigate(entry_id, true, url);
351 351
352 // Make sure that we start to run the unload handler at the time of commit. 352 // Make sure that we start to run the unload handler at the time of commit.
353 if (old_rfh != active_rfh && !rfh_observer.deleted()) { 353 if (old_rfh != active_rfh && !rfh_observer.deleted()) {
354 EXPECT_FALSE(old_rfh->is_active()); 354 EXPECT_FALSE(old_rfh->is_active());
355 } 355 }
356 356
357 // Simulate the swap out ACK coming from the pending renderer. This should 357 // Simulate the swap out ACK coming from the pending renderer. This should
358 // either shut down the old RFH or leave it in a swapped out state. 358 // either shut down the old RFH or leave it in a swapped out state.
359 if (old_rfh != active_rfh) { 359 if (old_rfh != active_rfh) {
360 if (dont_swap_out)
361 return;
360 old_rfh->OnSwappedOut(); 362 old_rfh->OnSwappedOut();
361 EXPECT_TRUE(rfh_observer.deleted()); 363 EXPECT_TRUE(rfh_observer.deleted());
362 } 364 }
363 EXPECT_EQ(active_rfh, contents()->GetMainFrame()); 365 EXPECT_EQ(active_rfh, contents()->GetMainFrame());
364 EXPECT_EQ(NULL, contents()->GetPendingMainFrame()); 366 EXPECT_EQ(NULL, contents()->GetPendingMainFrame());
365 } 367 }
366 368
367 bool ShouldSwapProcesses(RenderFrameHostManager* manager, 369 bool ShouldSwapProcesses(RenderFrameHostManager* manager,
368 const NavigationEntryImpl* current_entry, 370 const NavigationEntryImpl* current_entry,
369 const NavigationEntryImpl* new_entry) const { 371 const NavigationEntryImpl* new_entry) const {
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 // for synchronous messages, which cannot be ignored without leaving the 569 // for synchronous messages, which cannot be ignored without leaving the
568 // renderer in a stuck state. See http://crbug.com/93427. 570 // renderer in a stuck state. See http://crbug.com/93427.
569 TEST_F(RenderFrameHostManagerTest, FilterMessagesWhileSwappedOut) { 571 TEST_F(RenderFrameHostManagerTest, FilterMessagesWhileSwappedOut) {
570 const GURL kChromeURL("chrome://foo"); 572 const GURL kChromeURL("chrome://foo");
571 const GURL kDestUrl("http://www.google.com/"); 573 const GURL kDestUrl("http://www.google.com/");
572 std::vector<FaviconURL> icons; 574 std::vector<FaviconURL> icons;
573 575
574 // Navigate our first tab to a chrome url and then to the destination. 576 // Navigate our first tab to a chrome url and then to the destination.
575 NavigateActiveAndCommit(kChromeURL); 577 NavigateActiveAndCommit(kChromeURL);
576 TestRenderFrameHost* ntp_rfh = contents()->GetMainFrame(); 578 TestRenderFrameHost* ntp_rfh = contents()->GetMainFrame();
577 TestRenderViewHost* ntp_rvh = ntp_rfh->GetRenderViewHost();
578 579
579 // Send an update favicon message and make sure it works. 580 // Send an update favicon message and make sure it works.
580 { 581 {
581 PluginFaviconMessageObserver observer(contents()); 582 PluginFaviconMessageObserver observer(contents());
582 EXPECT_TRUE(ntp_rfh->GetRenderViewHost()->GetWidget()->OnMessageReceived( 583 EXPECT_TRUE(ntp_rfh->OnMessageReceived(
583 ViewHostMsg_UpdateFaviconURL( 584 FrameHostMsg_UpdateFaviconURL(ntp_rfh->GetRoutingID(), icons)));
584 ntp_rfh->GetRenderViewHost()->GetRoutingID(), icons)));
585 EXPECT_TRUE(observer.favicon_received()); 585 EXPECT_TRUE(observer.favicon_received());
586 } 586 }
587 // Create one more frame in the same SiteInstance where ntp_rfh 587 // Create one more frame in the same SiteInstance where ntp_rfh
588 // exists so that it doesn't get deleted on navigation to another 588 // exists so that it doesn't get deleted on navigation to another
589 // site. 589 // site.
590 ntp_rfh->GetSiteInstance()->IncrementActiveFrameCount(); 590 ntp_rfh->GetSiteInstance()->IncrementActiveFrameCount();
591 591
592 // Navigate to a cross-site URL. 592 // Navigate to a cross-site URL (don't swap out to keep |ntp_rfh| alive).
593 NavigateActiveAndCommit(kDestUrl); 593 NavigateActiveAndCommit(kDestUrl, true /* dont_swap_out */);
594 TestRenderFrameHost* dest_rfh = contents()->GetMainFrame(); 594 TestRenderFrameHost* dest_rfh = contents()->GetMainFrame();
595 ASSERT_TRUE(dest_rfh); 595 ASSERT_TRUE(dest_rfh);
596 EXPECT_NE(ntp_rfh, dest_rfh); 596 EXPECT_NE(ntp_rfh, dest_rfh);
597 597
598 // The new RVH should be able to update its favicon. 598 // The new RVH should be able to update its favicon.
599 { 599 {
600 PluginFaviconMessageObserver observer(contents()); 600 PluginFaviconMessageObserver observer(contents());
601 EXPECT_TRUE(dest_rfh->GetRenderViewHost()->GetWidget()->OnMessageReceived( 601 EXPECT_TRUE(dest_rfh->OnMessageReceived(
602 ViewHostMsg_UpdateFaviconURL( 602 FrameHostMsg_UpdateFaviconURL(dest_rfh->GetRoutingID(), icons)));
603 dest_rfh->GetRenderViewHost()->GetRoutingID(), icons)));
604 EXPECT_TRUE(observer.favicon_received()); 603 EXPECT_TRUE(observer.favicon_received());
605 } 604 }
606 605
607 // The old renderer, being slow, now updates the favicon. It should be 606 // The old renderer, being slow, now updates the favicon. It should be
608 // filtered out and not take effect. 607 // filtered out and not take effect.
609 { 608 {
610 PluginFaviconMessageObserver observer(contents()); 609 PluginFaviconMessageObserver observer(contents());
611 EXPECT_TRUE( 610 EXPECT_TRUE(ntp_rfh->OnMessageReceived(
612 ntp_rvh->GetWidget()->OnMessageReceived(ViewHostMsg_UpdateFaviconURL( 611 FrameHostMsg_UpdateFaviconURL(ntp_rfh->GetRoutingID(), icons)));
613 dest_rfh->GetRenderViewHost()->GetRoutingID(), icons)));
614 EXPECT_FALSE(observer.favicon_received()); 612 EXPECT_FALSE(observer.favicon_received());
615 } 613 }
616 } 614 }
617 615
618 // Test that the ViewHostMsg_UpdateFaviconURL IPC message is ignored if the 616 // Test that the FrameHostMsg_UpdateFaviconURL IPC message is ignored if the
619 // renderer is in the STATE_PENDING_SWAP_OUT_STATE. The favicon code assumes 617 // renderer is in the STATE_PENDING_SWAP_OUT_STATE. The favicon code assumes
620 // that it only gets ViewHostMsg_UpdateFaviconURL messages for the most recently 618 // that it only gets FrameHostMsg_UpdateFaviconURL messages for the most
621 // committed navigation for each WebContentsImpl. 619 // recently committed navigation for each WebContentsImpl.
622 TEST_F(RenderFrameHostManagerTest, UpdateFaviconURLWhilePendingSwapOut) { 620 TEST_F(RenderFrameHostManagerTest, UpdateFaviconURLWhilePendingSwapOut) {
623 const GURL kChromeURL("chrome://foo"); 621 const GURL kChromeURL("chrome://foo");
624 const GURL kDestUrl("http://www.google.com/"); 622 const GURL kDestUrl("http://www.google.com/");
625 std::vector<FaviconURL> icons; 623 std::vector<FaviconURL> icons;
626 624
627 // Navigate our first tab to a chrome url and then to the destination. 625 // Navigate our first tab to a chrome url and then to the destination.
628 NavigateActiveAndCommit(kChromeURL); 626 NavigateActiveAndCommit(kChromeURL);
629 TestRenderFrameHost* rfh1 = contents()->GetMainFrame(); 627 TestRenderFrameHost* rfh1 = contents()->GetMainFrame();
630 628
631 // Send an update favicon message and make sure it works. 629 // Send an update favicon message and make sure it works.
632 { 630 {
633 PluginFaviconMessageObserver observer(contents()); 631 PluginFaviconMessageObserver observer(contents());
634 EXPECT_TRUE(rfh1->GetRenderViewHost()->GetWidget()->OnMessageReceived( 632 EXPECT_TRUE(rfh1->OnMessageReceived(
635 ViewHostMsg_UpdateFaviconURL(rfh1->GetRenderViewHost()->GetRoutingID(), 633 FrameHostMsg_UpdateFaviconURL(rfh1->GetRoutingID(), icons)));
636 icons)));
637 EXPECT_TRUE(observer.favicon_received()); 634 EXPECT_TRUE(observer.favicon_received());
638 } 635 }
639 636
640 // Create one more frame in the same SiteInstance where |rfh1| exists so that 637 // Create one more frame in the same SiteInstance where |rfh1| exists so that
641 // it doesn't get deleted on navigation to another site. 638 // it doesn't get deleted on navigation to another site.
642 rfh1->GetSiteInstance()->IncrementActiveFrameCount(); 639 rfh1->GetSiteInstance()->IncrementActiveFrameCount();
643 640
644 // Navigate to a cross-site URL and commit the new page. 641 // Navigate to a cross-site URL and commit the new page.
645 controller().LoadURL( 642 controller().LoadURL(
646 kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); 643 kDestUrl, Referrer(), ui::PAGE_TRANSITION_LINK, std::string());
647 int entry_id = controller().GetPendingEntry()->GetUniqueID(); 644 int entry_id = controller().GetPendingEntry()->GetUniqueID();
648 contents()->GetMainFrame()->PrepareForCommit(); 645 contents()->GetMainFrame()->PrepareForCommit();
649 TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame(); 646 TestRenderFrameHost* rfh2 = contents()->GetPendingMainFrame();
650 contents()->TestDidNavigate(rfh2, entry_id, true, kDestUrl, 647 contents()->TestDidNavigate(rfh2, entry_id, true, kDestUrl,
651 ui::PAGE_TRANSITION_TYPED); 648 ui::PAGE_TRANSITION_TYPED);
652 EXPECT_FALSE(rfh1->is_active()); 649 EXPECT_FALSE(rfh1->is_active());
653 EXPECT_TRUE(rfh2->is_active()); 650 EXPECT_TRUE(rfh2->is_active());
654 651
655 // The new RVH should be able to update its favicons. 652 // The new RVH should be able to update its favicons.
656 { 653 {
657 PluginFaviconMessageObserver observer(contents()); 654 PluginFaviconMessageObserver observer(contents());
658 EXPECT_TRUE(rfh2->GetRenderViewHost()->GetWidget()->OnMessageReceived( 655 EXPECT_TRUE(rfh2->OnMessageReceived(
659 ViewHostMsg_UpdateFaviconURL(rfh2->GetRenderViewHost()->GetRoutingID(), 656 FrameHostMsg_UpdateFaviconURL(rfh2->GetRoutingID(), icons)));
660 icons)));
661 EXPECT_TRUE(observer.favicon_received()); 657 EXPECT_TRUE(observer.favicon_received());
662 } 658 }
663 659
664 // The old renderer, being slow, now updates its favicons. The message should 660 // The old renderer, being slow, now updates its favicons. The message should
665 // be ignored. 661 // be ignored.
666 { 662 {
667 PluginFaviconMessageObserver observer(contents()); 663 PluginFaviconMessageObserver observer(contents());
668 EXPECT_TRUE(rfh1->GetRenderViewHost()->GetWidget()->OnMessageReceived( 664 EXPECT_TRUE(rfh1->OnMessageReceived(
669 ViewHostMsg_UpdateFaviconURL(rfh1->GetRenderViewHost()->GetRoutingID(), 665 FrameHostMsg_UpdateFaviconURL(rfh1->GetRoutingID(), icons)));
670 icons)));
671 EXPECT_FALSE(observer.favicon_received()); 666 EXPECT_FALSE(observer.favicon_received());
672 } 667 }
673 } 668 }
674 669
675 // Test if RenderViewHost::GetRenderWidgetHosts() only returns active 670 // Test if RenderViewHost::GetRenderWidgetHosts() only returns active
676 // widgets. 671 // widgets.
677 TEST_F(RenderFrameHostManagerTest, GetRenderWidgetHostsReturnsActiveViews) { 672 TEST_F(RenderFrameHostManagerTest, GetRenderWidgetHostsReturnsActiveViews) {
678 CreateSwappedOutRenderViewHost(); 673 CreateSwappedOutRenderViewHost();
679 std::unique_ptr<RenderWidgetHostIterator> widgets( 674 std::unique_ptr<RenderWidgetHostIterator> widgets(
680 RenderWidgetHost::GetRenderWidgetHosts()); 675 RenderWidgetHost::GetRenderWidgetHosts());
(...skipping 2480 matching lines...) Expand 10 before | Expand all | Expand 10 after
3161 ASSERT_FALSE(delete_observer.deleted()); 3156 ASSERT_FALSE(delete_observer.deleted());
3162 EXPECT_FALSE(initial_rfh->is_active()); 3157 EXPECT_FALSE(initial_rfh->is_active());
3163 3158
3164 // The initial RFH receives a DidStartProvisionalLoad IPC. It should not 3159 // The initial RFH receives a DidStartProvisionalLoad IPC. It should not
3165 // create a NavigationHandle. 3160 // create a NavigationHandle.
3166 initial_rfh->SimulateNavigationStart(kUrl3); 3161 initial_rfh->SimulateNavigationStart(kUrl3);
3167 EXPECT_FALSE(initial_rfh->navigation_handle()); 3162 EXPECT_FALSE(initial_rfh->navigation_handle());
3168 } 3163 }
3169 3164
3170 } // namespace content 3165 } // namespace content
OLDNEW
« no previous file with comments | « components/favicon/content/favicon_url_util.cc ('k') | content/browser/web_contents/web_contents_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698