| 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 |