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 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 2158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2169 NavigationControllerImpl& controller = controller_impl(); | 2169 NavigationControllerImpl& controller = controller_impl(); |
2170 TestNotificationTracker notifications; | 2170 TestNotificationTracker notifications; |
2171 RegisterForAllNavNotifications(¬ifications, &controller); | 2171 RegisterForAllNavNotifications(¬ifications, &controller); |
2172 | 2172 |
2173 const GURL url1("http://foo1"); | 2173 const GURL url1("http://foo1"); |
2174 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url1); | 2174 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url1); |
2175 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2175 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2176 navigation_entry_committed_counter_ = 0; | 2176 navigation_entry_committed_counter_ = 0; |
2177 | 2177 |
2178 // Prereq: add a subframe with an initial auto-subframe navigation. | 2178 // Prereq: add a subframe with an initial auto-subframe navigation. |
2179 std::string unique_name("uniqueName0"); | |
Charlie Reis
2016/04/27 19:12:57
Had to clean these unit tests up now that we solel
| |
2179 main_test_rfh()->OnCreateChildFrame( | 2180 main_test_rfh()->OnCreateChildFrame( |
2180 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2181 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2181 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 2182 std::string(), unique_name, blink::WebSandboxFlags::None, |
2182 blink::WebFrameOwnerProperties()); | 2183 blink::WebFrameOwnerProperties()); |
2183 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2184 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2184 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2185 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2185 const GURL subframe_url("http://foo1/subframe"); | 2186 const GURL subframe_url("http://foo1/subframe"); |
2186 { | 2187 { |
2187 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2188 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2188 params.page_id = 1; | 2189 params.page_id = 1; |
2189 params.nav_entry_id = 0; | 2190 params.nav_entry_id = 0; |
2191 params.frame_unique_name = unique_name; | |
2190 params.did_create_new_entry = false; | 2192 params.did_create_new_entry = false; |
2191 params.url = subframe_url; | 2193 params.url = subframe_url; |
2192 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2194 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2193 params.should_update_history = false; | 2195 params.should_update_history = false; |
2194 params.gesture = NavigationGestureUser; | 2196 params.gesture = NavigationGestureUser; |
2195 params.method = "GET"; | 2197 params.method = "GET"; |
2196 params.page_state = PageState::CreateFromURL(subframe_url); | 2198 params.page_state = PageState::CreateFromURL(subframe_url); |
2197 | 2199 |
2198 // Navigating should do nothing. | 2200 // Navigating should do nothing. |
2199 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); | 2201 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); |
2200 subframe->PrepareForCommit(); | 2202 subframe->PrepareForCommit(); |
2201 subframe->SendNavigateWithParams(¶ms); | 2203 subframe->SendNavigateWithParams(¶ms); |
2202 EXPECT_EQ(0U, notifications.size()); | 2204 EXPECT_EQ(0U, notifications.size()); |
2203 } | 2205 } |
2204 | 2206 |
2205 // Now do a new navigation in the frame. | 2207 // Now do a new navigation in the frame. |
2206 const GURL url2("http://foo2"); | 2208 const GURL url2("http://foo2"); |
2207 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2209 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2208 params.page_id = 2; | 2210 params.page_id = 2; |
2209 params.nav_entry_id = 0; | 2211 params.nav_entry_id = 0; |
2212 params.frame_unique_name = unique_name; | |
2210 params.did_create_new_entry = true; | 2213 params.did_create_new_entry = true; |
2211 params.url = url2; | 2214 params.url = url2; |
2212 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2215 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2213 params.should_update_history = false; | 2216 params.should_update_history = false; |
2214 params.gesture = NavigationGestureUser; | 2217 params.gesture = NavigationGestureUser; |
2215 params.method = "GET"; | 2218 params.method = "GET"; |
2216 params.page_state = PageState::CreateFromURL(url2); | 2219 params.page_state = PageState::CreateFromURL(url2); |
2217 | 2220 |
2218 LoadCommittedDetailsObserver observer(contents()); | 2221 LoadCommittedDetailsObserver observer(contents()); |
2219 subframe->SendRendererInitiatedNavigationRequest(url2, true); | 2222 subframe->SendRendererInitiatedNavigationRequest(url2, true); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2253 NavigationControllerImpl& controller = controller_impl(); | 2256 NavigationControllerImpl& controller = controller_impl(); |
2254 TestNotificationTracker notifications; | 2257 TestNotificationTracker notifications; |
2255 RegisterForAllNavNotifications(¬ifications, &controller); | 2258 RegisterForAllNavNotifications(¬ifications, &controller); |
2256 | 2259 |
2257 const GURL url1("http://foo/1"); | 2260 const GURL url1("http://foo/1"); |
2258 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url1); | 2261 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url1); |
2259 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2262 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2260 navigation_entry_committed_counter_ = 0; | 2263 navigation_entry_committed_counter_ = 0; |
2261 | 2264 |
2262 // Add a subframe and navigate it. | 2265 // Add a subframe and navigate it. |
2266 std::string unique_name0("uniqueName0"); | |
2263 main_test_rfh()->OnCreateChildFrame( | 2267 main_test_rfh()->OnCreateChildFrame( |
2264 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2268 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2265 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 2269 std::string(), unique_name0, blink::WebSandboxFlags::None, |
2266 blink::WebFrameOwnerProperties()); | 2270 blink::WebFrameOwnerProperties()); |
2267 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2271 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2268 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2272 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2269 const GURL url2("http://foo/2"); | 2273 const GURL url2("http://foo/2"); |
2270 { | 2274 { |
2271 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2275 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2272 params.page_id = 1; | 2276 params.page_id = 1; |
2273 params.nav_entry_id = 0; | 2277 params.nav_entry_id = 0; |
2278 params.frame_unique_name = unique_name0; | |
2274 params.did_create_new_entry = false; | 2279 params.did_create_new_entry = false; |
2275 params.url = url2; | 2280 params.url = url2; |
2276 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2281 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2277 params.should_update_history = false; | 2282 params.should_update_history = false; |
2278 params.gesture = NavigationGestureUser; | 2283 params.gesture = NavigationGestureUser; |
2279 params.method = "GET"; | 2284 params.method = "GET"; |
2280 params.page_state = PageState::CreateFromURL(url2); | 2285 params.page_state = PageState::CreateFromURL(url2); |
2281 | 2286 |
2282 // Navigating should do nothing. | 2287 // Navigating should do nothing. |
2283 subframe->SendRendererInitiatedNavigationRequest(url2, false); | 2288 subframe->SendRendererInitiatedNavigationRequest(url2, false); |
(...skipping 16 matching lines...) Expand all Loading... | |
2300 ASSERT_EQ(1U, entry->root_node()->children.size()); | 2305 ASSERT_EQ(1U, entry->root_node()->children.size()); |
2301 FrameNavigationEntry* frame_entry = | 2306 FrameNavigationEntry* frame_entry = |
2302 entry->root_node()->children[0]->frame_entry.get(); | 2307 entry->root_node()->children[0]->frame_entry.get(); |
2303 EXPECT_EQ(url2, frame_entry->url()); | 2308 EXPECT_EQ(url2, frame_entry->url()); |
2304 } else { | 2309 } else { |
2305 // There are no subframe FrameNavigationEntries by default. | 2310 // There are no subframe FrameNavigationEntries by default. |
2306 EXPECT_EQ(0U, entry->root_node()->children.size()); | 2311 EXPECT_EQ(0U, entry->root_node()->children.size()); |
2307 } | 2312 } |
2308 | 2313 |
2309 // Add a second subframe and navigate. | 2314 // Add a second subframe and navigate. |
2315 std::string unique_name1("uniqueName1"); | |
2310 main_test_rfh()->OnCreateChildFrame( | 2316 main_test_rfh()->OnCreateChildFrame( |
2311 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2317 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2312 std::string(), "uniqueName1", blink::WebSandboxFlags::None, | 2318 std::string(), unique_name1, blink::WebSandboxFlags::None, |
2313 blink::WebFrameOwnerProperties()); | 2319 blink::WebFrameOwnerProperties()); |
2314 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( | 2320 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( |
2315 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); | 2321 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); |
2316 const GURL url3("http://foo/3"); | 2322 const GURL url3("http://foo/3"); |
2317 { | 2323 { |
2318 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2324 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2319 params.page_id = 1; | 2325 params.page_id = 1; |
2320 params.nav_entry_id = 0; | 2326 params.nav_entry_id = 0; |
2327 params.frame_unique_name = unique_name1; | |
2321 params.did_create_new_entry = false; | 2328 params.did_create_new_entry = false; |
2322 params.url = url3; | 2329 params.url = url3; |
2323 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2330 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2324 params.should_update_history = false; | 2331 params.should_update_history = false; |
2325 params.gesture = NavigationGestureUser; | 2332 params.gesture = NavigationGestureUser; |
2326 params.method = "GET"; | 2333 params.method = "GET"; |
2327 params.page_state = PageState::CreateFromURL(url3); | 2334 params.page_state = PageState::CreateFromURL(url3); |
2328 | 2335 |
2329 // Navigating should do nothing. | 2336 // Navigating should do nothing. |
2330 subframe2->SendRendererInitiatedNavigationRequest(url3, false); | 2337 subframe2->SendRendererInitiatedNavigationRequest(url3, false); |
(...skipping 16 matching lines...) Expand all Loading... | |
2347 ASSERT_EQ(2U, entry->root_node()->children.size()); | 2354 ASSERT_EQ(2U, entry->root_node()->children.size()); |
2348 FrameNavigationEntry* new_frame_entry = | 2355 FrameNavigationEntry* new_frame_entry = |
2349 entry->root_node()->children[1]->frame_entry.get(); | 2356 entry->root_node()->children[1]->frame_entry.get(); |
2350 EXPECT_EQ(url3, new_frame_entry->url()); | 2357 EXPECT_EQ(url3, new_frame_entry->url()); |
2351 } else { | 2358 } else { |
2352 // There are no subframe FrameNavigationEntries by default. | 2359 // There are no subframe FrameNavigationEntries by default. |
2353 EXPECT_EQ(0U, entry->root_node()->children.size()); | 2360 EXPECT_EQ(0U, entry->root_node()->children.size()); |
2354 } | 2361 } |
2355 | 2362 |
2356 // Add a nested subframe and navigate. | 2363 // Add a nested subframe and navigate. |
2364 std::string unique_name2("uniqueName2"); | |
2357 subframe->OnCreateChildFrame(process()->GetNextRoutingID(), | 2365 subframe->OnCreateChildFrame(process()->GetNextRoutingID(), |
2358 blink::WebTreeScopeType::Document, std::string(), | 2366 blink::WebTreeScopeType::Document, std::string(), |
2359 "uniqueName2", blink::WebSandboxFlags::None, | 2367 unique_name2, blink::WebSandboxFlags::None, |
2360 blink::WebFrameOwnerProperties()); | 2368 blink::WebFrameOwnerProperties()); |
2361 TestRenderFrameHost* subframe3 = | 2369 TestRenderFrameHost* subframe3 = |
2362 static_cast<TestRenderFrameHost*>(contents() | 2370 static_cast<TestRenderFrameHost*>(contents() |
2363 ->GetFrameTree() | 2371 ->GetFrameTree() |
2364 ->root() | 2372 ->root() |
2365 ->child_at(0) | 2373 ->child_at(0) |
2366 ->child_at(0) | 2374 ->child_at(0) |
2367 ->current_frame_host()); | 2375 ->current_frame_host()); |
2368 const GURL url4("http://foo/4"); | 2376 const GURL url4("http://foo/4"); |
2369 { | 2377 { |
2370 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2378 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2371 params.page_id = 1; | 2379 params.page_id = 1; |
2372 params.nav_entry_id = 0; | 2380 params.nav_entry_id = 0; |
2381 params.frame_unique_name = unique_name2; | |
2373 params.did_create_new_entry = false; | 2382 params.did_create_new_entry = false; |
2374 params.url = url4; | 2383 params.url = url4; |
2375 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2384 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2376 params.should_update_history = false; | 2385 params.should_update_history = false; |
2377 params.gesture = NavigationGestureUser; | 2386 params.gesture = NavigationGestureUser; |
2378 params.method = "GET"; | 2387 params.method = "GET"; |
2379 params.page_state = PageState::CreateFromURL(url4); | 2388 params.page_state = PageState::CreateFromURL(url4); |
2380 | 2389 |
2381 // Navigating should do nothing. | 2390 // Navigating should do nothing. |
2382 subframe3->SendRendererInitiatedNavigationRequest(url4, false); | 2391 subframe3->SendRendererInitiatedNavigationRequest(url4, false); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2414 RegisterForAllNavNotifications(¬ifications, &controller); | 2423 RegisterForAllNavNotifications(¬ifications, &controller); |
2415 | 2424 |
2416 // Main page. | 2425 // Main page. |
2417 const GURL url1("http://foo1"); | 2426 const GURL url1("http://foo1"); |
2418 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url1); | 2427 main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url1); |
2419 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2428 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2420 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); | 2429 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); |
2421 navigation_entry_committed_counter_ = 0; | 2430 navigation_entry_committed_counter_ = 0; |
2422 | 2431 |
2423 // Prereq: add a subframe with an initial auto-subframe navigation. | 2432 // Prereq: add a subframe with an initial auto-subframe navigation. |
2433 std::string unique_name("uniqueName0"); | |
2424 main_test_rfh()->OnCreateChildFrame( | 2434 main_test_rfh()->OnCreateChildFrame( |
2425 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2435 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2426 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 2436 std::string(), unique_name, blink::WebSandboxFlags::None, |
2427 blink::WebFrameOwnerProperties()); | 2437 blink::WebFrameOwnerProperties()); |
2428 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2438 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2429 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2439 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2430 const GURL subframe_url("http://foo1/subframe"); | 2440 const GURL subframe_url("http://foo1/subframe"); |
2431 | 2441 |
2432 // Compute the sequence number assigned by Blink. | 2442 // Compute the sequence number assigned by Blink. |
2433 int64_t item_sequence_number1 = base::Time::Now().ToDoubleT() * 1000000; | 2443 int64_t item_sequence_number1 = base::Time::Now().ToDoubleT() * 1000000; |
2434 | 2444 |
2435 { | 2445 { |
2436 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2446 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2437 params.page_id = 1; | 2447 params.page_id = 1; |
2438 params.nav_entry_id = 0; | 2448 params.nav_entry_id = 0; |
2449 params.frame_unique_name = unique_name; | |
2439 params.did_create_new_entry = false; | 2450 params.did_create_new_entry = false; |
2440 params.url = subframe_url; | 2451 params.url = subframe_url; |
2441 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2452 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2442 params.should_update_history = false; | 2453 params.should_update_history = false; |
2443 params.gesture = NavigationGestureUser; | 2454 params.gesture = NavigationGestureUser; |
2444 params.method = "GET"; | 2455 params.method = "GET"; |
2445 params.page_state = PageState::CreateFromURL(subframe_url); | 2456 params.page_state = PageState::CreateFromURL(subframe_url); |
2446 params.item_sequence_number = item_sequence_number1; | 2457 params.item_sequence_number = item_sequence_number1; |
2447 | 2458 |
2448 // Navigating should do nothing. | 2459 // Navigating should do nothing. |
2449 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); | 2460 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); |
2450 subframe->PrepareForCommit(); | 2461 subframe->PrepareForCommit(); |
2451 subframe->SendNavigateWithParams(¶ms); | 2462 subframe->SendNavigateWithParams(¶ms); |
2452 EXPECT_EQ(0U, notifications.size()); | 2463 EXPECT_EQ(0U, notifications.size()); |
2453 } | 2464 } |
2454 | 2465 |
2455 // First manual subframe navigation. | 2466 // First manual subframe navigation. |
2456 const GURL url2("http://foo2"); | 2467 const GURL url2("http://foo2"); |
2457 int64_t item_sequence_number2 = base::Time::Now().ToDoubleT() * 1000000; | 2468 int64_t item_sequence_number2 = base::Time::Now().ToDoubleT() * 1000000; |
2458 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2469 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2459 params.page_id = 2; | 2470 params.page_id = 2; |
2460 params.nav_entry_id = 0; | 2471 params.nav_entry_id = 0; |
2472 params.frame_unique_name = unique_name; | |
2461 params.did_create_new_entry = true; | 2473 params.did_create_new_entry = true; |
2462 params.url = url2; | 2474 params.url = url2; |
2463 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2475 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2464 params.should_update_history = false; | 2476 params.should_update_history = false; |
2465 params.gesture = NavigationGestureUser; | 2477 params.gesture = NavigationGestureUser; |
2466 params.method = "GET"; | 2478 params.method = "GET"; |
2467 params.page_state = PageState::CreateFromURL(url2); | 2479 params.page_state = PageState::CreateFromURL(url2); |
2468 params.item_sequence_number = item_sequence_number2; | 2480 params.item_sequence_number = item_sequence_number2; |
2469 | 2481 |
2470 // This should generate a new entry. | 2482 // This should generate a new entry. |
(...skipping 13 matching lines...) Expand all Loading... | |
2484 } else { | 2496 } else { |
2485 // There are no subframe FrameNavigationEntries by default. | 2497 // There are no subframe FrameNavigationEntries by default. |
2486 EXPECT_EQ(0U, entry2->root_node()->children.size()); | 2498 EXPECT_EQ(0U, entry2->root_node()->children.size()); |
2487 } | 2499 } |
2488 | 2500 |
2489 | 2501 |
2490 // Second manual subframe navigation should also make a new entry. | 2502 // Second manual subframe navigation should also make a new entry. |
2491 const GURL url3("http://foo3"); | 2503 const GURL url3("http://foo3"); |
2492 params.page_id = 3; | 2504 params.page_id = 3; |
2493 params.nav_entry_id = 0; | 2505 params.nav_entry_id = 0; |
2506 params.frame_unique_name = unique_name; | |
2494 params.did_create_new_entry = true; | 2507 params.did_create_new_entry = true; |
2495 params.url = url3; | 2508 params.url = url3; |
2496 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; | 2509 params.transition = ui::PAGE_TRANSITION_MANUAL_SUBFRAME; |
2497 params.page_state = PageState::CreateFromURL(url3); | 2510 params.page_state = PageState::CreateFromURL(url3); |
2498 params.item_sequence_number = base::Time::Now().ToDoubleT() * 1000000; | 2511 params.item_sequence_number = base::Time::Now().ToDoubleT() * 1000000; |
2499 subframe->SendRendererInitiatedNavigationRequest(url3, false); | 2512 subframe->SendRendererInitiatedNavigationRequest(url3, false); |
2500 subframe->PrepareForCommit(); | 2513 subframe->PrepareForCommit(); |
2501 subframe->SendNavigateWithParams(¶ms); | 2514 subframe->SendNavigateWithParams(¶ms); |
2502 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2515 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2503 navigation_entry_committed_counter_ = 0; | 2516 navigation_entry_committed_counter_ = 0; |
2504 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); | 2517 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); |
2505 EXPECT_EQ(3, controller.GetEntryCount()); | 2518 EXPECT_EQ(3, controller.GetEntryCount()); |
2506 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); | 2519 EXPECT_EQ(2, controller.GetCurrentEntryIndex()); |
2507 | 2520 |
2508 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2521 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2509 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2522 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2510 // The entry should have a subframe FrameNavigationEntry. | 2523 // The entry should have a subframe FrameNavigationEntry. |
2511 ASSERT_EQ(1U, entry3->root_node()->children.size()); | 2524 ASSERT_EQ(1U, entry3->root_node()->children.size()); |
2512 EXPECT_EQ(url3, entry3->root_node()->children[0]->frame_entry->url()); | 2525 EXPECT_EQ(url3, entry3->root_node()->children[0]->frame_entry->url()); |
2513 } else { | 2526 } else { |
2514 // There are no subframe FrameNavigationEntries by default. | 2527 // There are no subframe FrameNavigationEntries by default. |
2515 EXPECT_EQ(0U, entry3->root_node()->children.size()); | 2528 EXPECT_EQ(0U, entry3->root_node()->children.size()); |
2516 } | 2529 } |
2517 | 2530 |
2518 // Go back one. | 2531 // Go back one. |
2519 controller.GoBack(); | 2532 controller.GoBack(); |
2520 params.page_id = 2; | 2533 params.page_id = 2; |
2521 params.nav_entry_id = entry2->GetUniqueID(); | 2534 params.nav_entry_id = entry2->GetUniqueID(); |
2535 params.frame_unique_name = unique_name; | |
2522 params.did_create_new_entry = false; | 2536 params.did_create_new_entry = false; |
2523 params.url = url2; | 2537 params.url = url2; |
2524 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2538 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2525 params.page_state = PageState::CreateFromURL(url2); | 2539 params.page_state = PageState::CreateFromURL(url2); |
2526 params.item_sequence_number = item_sequence_number2; | 2540 params.item_sequence_number = item_sequence_number2; |
2527 subframe->PrepareForCommit(); | 2541 subframe->PrepareForCommit(); |
2528 subframe->SendNavigateWithParams(¶ms); | 2542 subframe->SendNavigateWithParams(¶ms); |
2529 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2543 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2530 navigation_entry_committed_counter_ = 0; | 2544 navigation_entry_committed_counter_ = 0; |
2531 EXPECT_EQ(entry2, controller.GetLastCommittedEntry()); | 2545 EXPECT_EQ(entry2, controller.GetLastCommittedEntry()); |
2532 EXPECT_EQ(3, controller.GetEntryCount()); | 2546 EXPECT_EQ(3, controller.GetEntryCount()); |
2533 EXPECT_EQ(1, controller.GetCurrentEntryIndex()); | 2547 EXPECT_EQ(1, controller.GetCurrentEntryIndex()); |
2534 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); | 2548 EXPECT_EQ(-1, controller.GetPendingEntryIndex()); |
2535 EXPECT_FALSE(controller.GetPendingEntry()); | 2549 EXPECT_FALSE(controller.GetPendingEntry()); |
2536 | 2550 |
2537 // Go back one more. | 2551 // Go back one more. |
2538 controller.GoBack(); | 2552 controller.GoBack(); |
2539 params.page_id = 1; | 2553 params.page_id = 1; |
2540 params.nav_entry_id = entry1->GetUniqueID(); | 2554 params.nav_entry_id = entry1->GetUniqueID(); |
2555 params.frame_unique_name = unique_name; | |
2541 params.did_create_new_entry = false; | 2556 params.did_create_new_entry = false; |
2542 params.url = subframe_url; | 2557 params.url = subframe_url; |
2543 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2558 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
2544 params.page_state = PageState::CreateFromURL(subframe_url); | 2559 params.page_state = PageState::CreateFromURL(subframe_url); |
2545 params.item_sequence_number = item_sequence_number1; | 2560 params.item_sequence_number = item_sequence_number1; |
2546 subframe->PrepareForCommit(); | 2561 subframe->PrepareForCommit(); |
2547 subframe->SendNavigateWithParams(¶ms); | 2562 subframe->SendNavigateWithParams(¶ms); |
2548 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2563 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2549 navigation_entry_committed_counter_ = 0; | 2564 navigation_entry_committed_counter_ = 0; |
2550 EXPECT_EQ(entry1, controller.GetLastCommittedEntry()); | 2565 EXPECT_EQ(entry1, controller.GetLastCommittedEntry()); |
(...skipping 1327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3878 NavigationControllerImpl& controller = controller_impl(); | 3893 NavigationControllerImpl& controller = controller_impl(); |
3879 // Navigate the main frame. | 3894 // Navigate the main frame. |
3880 const GURL url("http://www.google.com/"); | 3895 const GURL url("http://www.google.com/"); |
3881 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url); | 3896 main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, url); |
3882 | 3897 |
3883 // We should be at the first navigation entry. | 3898 // We should be at the first navigation entry. |
3884 EXPECT_EQ(controller.GetEntryCount(), 1); | 3899 EXPECT_EQ(controller.GetEntryCount(), 1); |
3885 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 3900 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); |
3886 | 3901 |
3887 // Add and navigate a subframe that would normally count as in-page. | 3902 // Add and navigate a subframe that would normally count as in-page. |
3903 std::string unique_name("uniqueName0"); | |
3888 main_test_rfh()->OnCreateChildFrame( | 3904 main_test_rfh()->OnCreateChildFrame( |
3889 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 3905 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
3890 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 3906 std::string(), unique_name, blink::WebSandboxFlags::None, |
3891 blink::WebFrameOwnerProperties()); | 3907 blink::WebFrameOwnerProperties()); |
3892 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 3908 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
3893 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 3909 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
3894 const GURL subframe_url("http://www.google.com/#"); | 3910 const GURL subframe_url("http://www.google.com/#"); |
3895 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 3911 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
3896 params.page_id = 0; | 3912 params.page_id = 0; |
3897 params.nav_entry_id = 0; | 3913 params.nav_entry_id = 0; |
3914 params.frame_unique_name = unique_name; | |
3898 params.did_create_new_entry = false; | 3915 params.did_create_new_entry = false; |
3899 params.url = subframe_url; | 3916 params.url = subframe_url; |
3900 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3917 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
3901 params.should_update_history = false; | 3918 params.should_update_history = false; |
3902 params.gesture = NavigationGestureAuto; | 3919 params.gesture = NavigationGestureAuto; |
3903 params.method = "GET"; | 3920 params.method = "GET"; |
3904 params.page_state = PageState::CreateFromURL(subframe_url); | 3921 params.page_state = PageState::CreateFromURL(subframe_url); |
3905 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); | 3922 subframe->SendRendererInitiatedNavigationRequest(subframe_url, false); |
3906 subframe->PrepareForCommit(); | 3923 subframe->PrepareForCommit(); |
3907 subframe->SendNavigateWithParams(¶ms); | 3924 subframe->SendNavigateWithParams(¶ms); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4046 const GURL url1("http://foo/"); | 4063 const GURL url1("http://foo/"); |
4047 NavigateAndCommit(url1); | 4064 NavigateAndCommit(url1); |
4048 | 4065 |
4049 // Now start a pending load to a totally different page, but don't commit it. | 4066 // Now start a pending load to a totally different page, but don't commit it. |
4050 const GURL url2("http://bar/"); | 4067 const GURL url2("http://bar/"); |
4051 controller.LoadURL( | 4068 controller.LoadURL( |
4052 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 4069 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
4053 | 4070 |
4054 // Send a subframe update from the first page, as if one had just | 4071 // Send a subframe update from the first page, as if one had just |
4055 // automatically loaded. Auto subframes don't increment the page ID. | 4072 // automatically loaded. Auto subframes don't increment the page ID. |
4073 std::string unique_name("uniqueName0"); | |
4056 main_test_rfh()->OnCreateChildFrame( | 4074 main_test_rfh()->OnCreateChildFrame( |
4057 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 4075 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
4058 std::string(), "uniqueName0", blink::WebSandboxFlags::None, | 4076 std::string(), unique_name, blink::WebSandboxFlags::None, |
4059 blink::WebFrameOwnerProperties()); | 4077 blink::WebFrameOwnerProperties()); |
4060 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 4078 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
4061 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 4079 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
4062 const GURL url1_sub("http://foo/subframe"); | 4080 const GURL url1_sub("http://foo/subframe"); |
4063 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 4081 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
4064 params.page_id = controller.GetLastCommittedEntry()->GetPageID(); | 4082 params.page_id = controller.GetLastCommittedEntry()->GetPageID(); |
4065 params.nav_entry_id = 0; | 4083 params.nav_entry_id = 0; |
4084 params.frame_unique_name = unique_name; | |
4066 params.did_create_new_entry = false; | 4085 params.did_create_new_entry = false; |
4067 params.url = url1_sub; | 4086 params.url = url1_sub; |
4068 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 4087 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
4069 params.should_update_history = false; | 4088 params.should_update_history = false; |
4070 params.gesture = NavigationGestureAuto; | 4089 params.gesture = NavigationGestureAuto; |
4071 params.method = "GET"; | 4090 params.method = "GET"; |
4072 params.page_state = PageState::CreateFromURL(url1_sub); | 4091 params.page_state = PageState::CreateFromURL(url1_sub); |
4073 | 4092 |
4074 // This should return false meaning that nothing was actually updated. | 4093 // This should return false meaning that nothing was actually updated. |
4075 subframe->SendRendererInitiatedNavigationRequest(url1_sub, false); | 4094 subframe->SendRendererInitiatedNavigationRequest(url1_sub, false); |
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5303 EXPECT_EQ(default_ssl_status.content_status, | 5322 EXPECT_EQ(default_ssl_status.content_status, |
5304 observer.details().ssl_status.content_status); | 5323 observer.details().ssl_status.content_status); |
5305 EXPECT_EQ( | 5324 EXPECT_EQ( |
5306 0u, | 5325 0u, |
5307 observer.details().ssl_status.signed_certificate_timestamp_ids.size()); | 5326 observer.details().ssl_status.signed_certificate_timestamp_ids.size()); |
5308 | 5327 |
5309 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count()); | 5328 EXPECT_EQ(1, main_test_rfh()->GetProcess()->bad_msg_count()); |
5310 } | 5329 } |
5311 | 5330 |
5312 } // namespace content | 5331 } // namespace content |
OLD | NEW |