Chromium Code Reviews| 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 |