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 2095 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2106 | 2106 |
2107 // Prereq: add a subframe with an initial auto-subframe navigation. | 2107 // Prereq: add a subframe with an initial auto-subframe navigation. |
2108 main_test_rfh()->OnCreateChildFrame( | 2108 main_test_rfh()->OnCreateChildFrame( |
2109 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2109 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2110 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 2110 std::string(), "uniqueName0", blink::WebSandboxFlags::None, |
2111 blink::WebFrameOwnerProperties()); | 2111 blink::WebFrameOwnerProperties()); |
2112 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2112 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2113 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2113 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2114 const GURL subframe_url("http://foo1/subframe"); | 2114 const GURL subframe_url("http://foo1/subframe"); |
2115 { | 2115 { |
2116 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); | |
2116 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2117 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2117 params.page_id = 1; | 2118 params.page_id = 1; |
2118 params.nav_entry_id = 0; | 2119 params.nav_entry_id = 0; |
2119 params.did_create_new_entry = false; | 2120 params.did_create_new_entry = false; |
2120 params.url = subframe_url; | 2121 params.url = subframe_url; |
2121 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2122 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2122 params.should_update_history = false; | 2123 params.should_update_history = false; |
2123 params.gesture = NavigationGestureUser; | 2124 params.gesture = NavigationGestureUser; |
2124 params.is_post = false; | 2125 params.is_post = false; |
2125 params.page_state = PageState::CreateFromURL(subframe_url); | 2126 params.page_state = PageState::CreateFromURL(subframe_url); |
2126 | 2127 |
2127 // Navigating should do nothing. | 2128 // Navigating should do nothing. |
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"); |
2136 subframe->SendRendererInitiatedNavigationRequest(url2, true); | |
2135 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2137 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2136 params.page_id = 2; | 2138 params.page_id = 2; |
2137 params.nav_entry_id = 0; | 2139 params.nav_entry_id = 0; |
2138 params.did_create_new_entry = true; | 2140 params.did_create_new_entry = true; |
2139 params.url = url2; | 2141 params.url = url2; |
2140 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2142 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2141 params.should_update_history = false; | 2143 params.should_update_history = false; |
2142 params.gesture = NavigationGestureUser; | 2144 params.gesture = NavigationGestureUser; |
2143 params.is_post = false; | 2145 params.is_post = false; |
2144 params.page_state = PageState::CreateFromURL(url2); | 2146 params.page_state = PageState::CreateFromURL(url2); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2188 | 2190 |
2189 // Add a subframe and navigate it. | 2191 // Add a subframe and navigate it. |
2190 main_test_rfh()->OnCreateChildFrame( | 2192 main_test_rfh()->OnCreateChildFrame( |
2191 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2193 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2192 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 2194 std::string(), "uniqueName0", blink::WebSandboxFlags::None, |
2193 blink::WebFrameOwnerProperties()); | 2195 blink::WebFrameOwnerProperties()); |
2194 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2196 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2195 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2197 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2196 const GURL url2("http://foo/2"); | 2198 const GURL url2("http://foo/2"); |
2197 { | 2199 { |
2200 subframe->SendRendererInitiatedNavigationRequest(url2, false); | |
2198 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2201 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2199 params.page_id = 1; | 2202 params.page_id = 1; |
2200 params.nav_entry_id = 0; | 2203 params.nav_entry_id = 0; |
2201 params.did_create_new_entry = false; | 2204 params.did_create_new_entry = false; |
2202 params.url = url2; | 2205 params.url = url2; |
2203 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2206 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2204 params.should_update_history = false; | 2207 params.should_update_history = false; |
2205 params.gesture = NavigationGestureUser; | 2208 params.gesture = NavigationGestureUser; |
2206 params.is_post = false; | 2209 params.is_post = false; |
2207 params.page_state = PageState::CreateFromURL(url2); | 2210 params.page_state = PageState::CreateFromURL(url2); |
(...skipping 26 matching lines...) Expand all Loading... | |
2234 | 2237 |
2235 // Add a second subframe and navigate. | 2238 // Add a second subframe and navigate. |
2236 main_test_rfh()->OnCreateChildFrame( | 2239 main_test_rfh()->OnCreateChildFrame( |
2237 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2240 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2238 std::string(), "uniqueName1", blink::WebSandboxFlags::None, | 2241 std::string(), "uniqueName1", blink::WebSandboxFlags::None, |
2239 blink::WebFrameOwnerProperties()); | 2242 blink::WebFrameOwnerProperties()); |
2240 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( | 2243 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( |
2241 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); | 2244 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); |
2242 const GURL url3("http://foo/3"); | 2245 const GURL url3("http://foo/3"); |
2243 { | 2246 { |
2247 subframe2->SendRendererInitiatedNavigationRequest(url3, false); | |
2244 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2248 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2245 params.page_id = 1; | 2249 params.page_id = 1; |
2246 params.nav_entry_id = 0; | 2250 params.nav_entry_id = 0; |
2247 params.did_create_new_entry = false; | 2251 params.did_create_new_entry = false; |
2248 params.url = url3; | 2252 params.url = url3; |
2249 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2253 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2250 params.should_update_history = false; | 2254 params.should_update_history = false; |
2251 params.gesture = NavigationGestureUser; | 2255 params.gesture = NavigationGestureUser; |
2252 params.is_post = false; | 2256 params.is_post = false; |
2253 params.page_state = PageState::CreateFromURL(url3); | 2257 params.page_state = PageState::CreateFromURL(url3); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2285 blink::WebFrameOwnerProperties()); | 2289 blink::WebFrameOwnerProperties()); |
2286 TestRenderFrameHost* subframe3 = | 2290 TestRenderFrameHost* subframe3 = |
2287 static_cast<TestRenderFrameHost*>(contents() | 2291 static_cast<TestRenderFrameHost*>(contents() |
2288 ->GetFrameTree() | 2292 ->GetFrameTree() |
2289 ->root() | 2293 ->root() |
2290 ->child_at(0) | 2294 ->child_at(0) |
2291 ->child_at(0) | 2295 ->child_at(0) |
2292 ->current_frame_host()); | 2296 ->current_frame_host()); |
2293 const GURL url4("http://foo/4"); | 2297 const GURL url4("http://foo/4"); |
2294 { | 2298 { |
2299 subframe3->SendRendererInitiatedNavigationRequest(url4, false); | |
2295 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2300 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2296 params.page_id = 1; | 2301 params.page_id = 1; |
2297 params.nav_entry_id = 0; | 2302 params.nav_entry_id = 0; |
2298 params.did_create_new_entry = false; | 2303 params.did_create_new_entry = false; |
2299 params.url = url4; | 2304 params.url = url4; |
2300 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2305 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2301 params.should_update_history = false; | 2306 params.should_update_history = false; |
2302 params.gesture = NavigationGestureUser; | 2307 params.gesture = NavigationGestureUser; |
2303 params.is_post = false; | 2308 params.is_post = false; |
2304 params.page_state = PageState::CreateFromURL(url4); | 2309 params.page_state = PageState::CreateFromURL(url4); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2346 | 2351 |
2347 // Prereq: add a subframe with an initial auto-subframe navigation. | 2352 // Prereq: add a subframe with an initial auto-subframe navigation. |
2348 main_test_rfh()->OnCreateChildFrame( | 2353 main_test_rfh()->OnCreateChildFrame( |
2349 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2354 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2350 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 2355 std::string(), "uniqueName0", blink::WebSandboxFlags::None, |
2351 blink::WebFrameOwnerProperties()); | 2356 blink::WebFrameOwnerProperties()); |
2352 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2357 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2353 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2358 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2354 const GURL subframe_url("http://foo1/subframe"); | 2359 const GURL subframe_url("http://foo1/subframe"); |
2355 { | 2360 { |
2361 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); | |
2356 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2362 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2357 params.page_id = 1; | 2363 params.page_id = 1; |
2358 params.nav_entry_id = 0; | 2364 params.nav_entry_id = 0; |
2359 params.did_create_new_entry = false; | 2365 params.did_create_new_entry = false; |
2360 params.url = subframe_url; | 2366 params.url = subframe_url; |
2361 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2367 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2362 params.should_update_history = false; | 2368 params.should_update_history = false; |
2363 params.gesture = NavigationGestureUser; | 2369 params.gesture = NavigationGestureUser; |
2364 params.is_post = false; | 2370 params.is_post = false; |
2365 params.page_state = PageState::CreateFromURL(subframe_url); | 2371 params.page_state = PageState::CreateFromURL(subframe_url); |
(...skipping 11 matching lines...) Expand all Loading... | |
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); | |
Charlie Reis
2016/03/16 17:08:41
Why are some of these before the params declaratio
clamy
2016/03/17 13:27:17
Done.
| |
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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2496 RegisterForAllNavNotifications(¬ifications, &controller); | 2504 RegisterForAllNavNotifications(¬ifications, &controller); |
2497 | 2505 |
2498 // Main page. | 2506 // Main page. |
2499 const GURL url1("http://foo"); | 2507 const GURL url1("http://foo"); |
2500 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1); | 2508 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1); |
2501 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2509 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2502 navigation_entry_committed_counter_ = 0; | 2510 navigation_entry_committed_counter_ = 0; |
2503 | 2511 |
2504 // Ensure main page navigation to same url respects the was_within_same_page | 2512 // Ensure main page navigation to same url respects the was_within_same_page |
2505 // hint provided in the params. | 2513 // hint provided in the params. |
2514 main_test_rfh()->SendRendererInitiatedNavigationRequest(url1, false); | |
2506 FrameHostMsg_DidCommitProvisionalLoad_Params self_params; | 2515 FrameHostMsg_DidCommitProvisionalLoad_Params self_params; |
2507 self_params.page_id = 0; | 2516 self_params.page_id = 0; |
2508 self_params.nav_entry_id = 0; | 2517 self_params.nav_entry_id = 0; |
2509 self_params.did_create_new_entry = false; | 2518 self_params.did_create_new_entry = false; |
2510 self_params.url = url1; | 2519 self_params.url = url1; |
2511 self_params.transition = ui::PAGE_TRANSITION_LINK; | 2520 self_params.transition = ui::PAGE_TRANSITION_LINK; |
2512 self_params.should_update_history = false; | 2521 self_params.should_update_history = false; |
2513 self_params.gesture = NavigationGestureUser; | 2522 self_params.gesture = NavigationGestureUser; |
2514 self_params.is_post = false; | 2523 self_params.is_post = false; |
2515 self_params.page_state = PageState::CreateFromURL(url1); | 2524 self_params.page_state = PageState::CreateFromURL(url1); |
2516 self_params.was_within_same_page = true; | 2525 self_params.was_within_same_page = true; |
2517 | 2526 |
2518 LoadCommittedDetailsObserver observer(contents()); | 2527 LoadCommittedDetailsObserver observer(contents()); |
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"); |
2539 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false); | |
2530 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2540 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2531 params.page_id = 1; | 2541 params.page_id = 1; |
2532 params.nav_entry_id = 0; | 2542 params.nav_entry_id = 0; |
2533 params.did_create_new_entry = true; | 2543 params.did_create_new_entry = true; |
2534 params.url = url2; | 2544 params.url = url2; |
2535 params.transition = ui::PAGE_TRANSITION_LINK; | 2545 params.transition = ui::PAGE_TRANSITION_LINK; |
2536 params.should_update_history = false; | 2546 params.should_update_history = false; |
2537 params.gesture = NavigationGestureUser; | 2547 params.gesture = NavigationGestureUser; |
2538 params.is_post = false; | 2548 params.is_post = false; |
2539 params.page_state = PageState::CreateFromURL(url2); | 2549 params.page_state = PageState::CreateFromURL(url2); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2590 main_test_rfh()->PrepareForCommit(); | 2600 main_test_rfh()->PrepareForCommit(); |
2591 main_test_rfh()->SendNavigateWithParams(&back_params); | 2601 main_test_rfh()->SendNavigateWithParams(&back_params); |
2592 controller.GoForward(); | 2602 controller.GoForward(); |
2593 main_test_rfh()->PrepareForCommit(); | 2603 main_test_rfh()->PrepareForCommit(); |
2594 main_test_rfh()->SendNavigateWithParams(&forward_params); | 2604 main_test_rfh()->SendNavigateWithParams(&forward_params); |
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"); |
2610 main_test_rfh()->SendRendererInitiatedNavigationRequest(url3, false); | |
2600 params.page_id = 2; | 2611 params.page_id = 2; |
2601 params.nav_entry_id = 0; | 2612 params.nav_entry_id = 0; |
2602 params.did_create_new_entry = true; | 2613 params.did_create_new_entry = true; |
2603 params.url = url3; | 2614 params.url = url3; |
2604 navigation_entry_committed_counter_ = 0; | 2615 navigation_entry_committed_counter_ = 0; |
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) { |
2615 NavigationControllerImpl& controller = controller_impl(); | 2626 NavigationControllerImpl& controller = controller_impl(); |
2616 TestNotificationTracker notifications; | 2627 TestNotificationTracker notifications; |
2617 RegisterForAllNavNotifications(¬ifications, &controller); | 2628 RegisterForAllNavNotifications(¬ifications, &controller); |
2618 | 2629 |
2619 // Main page. | 2630 // Main page. |
2620 const GURL url1("http://foo"); | 2631 const GURL url1("http://foo"); |
2621 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1); | 2632 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url1); |
2622 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2633 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2623 navigation_entry_committed_counter_ = 0; | 2634 navigation_entry_committed_counter_ = 0; |
2624 | 2635 |
2625 // First navigation. | 2636 // First navigation. |
2626 const GURL url2("http://foo#a"); | 2637 const GURL url2("http://foo#a"); |
2638 main_test_rfh()->SendRendererInitiatedNavigationRequest(url2, false); | |
2627 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2639 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2628 params.page_id = 0; // Same page_id | 2640 params.page_id = 0; // Same page_id |
2629 params.nav_entry_id = 0; | 2641 params.nav_entry_id = 0; |
2630 params.did_create_new_entry = false; | 2642 params.did_create_new_entry = false; |
2631 params.url = url2; | 2643 params.url = url2; |
2632 params.transition = ui::PAGE_TRANSITION_LINK; | 2644 params.transition = ui::PAGE_TRANSITION_LINK; |
2633 params.should_update_history = false; | 2645 params.should_update_history = false; |
2634 params.gesture = NavigationGestureUser; | 2646 params.gesture = NavigationGestureUser; |
2635 params.is_post = false; | 2647 params.is_post = false; |
2636 params.page_state = PageState::CreateFromURL(url2); | 2648 params.page_state = PageState::CreateFromURL(url2); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2670 { | 2682 { |
2671 const GURL url("http://foo2/"); | 2683 const GURL url("http://foo2/"); |
2672 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url); | 2684 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url); |
2673 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2685 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2674 navigation_entry_committed_counter_ = 0; | 2686 navigation_entry_committed_counter_ = 0; |
2675 } | 2687 } |
2676 | 2688 |
2677 // Navigate within the page. | 2689 // Navigate within the page. |
2678 { | 2690 { |
2679 const GURL url("http://foo2/#a"); | 2691 const GURL url("http://foo2/#a"); |
2692 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); | |
2680 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2693 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2681 params.page_id = 1; // Same page_id | 2694 params.page_id = 1; // Same page_id |
2682 params.nav_entry_id = 0; | 2695 params.nav_entry_id = 0; |
2683 params.did_create_new_entry = false; | 2696 params.did_create_new_entry = false; |
2684 params.url = url; | 2697 params.url = url; |
2685 params.transition = ui::PAGE_TRANSITION_LINK; | 2698 params.transition = ui::PAGE_TRANSITION_LINK; |
2686 params.redirects.push_back(url); | 2699 params.redirects.push_back(url); |
2687 params.should_update_history = true; | 2700 params.should_update_history = true; |
2688 params.gesture = NavigationGestureUnknown; | 2701 params.gesture = NavigationGestureUnknown; |
2689 params.is_post = false; | 2702 params.is_post = false; |
2690 params.page_state = PageState::CreateFromURL(url); | 2703 params.page_state = PageState::CreateFromURL(url); |
2691 params.was_within_same_page = true; | 2704 params.was_within_same_page = true; |
2692 | 2705 |
2693 // This should NOT generate a new entry, nor prune the list. | 2706 // This should NOT generate a new entry, nor prune the list. |
2694 LoadCommittedDetailsObserver observer(contents()); | 2707 LoadCommittedDetailsObserver observer(contents()); |
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/"); |
2720 main_test_rfh()->SendRendererInitiatedNavigationRequest(url, false); | |
2707 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2721 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2708 params.page_id = 2; // New page_id | 2722 params.page_id = 2; // New page_id |
2709 params.nav_entry_id = 0; | 2723 params.nav_entry_id = 0; |
2710 params.did_create_new_entry = true; | 2724 params.did_create_new_entry = true; |
2711 params.url = url; | 2725 params.url = url; |
2712 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; | 2726 params.transition = ui::PAGE_TRANSITION_CLIENT_REDIRECT; |
2713 params.redirects.push_back(GURL("http://foo2/#a")); | 2727 params.redirects.push_back(GURL("http://foo2/#a")); |
2714 params.redirects.push_back(url); | 2728 params.redirects.push_back(url); |
2715 params.should_update_history = true; | 2729 params.should_update_history = true; |
2716 params.gesture = NavigationGestureUnknown; | 2730 params.gesture = NavigationGestureUnknown; |
(...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3789 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 3803 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); |
3790 | 3804 |
3791 // Add and navigate a subframe that would normally count as in-page. | 3805 // Add and navigate a subframe that would normally count as in-page. |
3792 main_test_rfh()->OnCreateChildFrame( | 3806 main_test_rfh()->OnCreateChildFrame( |
3793 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 3807 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
3794 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 3808 std::string(), "uniqueName0", blink::WebSandboxFlags::None, |
3795 blink::WebFrameOwnerProperties()); | 3809 blink::WebFrameOwnerProperties()); |
3796 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 3810 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
3797 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 3811 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
3798 const GURL subframe_url("http://www.google.com/#"); | 3812 const GURL subframe_url("http://www.google.com/#"); |
3813 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); | |
3799 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 3814 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
3800 params.page_id = 0; | 3815 params.page_id = 0; |
3801 params.nav_entry_id = 0; | 3816 params.nav_entry_id = 0; |
3802 params.did_create_new_entry = false; | 3817 params.did_create_new_entry = false; |
3803 params.url = subframe_url; | 3818 params.url = subframe_url; |
3804 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3819 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
3805 params.should_update_history = false; | 3820 params.should_update_history = false; |
3806 params.gesture = NavigationGestureAuto; | 3821 params.gesture = NavigationGestureAuto; |
3807 params.is_post = false; | 3822 params.is_post = false; |
3808 params.page_state = PageState::CreateFromURL(subframe_url); | 3823 params.page_state = PageState::CreateFromURL(subframe_url); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3956 | 3971 |
3957 // Send a subframe update from the first page, as if one had just | 3972 // Send a subframe update from the first page, as if one had just |
3958 // automatically loaded. Auto subframes don't increment the page ID. | 3973 // automatically loaded. Auto subframes don't increment the page ID. |
3959 main_test_rfh()->OnCreateChildFrame( | 3974 main_test_rfh()->OnCreateChildFrame( |
3960 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 3975 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
3961 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 3976 std::string(), "uniqueName0", blink::WebSandboxFlags::None, |
3962 blink::WebFrameOwnerProperties()); | 3977 blink::WebFrameOwnerProperties()); |
3963 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 3978 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
3964 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 3979 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
3965 const GURL url1_sub("http://foo/subframe"); | 3980 const GURL url1_sub("http://foo/subframe"); |
3981 subframe->SendRendererInitiatedNavigationRequest(url1_sub, false); | |
3966 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 3982 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
3967 params.page_id = controller.GetLastCommittedEntry()->GetPageID(); | 3983 params.page_id = controller.GetLastCommittedEntry()->GetPageID(); |
3968 params.nav_entry_id = 0; | 3984 params.nav_entry_id = 0; |
3969 params.did_create_new_entry = false; | 3985 params.did_create_new_entry = false; |
3970 params.url = url1_sub; | 3986 params.url = url1_sub; |
3971 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3987 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
3972 params.should_update_history = false; | 3988 params.should_update_history = false; |
3973 params.gesture = NavigationGestureAuto; | 3989 params.gesture = NavigationGestureAuto; |
3974 params.is_post = false; | 3990 params.is_post = false; |
3975 params.page_state = PageState::CreateFromURL(url1_sub); | 3991 params.page_state = PageState::CreateFromURL(url1_sub); |
(...skipping 1070 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 |