| Index: trunk/src/content/browser/frame_host/render_frame_host_manager_unittest.cc
|
| ===================================================================
|
| --- trunk/src/content/browser/frame_host/render_frame_host_manager_unittest.cc (revision 263366)
|
| +++ trunk/src/content/browser/frame_host/render_frame_host_manager_unittest.cc (working copy)
|
| @@ -125,37 +125,6 @@
|
| };
|
|
|
|
|
| -// This observer keeps track of the last deleted RenderViewHost to avoid
|
| -// accessing it and causing use-after-free condition.
|
| -class RenderFrameHostDeletedObserver : public WebContentsObserver {
|
| - public:
|
| - RenderFrameHostDeletedObserver(RenderFrameHost* rfh)
|
| - : WebContentsObserver(WebContents::FromRenderFrameHost(rfh)),
|
| - process_id_(rfh->GetProcess()->GetID()),
|
| - routing_id_(rfh->GetRoutingID()),
|
| - deleted_(false) {
|
| - }
|
| -
|
| - virtual void RenderFrameDeleted(RenderFrameHost* render_frame_host) OVERRIDE {
|
| - if (render_frame_host->GetProcess()->GetID() == process_id_ &&
|
| - render_frame_host->GetRoutingID() == routing_id_) {
|
| - deleted_ = true;
|
| - }
|
| - }
|
| -
|
| - bool deleted() {
|
| - return deleted_;
|
| - }
|
| -
|
| - private:
|
| - int process_id_;
|
| - int routing_id_;
|
| - bool deleted_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RenderFrameHostDeletedObserver);
|
| -};
|
| -
|
| -
|
| // This observer is used to check whether IPC messages are being filtered for
|
| // swapped out RenderFrameHost objects. It observes the plugin crash and favicon
|
| // update events, which the FilterMessagesWhileSwappedOut test simulates being
|
| @@ -1796,54 +1765,4 @@
|
| EXPECT_TRUE(rvh1->IsSwappedOut());
|
| }
|
|
|
| -// Test that a RenderFrameHost is properly deleted or swapped out when a
|
| -// cross-site navigation is cancelled.
|
| -TEST_F(RenderFrameHostManagerTest,
|
| - CancelPendingProperlyDeletesOrSwaps) {
|
| - const GURL kUrl1("http://www.google.com/");
|
| - const GURL kUrl2("http://www.chromium.org/");
|
| - RenderFrameHostImpl* pending_rfh = NULL;
|
| - base::TimeTicks now = base::TimeTicks::Now();
|
| -
|
| - // Navigate to the first page.
|
| - contents()->NavigateAndCommit(kUrl1);
|
| - TestRenderViewHost* rvh1 = test_rvh();
|
| - EXPECT_EQ(RenderViewHostImpl::STATE_DEFAULT, rvh1->rvh_state());
|
| -
|
| - // Navigate to a new site, starting a cross-site navigation.
|
| - controller().LoadURL(kUrl2, Referrer(), PAGE_TRANSITION_LINK, std::string());
|
| - {
|
| - pending_rfh = contents()->GetFrameTree()->root()->render_manager()
|
| - ->pending_frame_host();
|
| - RenderFrameHostDeletedObserver rvh_deleted_observer(pending_rfh);
|
| -
|
| - // Cancel the navigation by simulating a declined beforeunload dialog.
|
| - main_test_rfh()->OnMessageReceived(
|
| - FrameHostMsg_BeforeUnload_ACK(0, false, now, now));
|
| - EXPECT_FALSE(contents()->cross_navigation_pending());
|
| -
|
| - // Since the pending RFH is the only one for the new SiteInstance, it should
|
| - // be deleted.
|
| - EXPECT_TRUE(rvh_deleted_observer.deleted());
|
| - }
|
| -
|
| - // Start another cross-site navigation.
|
| - controller().LoadURL(kUrl2, Referrer(), PAGE_TRANSITION_LINK, std::string());
|
| - {
|
| - pending_rfh = contents()->GetFrameTree()->root()->render_manager()
|
| - ->pending_frame_host();
|
| - RenderFrameHostDeletedObserver rvh_deleted_observer(pending_rfh);
|
| -
|
| - // Increment the number of active views in the new SiteInstance, which will
|
| - // cause the pending RFH to be swapped out instead of deleted.
|
| - static_cast<SiteInstanceImpl*>(
|
| - pending_rfh->GetSiteInstance())->increment_active_view_count();
|
| -
|
| - main_test_rfh()->OnMessageReceived(
|
| - FrameHostMsg_BeforeUnload_ACK(0, false, now, now));
|
| - EXPECT_FALSE(contents()->cross_navigation_pending());
|
| - EXPECT_FALSE(rvh_deleted_observer.deleted());
|
| - }
|
| -}
|
| -
|
| } // namespace content
|
|
|