OLD | NEW |
---|---|
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 1246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1257 rfh1->GetSiteInstance()->IncrementActiveFrameCount(); | 1257 rfh1->GetSiteInstance()->IncrementActiveFrameCount(); |
1258 | 1258 |
1259 contents()->NavigateAndCommit(kUrl2); | 1259 contents()->NavigateAndCommit(kUrl2); |
1260 TestRenderFrameHost* rfh2 = main_test_rfh(); | 1260 TestRenderFrameHost* rfh2 = main_test_rfh(); |
1261 rfh2->GetSiteInstance()->IncrementActiveFrameCount(); | 1261 rfh2->GetSiteInstance()->IncrementActiveFrameCount(); |
1262 | 1262 |
1263 // Now go back, but suppose the SwapOut_ACK isn't received. This shouldn't | 1263 // Now go back, but suppose the SwapOut_ACK isn't received. This shouldn't |
1264 // happen, but we have seen it when going back quickly across many entries | 1264 // happen, but we have seen it when going back quickly across many entries |
1265 // (http://crbug.com/93427). | 1265 // (http://crbug.com/93427). |
1266 contents()->GetController().GoBack(); | 1266 contents()->GetController().GoBack(); |
1267 EXPECT_TRUE(rfh2->is_waiting_for_beforeunload_ack()); | |
nasko
2017/03/29 23:31:26
Why not set_has_beforeunload_handlers on rfh2? We
jam
2017/03/30 14:53:22
similar to my other reply, this isn't what the uni
| |
1268 contents()->GetMainFrame()->PrepareForCommit(); | 1267 contents()->GetMainFrame()->PrepareForCommit(); |
1269 EXPECT_FALSE(rfh2->is_waiting_for_beforeunload_ack()); | |
1270 | 1268 |
1271 // The back navigation commits. | 1269 // The back navigation commits. |
1272 const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); | 1270 const NavigationEntry* entry1 = contents()->GetController().GetPendingEntry(); |
1273 contents()->GetPendingMainFrame()->SendNavigate( | 1271 contents()->GetPendingMainFrame()->SendNavigate( |
1274 entry1->GetUniqueID(), false, entry1->GetURL()); | 1272 entry1->GetUniqueID(), false, entry1->GetURL()); |
1275 EXPECT_TRUE(rfh2->IsWaitingForUnloadACK()); | 1273 EXPECT_TRUE(rfh2->IsWaitingForUnloadACK()); |
1276 EXPECT_FALSE(rfh2->is_active()); | 1274 EXPECT_FALSE(rfh2->is_active()); |
1277 | 1275 |
1278 // We should be able to navigate forward. | 1276 // We should be able to navigate forward. |
1279 contents()->GetController().GoForward(); | 1277 contents()->GetController().GoForward(); |
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1877 CancelPendingProperlyDeletesOrSwaps) { | 1875 CancelPendingProperlyDeletesOrSwaps) { |
1878 const GURL kUrl1("http://www.google.com/"); | 1876 const GURL kUrl1("http://www.google.com/"); |
1879 const GURL kUrl2("http://www.chromium.org/"); | 1877 const GURL kUrl2("http://www.chromium.org/"); |
1880 RenderFrameHostImpl* pending_rfh = NULL; | 1878 RenderFrameHostImpl* pending_rfh = NULL; |
1881 base::TimeTicks now = base::TimeTicks::Now(); | 1879 base::TimeTicks now = base::TimeTicks::Now(); |
1882 | 1880 |
1883 // Navigate to the first page. | 1881 // Navigate to the first page. |
1884 contents()->NavigateAndCommit(kUrl1); | 1882 contents()->NavigateAndCommit(kUrl1); |
1885 TestRenderFrameHost* rfh1 = main_test_rfh(); | 1883 TestRenderFrameHost* rfh1 = main_test_rfh(); |
1886 EXPECT_TRUE(rfh1->is_active()); | 1884 EXPECT_TRUE(rfh1->is_active()); |
1885 rfh1->set_has_beforeunload_handlers(); | |
1887 | 1886 |
1888 // Navigate to a new site, starting a cross-site navigation. | 1887 // Navigate to a new site, starting a cross-site navigation. |
1889 controller().LoadURL( | 1888 controller().LoadURL( |
1890 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); | 1889 kUrl2, Referrer(), ui::PAGE_TRANSITION_LINK, std::string()); |
1891 { | 1890 { |
1892 pending_rfh = contents()->GetPendingMainFrame(); | 1891 pending_rfh = contents()->GetPendingMainFrame(); |
1893 RenderFrameDeletedObserver rfh_deleted_observer(pending_rfh); | 1892 RenderFrameDeletedObserver rfh_deleted_observer(pending_rfh); |
1894 | 1893 |
1895 // Cancel the navigation by simulating a declined beforeunload dialog. | 1894 // Cancel the navigation by simulating a declined beforeunload dialog. |
1896 contents()->GetMainFrame()->OnMessageReceived( | 1895 contents()->GetMainFrame()->OnMessageReceived( |
(...skipping 1255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3152 ASSERT_FALSE(delete_observer.deleted()); | 3151 ASSERT_FALSE(delete_observer.deleted()); |
3153 EXPECT_FALSE(initial_rfh->is_active()); | 3152 EXPECT_FALSE(initial_rfh->is_active()); |
3154 | 3153 |
3155 // The initial RFH receives a DidStartProvisionalLoad IPC. It should not | 3154 // The initial RFH receives a DidStartProvisionalLoad IPC. It should not |
3156 // create a NavigationHandle. | 3155 // create a NavigationHandle. |
3157 initial_rfh->SimulateNavigationStart(kUrl3); | 3156 initial_rfh->SimulateNavigationStart(kUrl3); |
3158 EXPECT_FALSE(initial_rfh->navigation_handle()); | 3157 EXPECT_FALSE(initial_rfh->navigation_handle()); |
3159 } | 3158 } |
3160 | 3159 |
3161 } // namespace content | 3160 } // namespace content |
OLD | NEW |