Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1637)

Side by Side Diff: content/browser/frame_host/navigation_controller_impl_unittest.cc

Issue 1906213003: OOPIF: Fix subframe back/forward after recreating FTNs (try #2). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up and add tests Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
2169 NavigationControllerImpl& controller = controller_impl(); 2169 NavigationControllerImpl& controller = controller_impl();
2170 TestNotificationTracker notifications; 2170 TestNotificationTracker notifications;
2171 RegisterForAllNavNotifications(&notifications, &controller); 2171 RegisterForAllNavNotifications(&notifications, &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(&params); 2203 subframe->SendNavigateWithParams(&params);
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
2253 NavigationControllerImpl& controller = controller_impl(); 2256 NavigationControllerImpl& controller = controller_impl();
2254 TestNotificationTracker notifications; 2257 TestNotificationTracker notifications;
2255 RegisterForAllNavNotifications(&notifications, &controller); 2258 RegisterForAllNavNotifications(&notifications, &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
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
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
2414 RegisterForAllNavNotifications(&notifications, &controller); 2423 RegisterForAllNavNotifications(&notifications, &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(&params); 2462 subframe->SendNavigateWithParams(&params);
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
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(&params); 2514 subframe->SendNavigateWithParams(&params);
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(&params); 2542 subframe->SendNavigateWithParams(&params);
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(&params); 2562 subframe->SendNavigateWithParams(&params);
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
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(&params); 3924 subframe->SendNavigateWithParams(&params);
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698