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/navigation_controller_impl.h" | 5 #include "content/browser/frame_host/navigation_controller_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 2107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2118 params.nav_entry_id = 0; | 2118 params.nav_entry_id = 0; |
2119 params.did_create_new_entry = false; | 2119 params.did_create_new_entry = false; |
2120 params.url = subframe_url; | 2120 params.url = subframe_url; |
2121 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2121 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2122 params.should_update_history = false; | 2122 params.should_update_history = false; |
2123 params.gesture = NavigationGestureUser; | 2123 params.gesture = NavigationGestureUser; |
2124 params.is_post = false; | 2124 params.is_post = false; |
2125 params.page_state = PageState::CreateFromURL(subframe_url); | 2125 params.page_state = PageState::CreateFromURL(subframe_url); |
2126 | 2126 |
2127 // Navigating should do nothing. | 2127 // Navigating should do nothing. |
| 2128 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); |
2128 subframe->PrepareForCommit(); | 2129 subframe->PrepareForCommit(); |
2129 subframe->SendNavigateWithParams(¶ms); | 2130 subframe->SendNavigateWithParams(¶ms); |
2130 EXPECT_EQ(0U, notifications.size()); | 2131 EXPECT_EQ(0U, notifications.size()); |
2131 } | 2132 } |
2132 | 2133 |
2133 // Now do a new navigation in the frame. | 2134 // Now do a new navigation in the frame. |
2134 const GURL url2("http://foo2"); | 2135 const GURL url2("http://foo2"); |
2135 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2136 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2136 params.page_id = 2; | 2137 params.page_id = 2; |
2137 params.nav_entry_id = 0; | 2138 params.nav_entry_id = 0; |
2138 params.did_create_new_entry = true; | 2139 params.did_create_new_entry = true; |
2139 params.url = url2; | 2140 params.url = url2; |
2140 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2141 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2141 params.should_update_history = false; | 2142 params.should_update_history = false; |
2142 params.gesture = NavigationGestureUser; | 2143 params.gesture = NavigationGestureUser; |
2143 params.is_post = false; | 2144 params.is_post = false; |
2144 params.page_state = PageState::CreateFromURL(url2); | 2145 params.page_state = PageState::CreateFromURL(url2); |
2145 | 2146 |
2146 LoadCommittedDetailsObserver observer(contents()); | 2147 LoadCommittedDetailsObserver observer(contents()); |
| 2148 subframe->SendRendererInitiatedNavigationRequest(url2, true); |
2147 subframe->PrepareForCommit(); | 2149 subframe->PrepareForCommit(); |
2148 subframe->SendNavigateWithParams(¶ms); | 2150 subframe->SendNavigateWithParams(¶ms); |
2149 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2151 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2150 navigation_entry_committed_counter_ = 0; | 2152 navigation_entry_committed_counter_ = 0; |
2151 EXPECT_EQ(url1, observer.details().previous_url); | 2153 EXPECT_EQ(url1, observer.details().previous_url); |
2152 EXPECT_FALSE(observer.details().is_in_page); | 2154 EXPECT_FALSE(observer.details().is_in_page); |
2153 EXPECT_FALSE(observer.details().is_main_frame); | 2155 EXPECT_FALSE(observer.details().is_main_frame); |
2154 | 2156 |
2155 // The new entry should be appended. | 2157 // The new entry should be appended. |
2156 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); | 2158 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2200 params.nav_entry_id = 0; | 2202 params.nav_entry_id = 0; |
2201 params.did_create_new_entry = false; | 2203 params.did_create_new_entry = false; |
2202 params.url = url2; | 2204 params.url = url2; |
2203 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2205 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2204 params.should_update_history = false; | 2206 params.should_update_history = false; |
2205 params.gesture = NavigationGestureUser; | 2207 params.gesture = NavigationGestureUser; |
2206 params.is_post = false; | 2208 params.is_post = false; |
2207 params.page_state = PageState::CreateFromURL(url2); | 2209 params.page_state = PageState::CreateFromURL(url2); |
2208 | 2210 |
2209 // Navigating should do nothing. | 2211 // Navigating should do nothing. |
| 2212 subframe->SendRendererInitiatedNavigationRequest(url2, false); |
2210 subframe->PrepareForCommit(); | 2213 subframe->PrepareForCommit(); |
2211 subframe->SendNavigateWithParams(¶ms); | 2214 subframe->SendNavigateWithParams(¶ms); |
2212 EXPECT_EQ(0U, notifications.size()); | 2215 EXPECT_EQ(0U, notifications.size()); |
2213 } | 2216 } |
2214 | 2217 |
2215 // There should still be only one entry. | 2218 // There should still be only one entry. |
2216 EXPECT_EQ(1, controller.GetEntryCount()); | 2219 EXPECT_EQ(1, controller.GetEntryCount()); |
2217 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); | 2220 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); |
2218 EXPECT_EQ(url1, entry->GetURL()); | 2221 EXPECT_EQ(url1, entry->GetURL()); |
2219 EXPECT_EQ(1, entry->GetPageID()); | 2222 EXPECT_EQ(1, entry->GetPageID()); |
(...skipping 26 matching lines...) Expand all Loading... |
2246 params.nav_entry_id = 0; | 2249 params.nav_entry_id = 0; |
2247 params.did_create_new_entry = false; | 2250 params.did_create_new_entry = false; |
2248 params.url = url3; | 2251 params.url = url3; |
2249 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2252 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2250 params.should_update_history = false; | 2253 params.should_update_history = false; |
2251 params.gesture = NavigationGestureUser; | 2254 params.gesture = NavigationGestureUser; |
2252 params.is_post = false; | 2255 params.is_post = false; |
2253 params.page_state = PageState::CreateFromURL(url3); | 2256 params.page_state = PageState::CreateFromURL(url3); |
2254 | 2257 |
2255 // Navigating should do nothing. | 2258 // Navigating should do nothing. |
| 2259 subframe2->SendRendererInitiatedNavigationRequest(url3, false); |
2256 subframe2->PrepareForCommit(); | 2260 subframe2->PrepareForCommit(); |
2257 subframe2->SendNavigateWithParams(¶ms); | 2261 subframe2->SendNavigateWithParams(¶ms); |
2258 EXPECT_EQ(0U, notifications.size()); | 2262 EXPECT_EQ(0U, notifications.size()); |
2259 } | 2263 } |
2260 | 2264 |
2261 // There should still be only one entry, mostly unchanged. | 2265 // There should still be only one entry, mostly unchanged. |
2262 EXPECT_EQ(1, controller.GetEntryCount()); | 2266 EXPECT_EQ(1, controller.GetEntryCount()); |
2263 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); | 2267 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); |
2264 EXPECT_EQ(url1, entry->GetURL()); | 2268 EXPECT_EQ(url1, entry->GetURL()); |
2265 EXPECT_EQ(1, entry->GetPageID()); | 2269 EXPECT_EQ(1, entry->GetPageID()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2297 params.nav_entry_id = 0; | 2301 params.nav_entry_id = 0; |
2298 params.did_create_new_entry = false; | 2302 params.did_create_new_entry = false; |
2299 params.url = url4; | 2303 params.url = url4; |
2300 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2304 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2301 params.should_update_history = false; | 2305 params.should_update_history = false; |
2302 params.gesture = NavigationGestureUser; | 2306 params.gesture = NavigationGestureUser; |
2303 params.is_post = false; | 2307 params.is_post = false; |
2304 params.page_state = PageState::CreateFromURL(url4); | 2308 params.page_state = PageState::CreateFromURL(url4); |
2305 | 2309 |
2306 // Navigating should do nothing. | 2310 // Navigating should do nothing. |
| 2311 subframe3->SendRendererInitiatedNavigationRequest(url4, false); |
2307 subframe3->PrepareForCommit(); | 2312 subframe3->PrepareForCommit(); |
2308 subframe3->SendNavigateWithParams(¶ms); | 2313 subframe3->SendNavigateWithParams(¶ms); |
2309 EXPECT_EQ(0U, notifications.size()); | 2314 EXPECT_EQ(0U, notifications.size()); |
2310 } | 2315 } |
2311 | 2316 |
2312 // There should still be only one entry, mostly unchanged. | 2317 // There should still be only one entry, mostly unchanged. |
2313 EXPECT_EQ(1, controller.GetEntryCount()); | 2318 EXPECT_EQ(1, controller.GetEntryCount()); |
2314 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); | 2319 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); |
2315 EXPECT_EQ(url1, entry->GetURL()); | 2320 EXPECT_EQ(url1, entry->GetURL()); |
2316 EXPECT_EQ(1, entry->GetPageID()); | 2321 EXPECT_EQ(1, entry->GetPageID()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2358 params.nav_entry_id = 0; | 2363 params.nav_entry_id = 0; |
2359 params.did_create_new_entry = false; | 2364 params.did_create_new_entry = false; |
2360 params.url = subframe_url; | 2365 params.url = subframe_url; |
2361 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2366 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2362 params.should_update_history = false; | 2367 params.should_update_history = false; |
2363 params.gesture = NavigationGestureUser; | 2368 params.gesture = NavigationGestureUser; |
2364 params.is_post = false; | 2369 params.is_post = false; |
2365 params.page_state = PageState::CreateFromURL(subframe_url); | 2370 params.page_state = PageState::CreateFromURL(subframe_url); |
2366 | 2371 |
2367 // Navigating should do nothing. | 2372 // Navigating should do nothing. |
| 2373 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); |
2368 subframe->PrepareForCommit(); | 2374 subframe->PrepareForCommit(); |
2369 subframe->SendNavigateWithParams(¶ms); | 2375 subframe->SendNavigateWithParams(¶ms); |
2370 EXPECT_EQ(0U, notifications.size()); | 2376 EXPECT_EQ(0U, notifications.size()); |
2371 } | 2377 } |
2372 | 2378 |
2373 // First manual subframe navigation. | 2379 // First manual subframe navigation. |
2374 const GURL url2("http://foo2"); | 2380 const GURL url2("http://foo2"); |
2375 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2381 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2376 params.page_id = 2; | 2382 params.page_id = 2; |
2377 params.nav_entry_id = 0; | 2383 params.nav_entry_id = 0; |
2378 params.did_create_new_entry = true; | 2384 params.did_create_new_entry = true; |
2379 params.url = url2; | 2385 params.url = url2; |
2380 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2386 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2381 params.should_update_history = false; | 2387 params.should_update_history = false; |
2382 params.gesture = NavigationGestureUser; | 2388 params.gesture = NavigationGestureUser; |
2383 params.is_post = false; | 2389 params.is_post = false; |
2384 params.page_state = PageState::CreateFromURL(url2); | 2390 params.page_state = PageState::CreateFromURL(url2); |
2385 | 2391 |
2386 // This should generate a new entry. | 2392 // This should generate a new entry. |
| 2393 subframe->SendRendererInitiatedNavigationRequest(url2, false); |
2387 subframe->PrepareForCommit(); | 2394 subframe->PrepareForCommit(); |
2388 subframe->SendNavigateWithParams(¶ms); | 2395 subframe->SendNavigateWithParams(¶ms); |
2389 NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry(); | 2396 NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry(); |
2390 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2397 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2391 navigation_entry_committed_counter_ = 0; | 2398 navigation_entry_committed_counter_ = 0; |
2392 EXPECT_EQ(2, controller.GetEntryCount()); | 2399 EXPECT_EQ(2, controller.GetEntryCount()); |
2393 | 2400 |
2394 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2401 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2395 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2402 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2396 // The entry should have a subframe FrameNavigationEntry. | 2403 // The entry should have a subframe FrameNavigationEntry. |
2397 ASSERT_EQ(1U, entry2->root_node()->children.size()); | 2404 ASSERT_EQ(1U, entry2->root_node()->children.size()); |
2398 EXPECT_EQ(url2, entry2->root_node()->children[0]->frame_entry->url()); | 2405 EXPECT_EQ(url2, entry2->root_node()->children[0]->frame_entry->url()); |
2399 } else { | 2406 } else { |
2400 // There are no subframe FrameNavigationEntries by default. | 2407 // There are no subframe FrameNavigationEntries by default. |
2401 EXPECT_EQ(0U, entry2->root_node()->children.size()); | 2408 EXPECT_EQ(0U, entry2->root_node()->children.size()); |
2402 } | 2409 } |
2403 | 2410 |
2404 // Second manual subframe navigation should also make a new entry. | 2411 // Second manual subframe navigation should also make a new entry. |
2405 const GURL url3("http://foo3"); | 2412 const GURL url3("http://foo3"); |
2406 params.page_id = 3; | 2413 params.page_id = 3; |
2407 params.nav_entry_id = 0; | 2414 params.nav_entry_id = 0; |
2408 params.did_create_new_entry = true; | 2415 params.did_create_new_entry = true; |
2409 params.url = url3; | 2416 params.url = url3; |
2410 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2417 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2411 params.page_state = PageState::CreateFromURL(url3); | 2418 params.page_state = PageState::CreateFromURL(url3); |
| 2419 subframe->SendRendererInitiatedNavigationRequest(url3, false); |
2412 subframe->PrepareForCommit(); | 2420 subframe->PrepareForCommit(); |
2413 subframe->SendNavigateWithParams(¶ms); | 2421 subframe->SendNavigateWithParams(¶ms); |
2414 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2422 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2415 navigation_entry_committed_counter_ = 0; | 2423 navigation_entry_committed_counter_ = 0; |
2416 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); | 2424 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); |
2417 EXPECT_EQ(3, controller.GetEntryCount()); | 2425 EXPECT_EQ(3, controller.GetEntryCount()); |
2418 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); | 2426 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); |
2419 | 2427 |
2420 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2428 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2421 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2429 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2509 self_params.did_create_new_entry = false; | 2517 self_params.did_create_new_entry = false; |
2510 self_params.url = url1; | 2518 self_params.url = url1; |
2511 self_params.transition = ui::PAGE_TRANSITION_LINK; | 2519 self_params.transition = ui::PAGE_TRANSITION_LINK; |
2512 self_params.should_update_history = false; | 2520 self_params.should_update_history = false; |
2513 self_params.gesture = NavigationGestureUser; | 2521 self_params.gesture = NavigationGestureUser; |
2514 self_params.is_post = false; | 2522 self_params.is_post = false; |
2515 self_params.page_state = PageState::CreateFromURL(url1); | 2523 self_params.page_state = PageState::CreateFromURL(url1); |
2516 self_params.was_within_same_page = true; | 2524 self_params.was_within_same_page = true; |
2517 | 2525 |
2518 LoadCommittedDetailsObserver observer(contents()); | 2526 LoadCommittedDetailsObserver observer(contents()); |
| 2527 main_test_rfh()->SendRendererInitiatedNavigationRequest(url1, false); |
2519 main_test_rfh()->PrepareForCommit(); | 2528 main_test_rfh()->PrepareForCommit(); |
2520 main_test_rfh()->SendNavigateWithParams(&self_params); | 2529 main_test_rfh()->SendNavigateWithParams(&self_params); |
2521 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); | 2530 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); |
2522 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2531 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2523 navigation_entry_committed_counter_ = 0; | 2532 navigation_entry_committed_counter_ = 0; |
2524 EXPECT_TRUE(observer.details().is_in_page); | 2533 EXPECT_TRUE(observer.details().is_in_page); |
2525 EXPECT_TRUE(observer.details().did_replace_entry); | 2534 EXPECT_TRUE(observer.details().did_replace_entry); |
2526 EXPECT_EQ(1, controller.GetEntryCount()); | 2535 EXPECT_EQ(1, controller.GetEntryCount()); |
2527 | 2536 |
2528 // Fragment navigation to a new page_id. | 2537 // Fragment navigation to a new page_id. |
2529 const GURL url2("http://foo#a"); | 2538 const GURL url2("http://foo#a"); |
2530 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2539 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2531 params.page_id = 1; | 2540 params.page_id = 1; |
2532 params.nav_entry_id = 0; | 2541 params.nav_entry_id = 0; |
2533 params.did_create_new_entry = true; | 2542 params.did_create_new_entry = true; |
2534 params.url = url2; | 2543 params.url = url2; |
2535 params.transition = ui::PAGE_TRANSITION_LINK; | 2544 params.transition = ui::PAGE_TRANSITION_LINK; |
2536 params.should_update_history = false; | 2545 params.should_update_history = false; |
2537 params.gesture = NavigationGestureUser; | 2546 params.gesture = NavigationGestureUser; |
2538 params.is_post = false; | 2547 params.is_post = false; |
2539 params.page_state = PageState::CreateFromURL(url2); | 2548 params.page_state = PageState::CreateFromURL(url2); |
2540 params.was_within_same_page = true; | 2549 params.was_within_same_page = true; |
2541 | 2550 |
2542 // This should generate a new entry. | 2551 // This should generate a new entry. |
| 2552 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false); |
2543 main_test_rfh()->PrepareForCommit(); | 2553 main_test_rfh()->PrepareForCommit(); |
2544 main_test_rfh()->SendNavigateWithParams(¶ms); | 2554 main_test_rfh()->SendNavigateWithParams(¶ms); |
2545 NavigationEntry* entry2 = controller.GetLastCommittedEntry(); | 2555 NavigationEntry* entry2 = controller.GetLastCommittedEntry(); |
2546 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2556 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2547 navigation_entry_committed_counter_ = 0; | 2557 navigation_entry_committed_counter_ = 0; |
2548 EXPECT_TRUE(observer.details().is_in_page); | 2558 EXPECT_TRUE(observer.details().is_in_page); |
2549 EXPECT_FALSE(observer.details().did_replace_entry); | 2559 EXPECT_FALSE(observer.details().did_replace_entry); |
2550 EXPECT_EQ(2, controller.GetEntryCount()); | 2560 EXPECT_EQ(2, controller.GetEntryCount()); |
2551 | 2561 |
2552 // Go back one. | 2562 // Go back one. |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2595 EXPECT_EQ(forward_params.url, | 2605 EXPECT_EQ(forward_params.url, |
2596 controller.GetVisibleEntry()->GetURL()); | 2606 controller.GetVisibleEntry()->GetURL()); |
2597 | 2607 |
2598 // Finally, navigate to an unrelated URL to make sure in_page is not sticky. | 2608 // Finally, navigate to an unrelated URL to make sure in_page is not sticky. |
2599 const GURL url3("http://bar"); | 2609 const GURL url3("http://bar"); |
2600 params.page_id = 2; | 2610 params.page_id = 2; |
2601 params.nav_entry_id = 0; | 2611 params.nav_entry_id = 0; |
2602 params.did_create_new_entry = true; | 2612 params.did_create_new_entry = true; |
2603 params.url = url3; | 2613 params.url = url3; |
2604 navigation_entry_committed_counter_ = 0; | 2614 navigation_entry_committed_counter_ = 0; |
| 2615 main_test_rfh()->SendRendererInitiatedNavigationRequest(url3, false); |
2605 main_test_rfh()->PrepareForCommit(); | 2616 main_test_rfh()->PrepareForCommit(); |
2606 main_test_rfh()->SendNavigateWithParams(¶ms); | 2617 main_test_rfh()->SendNavigateWithParams(¶ms); |
2607 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2618 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2608 navigation_entry_committed_counter_ = 0; | 2619 navigation_entry_committed_counter_ = 0; |
2609 EXPECT_FALSE(observer.details().is_in_page); | 2620 EXPECT_FALSE(observer.details().is_in_page); |
2610 EXPECT_EQ(3, controller.GetEntryCount()); | 2621 EXPECT_EQ(3, controller.GetEntryCount()); |
2611 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); | 2622 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); |
2612 } | 2623 } |
2613 | 2624 |
2614 TEST_F(NavigationControllerTest, InPage_Replace) { | 2625 TEST_F(NavigationControllerTest, InPage_Replace) { |
(...skipping 16 matching lines...) Expand all Loading... |
2631 params.url = url2; | 2642 params.url = url2; |
2632 params.transition = ui::PAGE_TRANSITION_LINK; | 2643 params.transition = ui::PAGE_TRANSITION_LINK; |
2633 params.should_update_history = false; | 2644 params.should_update_history = false; |
2634 params.gesture = NavigationGestureUser; | 2645 params.gesture = NavigationGestureUser; |
2635 params.is_post = false; | 2646 params.is_post = false; |
2636 params.page_state = PageState::CreateFromURL(url2); | 2647 params.page_state = PageState::CreateFromURL(url2); |
2637 params.was_within_same_page = true; | 2648 params.was_within_same_page = true; |
2638 | 2649 |
2639 // This should NOT generate a new entry, nor prune the list. | 2650 // This should NOT generate a new entry, nor prune the list. |
2640 LoadCommittedDetailsObserver observer(contents()); | 2651 LoadCommittedDetailsObserver observer(contents()); |
| 2652 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false); |
2641 main_test_rfh()->PrepareForCommit(); | 2653 main_test_rfh()->PrepareForCommit(); |
2642 main_test_rfh()->SendNavigateWithParams(¶ms); | 2654 main_test_rfh()->SendNavigateWithParams(¶ms); |
2643 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2655 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2644 navigation_entry_committed_counter_ = 0; | 2656 navigation_entry_committed_counter_ = 0; |
2645 EXPECT_TRUE(observer.details().is_in_page); | 2657 EXPECT_TRUE(observer.details().is_in_page); |
2646 EXPECT_TRUE(observer.details().did_replace_entry); | 2658 EXPECT_TRUE(observer.details().did_replace_entry); |
2647 EXPECT_EQ(1, controller.GetEntryCount()); | 2659 EXPECT_EQ(1, controller.GetEntryCount()); |
2648 } | 2660 } |
2649 | 2661 |
2650 // Tests for http://crbug.com/40395 | 2662 // Tests for http://crbug.com/40395 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2685 params.transition = ui::PAGE_TRANSITION_LINK; | 2697 params.transition = ui::PAGE_TRANSITION_LINK; |
2686 params.redirects.push_back(url); | 2698 params.redirects.push_back(url); |
2687 params.should_update_history = true; | 2699 params.should_update_history = true; |
2688 params.gesture = NavigationGestureUnknown; | 2700 params.gesture = NavigationGestureUnknown; |
2689 params.is_post = false; | 2701 params.is_post = false; |
2690 params.page_state = PageState::CreateFromURL(url); | 2702 params.page_state = PageState::CreateFromURL(url); |
2691 params.was_within_same_page = true; | 2703 params.was_within_same_page = true; |
2692 | 2704 |
2693 // This should NOT generate a new entry, nor prune the list. | 2705 // This should NOT generate a new entry, nor prune the list. |
2694 LoadCommittedDetailsObserver observer(contents()); | 2706 LoadCommittedDetailsObserver observer(contents()); |
| 2707 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
2695 main_test_rfh()->PrepareForCommit(); | 2708 main_test_rfh()->PrepareForCommit(); |
2696 main_test_rfh()->SendNavigateWithParams(¶ms); | 2709 main_test_rfh()->SendNavigateWithParams(¶ms); |
2697 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2710 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2698 navigation_entry_committed_counter_ = 0; | 2711 navigation_entry_committed_counter_ = 0; |
2699 EXPECT_TRUE(observer.details().is_in_page); | 2712 EXPECT_TRUE(observer.details().is_in_page); |
2700 EXPECT_TRUE(observer.details().did_replace_entry); | 2713 EXPECT_TRUE(observer.details().did_replace_entry); |
2701 EXPECT_EQ(2, controller.GetEntryCount()); | 2714 EXPECT_EQ(2, controller.GetEntryCount()); |
2702 } | 2715 } |
2703 | 2716 |
2704 // Perform a client redirect to a new page. | 2717 // Perform a client redirect to a new page. |
2705 { | 2718 { |
2706 const GURL url("http://foo3/"); | 2719 const GURL url("http://foo3/"); |
2707 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2720 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2708 params.page_id = 2; // New page_id | 2721 params.page_id = 2; // New page_id |
2709 params.nav_entry_id = 0; | 2722 params.nav_entry_id = 0; |
2710 params.did_create_new_entry = true; | 2723 params.did_create_new_entry = true; |
2711 params.url = url; | 2724 params.url = url; |
2712 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; | 2725 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; |
2713 params.redirects.push_back(GURL("http://foo2/#a")); | 2726 params.redirects.push_back(GURL("http://foo2/#a")); |
2714 params.redirects.push_back(url); | 2727 params.redirects.push_back(url); |
2715 params.should_update_history = true; | 2728 params.should_update_history = true; |
2716 params.gesture = NavigationGestureUnknown; | 2729 params.gesture = NavigationGestureUnknown; |
2717 params.is_post = false; | 2730 params.is_post = false; |
2718 params.page_state = PageState::CreateFromURL(url); | 2731 params.page_state = PageState::CreateFromURL(url); |
2719 | 2732 |
2720 // This SHOULD generate a new entry. | 2733 // This SHOULD generate a new entry. |
2721 LoadCommittedDetailsObserver observer(contents()); | 2734 LoadCommittedDetailsObserver observer(contents()); |
| 2735 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
2722 main_test_rfh()->PrepareForCommit(); | 2736 main_test_rfh()->PrepareForCommit(); |
2723 main_test_rfh()->SendNavigateWithParams(¶ms); | 2737 main_test_rfh()->SendNavigateWithParams(¶ms); |
2724 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2738 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2725 navigation_entry_committed_counter_ = 0; | 2739 navigation_entry_committed_counter_ = 0; |
2726 EXPECT_FALSE(observer.details().is_in_page); | 2740 EXPECT_FALSE(observer.details().is_in_page); |
2727 EXPECT_EQ(3, controller.GetEntryCount()); | 2741 EXPECT_EQ(3, controller.GetEntryCount()); |
2728 } | 2742 } |
2729 | 2743 |
2730 // Verify that BACK brings us back to http://foo2/. | 2744 // Verify that BACK brings us back to http://foo2/. |
2731 { | 2745 { |
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3799 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 3813 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
3800 params.page_id = 0; | 3814 params.page_id = 0; |
3801 params.nav_entry_id = 0; | 3815 params.nav_entry_id = 0; |
3802 params.did_create_new_entry = false; | 3816 params.did_create_new_entry = false; |
3803 params.url = subframe_url; | 3817 params.url = subframe_url; |
3804 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3818 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
3805 params.should_update_history = false; | 3819 params.should_update_history = false; |
3806 params.gesture = NavigationGestureAuto; | 3820 params.gesture = NavigationGestureAuto; |
3807 params.is_post = false; | 3821 params.is_post = false; |
3808 params.page_state = PageState::CreateFromURL(subframe_url); | 3822 params.page_state = PageState::CreateFromURL(subframe_url); |
| 3823 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); |
3809 subframe->PrepareForCommit(); | 3824 subframe->PrepareForCommit(); |
3810 subframe->SendNavigateWithParams(¶ms); | 3825 subframe->SendNavigateWithParams(¶ms); |
3811 | 3826 |
3812 // Nothing should have changed. | 3827 // Nothing should have changed. |
3813 EXPECT_EQ(controller.GetEntryCount(), 1); | 3828 EXPECT_EQ(controller.GetEntryCount(), 1); |
3814 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 3829 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); |
3815 } | 3830 } |
3816 | 3831 |
3817 // Make sure that on cloning a WebContentsImpl and going back needs_reload is | 3832 // Make sure that on cloning a WebContentsImpl and going back needs_reload is |
3818 // false. | 3833 // false. |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3968 params.nav_entry_id = 0; | 3983 params.nav_entry_id = 0; |
3969 params.did_create_new_entry = false; | 3984 params.did_create_new_entry = false; |
3970 params.url = url1_sub; | 3985 params.url = url1_sub; |
3971 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3986 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
3972 params.should_update_history = false; | 3987 params.should_update_history = false; |
3973 params.gesture = NavigationGestureAuto; | 3988 params.gesture = NavigationGestureAuto; |
3974 params.is_post = false; | 3989 params.is_post = false; |
3975 params.page_state = PageState::CreateFromURL(url1_sub); | 3990 params.page_state = PageState::CreateFromURL(url1_sub); |
3976 | 3991 |
3977 // This should return false meaning that nothing was actually updated. | 3992 // This should return false meaning that nothing was actually updated. |
| 3993 subframe->SendRendererInitiatedNavigationRequest(url1_sub, false); |
3978 subframe->PrepareForCommit(); | 3994 subframe->PrepareForCommit(); |
3979 subframe->SendNavigateWithParams(¶ms); | 3995 subframe->SendNavigateWithParams(¶ms); |
3980 | 3996 |
3981 // The notification should have updated the last committed one, and not | 3997 // The notification should have updated the last committed one, and not |
3982 // the pending load. | 3998 // the pending load. |
3983 EXPECT_EQ(url1, controller.GetLastCommittedEntry()->GetURL()); | 3999 EXPECT_EQ(url1, controller.GetLastCommittedEntry()->GetURL()); |
3984 | 4000 |
3985 // The active entry should be unchanged by the subframe load. | 4001 // The active entry should be unchanged by the subframe load. |
3986 EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL()); | 4002 EXPECT_EQ(url2, controller.GetVisibleEntry()->GetURL()); |
3987 } | 4003 } |
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5046 params.gesture = NavigationGestureUser; | 5062 params.gesture = NavigationGestureUser; |
5047 params.page_state = PageState::CreateFromURL(url); | 5063 params.page_state = PageState::CreateFromURL(url); |
5048 params.was_within_same_page = false; | 5064 params.was_within_same_page = false; |
5049 params.is_post = true; | 5065 params.is_post = true; |
5050 params.post_id = 2; | 5066 params.post_id = 2; |
5051 params.url_is_unreachable = true; | 5067 params.url_is_unreachable = true; |
5052 | 5068 |
5053 // Navigate to new page. | 5069 // Navigate to new page. |
5054 { | 5070 { |
5055 LoadCommittedDetailsObserver observer(contents()); | 5071 LoadCommittedDetailsObserver observer(contents()); |
| 5072 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
5056 main_test_rfh()->PrepareForCommit(); | 5073 main_test_rfh()->PrepareForCommit(); |
5057 main_test_rfh()->SendNavigateWithParams(¶ms); | 5074 main_test_rfh()->SendNavigateWithParams(¶ms); |
5058 EXPECT_EQ(PAGE_TYPE_ERROR, | 5075 EXPECT_EQ(PAGE_TYPE_ERROR, |
5059 controller_impl().GetLastCommittedEntry()->GetPageType()); | 5076 controller_impl().GetLastCommittedEntry()->GetPageType()); |
5060 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, observer.details().type); | 5077 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, observer.details().type); |
5061 } | 5078 } |
5062 | 5079 |
5063 // Navigate to existing page. | 5080 // Navigate to existing page. |
5064 { | 5081 { |
5065 params.did_create_new_entry = false; | 5082 params.did_create_new_entry = false; |
5066 LoadCommittedDetailsObserver observer(contents()); | 5083 LoadCommittedDetailsObserver observer(contents()); |
| 5084 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); |
5067 main_test_rfh()->PrepareForCommit(); | 5085 main_test_rfh()->PrepareForCommit(); |
5068 main_test_rfh()->SendNavigateWithParams(¶ms); | 5086 main_test_rfh()->SendNavigateWithParams(¶ms); |
5069 EXPECT_EQ(PAGE_TYPE_ERROR, | 5087 EXPECT_EQ(PAGE_TYPE_ERROR, |
5070 controller_impl().GetLastCommittedEntry()->GetPageType()); | 5088 controller_impl().GetLastCommittedEntry()->GetPageType()); |
5071 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type); | 5089 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.details().type); |
5072 } | 5090 } |
5073 | 5091 |
5074 // Navigate to same page. | 5092 // Navigate to same page. |
5075 // Note: The call to LoadURL() creates a pending entry in order to trigger the | 5093 // Note: The call to LoadURL() creates a pending entry in order to trigger the |
5076 // same-page transition. | 5094 // same-page transition. |
5077 controller_impl().LoadURL( | 5095 controller_impl().LoadURL( |
5078 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 5096 url, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
5079 params.nav_entry_id = controller_impl().GetPendingEntry()->GetUniqueID(); | 5097 params.nav_entry_id = controller_impl().GetPendingEntry()->GetUniqueID(); |
5080 params.transition = ui::PAGE_TRANSITION_TYPED; | 5098 params.transition = ui::PAGE_TRANSITION_TYPED; |
5081 { | 5099 { |
5082 LoadCommittedDetailsObserver observer(contents()); | 5100 LoadCommittedDetailsObserver observer(contents()); |
5083 main_test_rfh()->PrepareForCommit(); | 5101 main_test_rfh()->PrepareForCommit(); |
5084 main_test_rfh()->SendNavigateWithParams(¶ms); | 5102 main_test_rfh()->SendNavigateWithParams(¶ms); |
5085 EXPECT_EQ(PAGE_TYPE_ERROR, | 5103 EXPECT_EQ(PAGE_TYPE_ERROR, |
5086 controller_impl().GetLastCommittedEntry()->GetPageType()); | 5104 controller_impl().GetLastCommittedEntry()->GetPageType()); |
5087 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type); | 5105 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, observer.details().type); |
5088 } | 5106 } |
5089 | 5107 |
5090 // Navigate in page. | 5108 // Navigate in page. |
5091 params.url = GURL("http://foo#foo"); | 5109 params.url = GURL("http://foo#foo"); |
5092 params.transition = ui::PAGE_TRANSITION_LINK; | 5110 params.transition = ui::PAGE_TRANSITION_LINK; |
5093 params.was_within_same_page = true; | 5111 params.was_within_same_page = true; |
5094 { | 5112 { |
5095 LoadCommittedDetailsObserver observer(contents()); | 5113 LoadCommittedDetailsObserver observer(contents()); |
| 5114 main_test_rfh()->SendRendererInitiatedNavigationRequest(params.url, false); |
5096 main_test_rfh()->PrepareForCommit(); | 5115 main_test_rfh()->PrepareForCommit(); |
5097 main_test_rfh()->SendNavigateWithParams(¶ms); | 5116 main_test_rfh()->SendNavigateWithParams(¶ms); |
5098 EXPECT_EQ(PAGE_TYPE_ERROR, | 5117 EXPECT_EQ(PAGE_TYPE_ERROR, |
5099 controller_impl().GetLastCommittedEntry()->GetPageType()); | 5118 controller_impl().GetLastCommittedEntry()->GetPageType()); |
5100 EXPECT_TRUE(observer.details().is_in_page); | 5119 EXPECT_TRUE(observer.details().is_in_page); |
5101 } | 5120 } |
5102 } | 5121 } |
5103 | 5122 |
5104 // Tests that if a stale navigation comes back from the renderer, it is properly | 5123 // Tests that if a stale navigation comes back from the renderer, it is properly |
5105 // resurrected. | 5124 // resurrected. |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5201 EXPECT_EQ(default_ssl_status.content_status, | 5220 EXPECT_EQ(default_ssl_status.content_status, |
5202 observer.details().ssl_status.content_status); | 5221 observer.details().ssl_status.content_status); |
5203 EXPECT_EQ( | 5222 EXPECT_EQ( |
5204 0u, | 5223 0u, |
5205 observer.details().ssl_status.signed_certificate_timestamp_ids.size()); | 5224 observer.details().ssl_status.signed_certificate_timestamp_ids.size()); |
5206 | 5225 |
5207 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count()); | 5226 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count()); |
5208 } | 5227 } |
5209 | 5228 |
5210 } // namespace content | 5229 } // namespace content |
OLD | NEW |